using System.ComponentModel.DataAnnotations; using Microsoft.EntityFrameworkCore; using BMA.EHR.Domain.Models.Base; using BMA.EHR.Domain.Models.Documents; using BMA.EHR.Domain.Models.MetaData; using BMA.EHR.Domain.Models.Organizations; using BMA.EHR.Domain.Models.Leave.TimeAttendants; namespace BMA.EHR.Domain.Models.HR { public class Profile : EntityBase { // [Key] // public Guid Id { get; set; } [MaxLength(13), Comment("รหัสบัตรประชาชน")] public string? CitizenId { get; set; } [MaxLength(50)] public string? ProfileType { get; set; } [MaxLength(20), Comment("ประเภทการจ้าง")] public string? EmployeeType { get; set; } [MaxLength(20), Comment("ประเภทลูกจ้าง")] public string? EmployeeClass { get; set; } [Comment("Id คำนำหน้า")] public Prefix? Prefix { get; set; } [Required, MaxLength(100), Comment("ชื่อ")] public string? FirstName { get; set; } [Required, MaxLength(100), Comment("นามสกุล")] public string? LastName { get; set; } [Comment("Id คำนำหน้า(เดิม)")] public Guid? PrefixOldId { get; set; } [Required, MaxLength(100), Comment("ชื่อ(เดิม)")] public string? FirstNameOld { get; set; } [Required, MaxLength(100), Comment("นามสกุล(เดิม)")] public string? LastNameOld { get; set; } [MaxLength(100)] public string AvatarRef { get; set; } [Comment("Id เพศ")] public Gender? Gender { get; set; } [MaxLength(100), Comment("สัญชาติ")] public string? Nationality { get; set; } [MaxLength(100), Comment("เชื้อชาติ")] public string? Race { get; set; } [Comment("Id ศาสนา")] public Guid? ReligionId { get; set; } [Required, Comment("วันเกิด")] public DateTime BirthDate { get; set; } [Comment("Id กลุ่มเลือด")] public Guid? BloodGroupId { get; set; } [Comment("Id สถานะภาพ")] public Guid? RelationshipId { get; set; } [MaxLength(50), Comment("เบอร์โทร")] public string? TelephoneNumber { get; set; } [Comment("คู่สมรส")] public bool? Couple { get; set; } [Comment("Id คำนำหน้าคู่สมรส")] public Guid? CouplePrefixId { get; set; } [MaxLength(100), Comment("ชื่อคู่สมรส")] public string? CoupleFirstName { get; set; } [MaxLength(100), Comment("นามสกุลคู่สมรส")] public string? CoupleLastName { get; set; } [MaxLength(100), Comment("นามสกุลคู่สมรส(เดิม)")] public string? CoupleLastNameOld { get; set; } [MaxLength(100), Comment("อาชีพคู่สมรส")] public string? CoupleCareer { get; set; } [MaxLength(20), Comment("เลขที่บัตรประชาชนคู่สมรส")] public string? CoupleCitizenId { get; set; } [Comment("มีชีวิตคู่สมรส")] public bool CoupleLive { get; set; } = true; [Comment("Id คำนำหน้าบิดา")] public Guid? FatherPrefixId { get; set; } [MaxLength(100), Comment("ชื่อบิดา")] public string? FatherFirstName { get; set; } [MaxLength(100), Comment("นามสกุลบิดา")] public string? FatherLastName { get; set; } [MaxLength(100), Comment("อาชีพบิดา")] public string? FatherCareer { get; set; } [MaxLength(20), Comment("เลขที่บัตรประชาชนบิดา")] public string? FatherCitizenId { get; set; } [Comment("มีชีวิตบิดา")] public bool FatherLive { get; set; } = true; [Comment("Id คำนำหน้ามารดา")] public Guid? MotherPrefixId { get; set; } [MaxLength(100), Comment("ชื่อมารดา")] public string? MotherFirstName { get; set; } [MaxLength(100), Comment("นามสกุลมารดา")] public string? MotherLastName { get; set; } [MaxLength(100), Comment("อาชีพมารดา")] public string? MotherCareer { get; set; } [MaxLength(20), Comment("เลขที่บัตรประชาชนมารดา")] public string? MotherCitizenId { get; set; } [Comment("มีชีวิตมารดา")] public bool MotherLive { get; set; } = true; [MaxLength(200), Comment("ที่อยู่ปัจจุบัน")] public string? CurrentAddress { get; set; } [Comment("Id แขวงปัจจุบัน")] public Guid? CurrentSubDistrictId { get; set; } [Comment("Id เขตปัจจุบัน")] public Guid? CurrentDistrictId { get; set; } [Comment("Id จังหวัดปัจจุบัน")] public Guid? CurrentProvinceId { get; set; } [MaxLength(5), Comment("รหัสไปรษณีย์ปัจจุบัน")] public string? CurrentZipCode { get; set; } [Comment("ที่อยู่ปัจจุบันตรงกับที่อยู่ตามทะเบียนบ้านหรือไม่")] public bool? RegistrationSame { get; set; } = false; [MaxLength(200), Comment("Id แขวงตามทะเบียนบ้าน")] public string? RegistrationAddress { get; set; } [Comment("แขวงตามทะเบียนบ้าน")] public Guid? RegistrationSubDistrictId { get; set; } [Comment("Id เขตตามทะเบียนบ้าน")] public Guid? RegistrationDistrictId { get; set; } [Comment("Id จังหวัดตามทะเบียนบ้าน")] public Guid? RegistrationProvinceId { get; set; } [MaxLength(5), Comment("รหัสไปรษณีย์ตามทะเบียนบ้าน")] public string? RegistrationZipCode { get; set; } public DateTime? DateAppoint { get; set; } public DateTime? DateStart { get; set; } public DateTime? DateRetire { get; set; } public string? ReasonSameDate { get; set; } // public Guid? AffiliationId { get; set; } // public Guid? PositionId { get; set; } // public Guid? WorkId { get; set; } // public Guid? TypeId { get; set; } // public Guid? LevelId { get; set; } // public Guid? NumberId { get; set; } // public Guid? BusinessId { get; set; } [Comment("Id สังกัด")] public Guid? OcId { get; set; } [Comment("สังกัด")] public string? Oc { get; set; } public Guid? OrganizationShortNameId { get; set; } public string? OrganizationShortName { get; set; } public string? GovernmentCode { get; set; } public Guid? OrganizationOrganizationId { get; set; } public string? OrganizationOrganization { get; set; } [Comment("Id ตำแหน่ง")] public PositionPath? Position { get; set; } // [Comment("ตำแหน่ง")] // public string? Position { get; set; } [Comment("Id เลขที่ตำแหน่ง")] public PositionNumberEntity? PosNo { get; set; } // [Comment("เลขที่ตำแหน่ง")] // public string? PosNo { get; set; } [Comment("เลขที่ตำแหน่งลูกจ้าง")] public string? PosNoEmployee { get; set; } [Comment("Id สายงาน")] public Guid? PositionLineId { get; set; } [Comment("สายงาน")] public string? PositionLine { get; set; } [Comment("Id ด้าน/สาขา")] public Guid? PositionPathSideId { get; set; } [Comment("ด้าน/สาขา")] public string? PositionPathSide { get; set; } // [Comment("Id ประเภทตำแหน่ง")] // public Guid? PositionTypeId { get; set; } [Comment("ประเภทตำแหน่ง")] public PositionType? PositionType { get; set; } // [Comment(" Id ระดับ")] // public Guid? PositionLevelId { get; set; } [Comment("ระดับ")] public PositionLevel? PositionLevel { get; set; } [Comment("Id ตำแหน่งทางการบริหาร")] public Guid? PositionExecutiveId { get; set; } [Comment("ตำแหน่งทางการบริหาร")] public string? PositionExecutive { get; set; } [Comment("Id ด้านทางการบริหาร")] public Guid? PositionExecutiveSideId { get; set; } [Comment("ด้านทางการบริหาร")] public string? PositionExecutiveSide { get; set; } [Comment("Id ตำแหน่ง")] public PositionEmployeePosition? PositionEmployeePosition { get; set; } // [Comment("ตำแหน่ง")] // public string? PositionEmployeePosition { get; set; } [Comment("Id ด้านของตำแหน่ง")] public PositionEmployeePositionSide? PositionEmployeePositionSide { get; set; } // [Comment("ด้านของตำแหน่ง")] // public string? PositionEmployeePositionSide { get; set; } [Comment(" Id ระดับชั้นงาน")] public PositionEmployeeLevel? PositionEmployeeLevel { get; set; } // [Comment("ระดับชั้นงาน")] // public string? PositionEmployeeLevel { get; set; } [Comment("Id กลุ่มงาน")] public PositionEmployeeGroup? PositionEmployeeGroup { get; set; } // [Comment("กลุ่มงาน")] // public string? PositionEmployeeGroup { get; set; } [Comment("Id สายงาน")] public PositionEmployeeLine? PositionEmployeeLine { get; set; } // [Comment("สายงาน")] // public string? PositionEmployeeLine { get; set; } [MaxLength(100), Comment("สถานภาพทางกาย")] public string Physical { get; set; } [MaxLength(100)] public string Ability { get; set; } public bool IsActive { get; set; } = true; public bool IsLeave { get; set; } = false; public DateTime? LeaveDate { get; set; } [MaxLength(1000)] public string? LeaveReason { get; set; } public string? LeaveDetail { get; set; } public string? LeaveNumberOrder { get; set; } public DateTime? LeaveDateOrder { get; set; } public DateTime? CreatedDate { get; set; } public DateTime? ModifiedDate { get; set; } [MaxLength(250)] public string CreatedUser { get; set; } = string.Empty; [MaxLength(5)] public string EntryStatus { get; set; } = "st1"; // สถานะการตรวจสอบ st1 = create; st2 = pending public bool IsTransfer { get; set; } = false; public DateTime? TransferDate { get; set; } public int GovAgeAbsent { get; set; } = 0; public int GovAgePlus { get; set; } = 0; // public OrganizationEntity? Organization { get; set; } // public PositionNumberEntity PositionNumber { get; set; } // public Position Position { get; set; } // public PositionExecutive PositionExecutive { get; set; } public bool IsVerified { get; set; } = false; [MaxLength(100)] public string VerifiedUser { get; set; } = string.Empty; public DateTime? VerifiedDate { get; set; } public Document? Avatar { get; set; } public bool IsProbation { get; set; } = true; // public PositionType PositionType { get; set; } // ประเภทตำแหน่ง // public PositionLevel PositionLevel { get; set; } // ระดับ // public OrganizationPositionEntity? OrganizationPosition { get; set; } public LimitLeave? LimitLeave { get; set; } public Guid? KeycloakId { get; set; } [Comment("สังกัด")] public string? EmployeeOc { get; set; } [Comment("ค่าจ้าง")] public double? EmployeeWage { get; set; } [Comment("ประเภทบุคคล")] public string? EmployeeTypeIndividual { get; set; } [Comment("เงินเพิ่มการครองชีพชั่วคราว")] public double? EmployeeMoneyIncrease { get; set; } [Comment("เงินช่วยเหลือค่าครองชีพชั่วคราว")] public double? EmployeeMoneyAllowance { get; set; } [Comment("เงินสมทบประกันสังคม(ลูกจ้าง)")] public double? EmployeeMoneyEmployee { get; set; } [Comment("เงินสมทบประกันสังคม(นายจ้าง)")] public double? EmployeeMoneyEmployer { get; set; } public virtual List Educations { get; set; } = new List(); public virtual List Honors { get; set; } = new List(); public virtual List Assessments { get; set; } = new List(); public virtual List Disciplines { get; set; } = new List(); public virtual List Certificates { get; set; } = new List(); public virtual List Trainings { get; set; } = new List(); public virtual List Insignias { get; set; } = new List(); public virtual List Salaries { get; set; } = new List(); public virtual List ProfileHistory { get; set; } = new List(); public virtual List CoupleHistory { get; set; } = new List(); public virtual List FatherHistory { get; set; } = new List(); public virtual List MotherHistory { get; set; } = new List(); public virtual List FamilyHistory { get; set; } = new List(); public virtual List GovernmentHistory { get; set; } = new List(); public virtual List Leaves { get; set; } = new List(); public virtual List CurrentAddressHistory { get; set; } = new List(); public virtual List RegistrationAddressHistory { get; set; } = new List(); public virtual List AddressHistory { get; set; } = new List(); public virtual List Others { get; set; } = new List(); public virtual List Abilitys { get; set; } = new List(); public virtual List Dutys { get; set; } = new List(); public virtual List Nopaids { get; set; } = new List(); public virtual List AvatarHistory { get; set; } = new List(); public virtual List Papers { get; set; } = new List(); public virtual List Childrens { get; set; } = new List(); public virtual List ChangeNames { get; set; } = new List(); public virtual List Employments { get; set; } = new List(); // รอบการลงเวลา [Comment("รอบการลงเวลาเข้างาน")] public Guid? DutyTimeId { get; set; } [Comment("วันที่รอบการลงเวลามีผล")] public DateTime? DutyTimeEffectiveDate { get; set; } public virtual List LeaveSummary { get; set; } = new(); public bool IsSendVerified { get; set; } = false; } }