using System.ComponentModel.DataAnnotations.Schema;

namespace PSTW_CentralSystem.Models
{
    public class MarineTarball
    {
        public int Id { get; set; } // Maps to 'id'
        public required string ReportID { get; set; } // Maps to 'reportID'
        public required string FirstSampler { get; set; } // Maps to 'firstSampler'
        public required string SecondSampler { get; set; } // Maps to 'secondSampler'
        public DateTime DateSample { get; set; } // Maps to 'dateSample'
        public TimeSpan TimeSample { get; set; } // Maps to 'timeSample'
        public required string StationID { get; set; } // Maps to 'stationID'
        public required string ClassifyID { get; set; } // Maps to 'classifyID'
        public required string Latitude { get; set; } // Maps to 'latitude'
        public required string Longitude { get; set; } // Maps to 'longitude'
        public double GetLatitude { get; set; } // Maps to 'getLatitude'
        public double GetLongitude { get; set; } // Maps to 'getLongitude'
        public DateTime Timestamp { get; set; } // Maps to 'timestamp'
        public string? OptionalName1 { get; set; }
        public string? OptionalName2 { get; set; }
        public string? OptionalName3 { get; set; }
        public string? OptionalName4 { get; set; }

        public required string PhotoPath1 { get; set; } // Left Side Coastal View
        public required string PhotoPath2 { get; set; } // Right Side Coastal View
        public required string PhotoPath3 { get; set; } // Vertical Lines
        public required string PhotoPath4 { get; set; } // Horizontal Lines
        public string? PhotoPath5 { get; set; } // optional
        public string? PhotoPath6 { get; set; } // optional
        public string? PhotoPath7 { get; set; } // optional
        public string? PhotoPath8 { get; set; } // optional

        [ForeignKey("StationID")]
        public required MarineStation MarineStation { get; set; }
        [ForeignKey("FirstSampler")]
        public required User User { get; set; }
    }

    public class MarineStation
    {
        public int Id { get; set; } // Maps to 'id'
        public required string StationID { get; set; } // Maps to 'stationID'
        public required string StateID { get; set; } // Maps to 'stateID'
        public required string CategoryID { get; set; } // Maps to 'categoryID'
        public required string LocationName { get; set; } // Maps to 'locationName'
        public decimal Longitude { get; set; } // Maps to 'longitude'
        public decimal Latitude { get; set; } // Maps to 'latitude'

        [ForeignKey("StateID")]
        public required State State { get; set; }

    }

    public class State
    {
        public int Id { get; set; } // Maps to 'id'
        public required string StateID { get; set; } // Maps to 'stateID'
        public required string StateName { get; set; } // Maps to 'stateName'
    }

    public class User
    {
        public int Id { get; set; } // Maps to 'id'
        public required string UserID { get; set; } // Maps to 'userID'
        public required string FullName { get; set; } // Maps to 'fullname'
        public required string Username { get; set; } // Maps to 'username'
        public required string Password { get; set; } // Maps to 'pwd'
        public required string LevelID { get; set; } // Maps to 'levelID'
        public required string DeptID { get; set; } // Maps to 'deptID'

        [ForeignKey("LevelID")]
        public required Level Level { get; set; } // Maps to 'levelID'
    }

    public class Level
    {
        public int Id { get; set; } // Maps to 'id'
        public required string LevelID { get; set; } // Maps to 'levelID'
        public required string LevelName { get; set; } // Maps to 'levelName'
    }
}

