using System.ComponentModel.DataAnnotations; namespace Data.SeaHavenIndustries { public class Employee { public int Id { get; set; } // General [Required] public string FirstName { get; set; } = null!; public string? MiddleName { get; set; } [Required] public string LastName { get; set; } = null!; public int? DepartmentId { get; set; } public string? TimeZone { get; set; } public int? Gender { get; set; } public DateTime? DateOfBirth { get; set; } public int? JobTitleId { get; set; } public string? EmployeeNumber { get; set; } public DateTime? HireDate { get; set; } public int? RegionId { get; set; } public bool? CanChangeProviderNumber { get; set; } public string? About { get; set; } // Login & Role public int? PermissionGroupId { get; set; } public string? UserName { get; set; } public string? ConfirmUserName { get; set; } // Additional public string? SMSAddress { get; set; } public string? Website { get; set; } // Social public string? FacebookUrl { get; set; } public string? LinkedInUrl { get; set; } public string? TwitterUrl { get; set; } // Status public string? Status { get; set; } public DateTime? LastLogin { get; set; } // Audit public bool? IsDeleted { get; set; } public string? CreatedBy { get; set; } public DateTime? CreatedDate { get; set; } public DateTime? LastModificationTime { get; set; } public int? LastModifierUserId { get; set; } // Navigation public Department? Department { get; set; } public JobTitle? JobTitle { get; set; } public Region? Region { get; set; } public EmployeeAddress? Address { get; set; } public ICollection Phones { get; set; } = new List(); public ICollection Emails { get; set; } = new List(); } public class EmployeeAddress { public int Id { get; set; } public int EmployeeId { get; set; } public string? Street { get; set; } public string? StreetLineTwo { get; set; } public string? City { get; set; } public string? Zip { get; set; } public string? CountryCode { get; set; } public string? StateCode { get; set; } public int? CountyId { get; set; } public Employee Employee { get; set; } = null!; } public class EmployeePhone { public int Id { get; set; } public int EmployeeId { get; set; } public int? PhoneTypeId { get; set; } public string? Number { get; set; } public string? Extension { get; set; } public bool? IsPrimary { get; set; } public Employee Employee { get; set; } = null!; } public class EmployeeEmail { public int Id { get; set; } public int EmployeeId { get; set; } public Employee? Employee { get; set; } public int? EmailTypeId { get; set; } [MaxLength(256)] public string? Address { get; set; } public bool? IsPrimary { get; set; } } public class Department { public int Id { get; set; } [MaxLength(200)] public string Name { get; set; } = null!; public ICollection? Employees { get; set; } } public class JobTitle { public int Id { get; set; } [MaxLength(200)] public string Name { get; set; } = null!; public ICollection? Employees { get; set; } } public class Region { public int Id { get; set; } [MaxLength(200)] public string Name { get; set; } = null!; public ICollection? Employees { get; set; } } }