using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using BMA.EHR.Recurit.Exam.Service.Models;
using BMA.EHR.Recurit.Exam.Service.Models.Documents;

namespace BMA.EHR.Domain.Models.Placement
{
    public class PlacementProfile : EntityBaseNoIsActive
    {

        [Comment("Id บรรจุ")]
        public Placement? Placement { get; set; }
        [Comment("Id คำนำหน้า")]
        public string? Prefix { get; set; }
        [Comment("ชื่อ")]
        public string? Firstname { get; set; }
        [Comment("นามสกุล")]
        public string? Lastname { get; set; }
        [Comment("Id เพศ")]
        public string? Gender { get; set; }


        [Comment("ตำแหน่งที่สอบได้")]
        public string? positionName { get; set; }
        [Comment("วันที่บรรจุ")]
        public DateTime? RecruitDate { get; set; }
        [Comment("วันที่รายงานตัว")]
        public DateTime? ReportingDate { get; set; }
        [Comment("เงินเดือน")]
        public double? Amount { get; set; }
        [Comment("เงินประจำตำแหน่ง")]
        public double? PositionSalaryAmount { get; set; }
        [Comment("เงินค่าตอบแทนรายเดือน")]
        public double? MouthSalaryAmount { get; set; }
        [Comment("ตำแหน่ง (รายละเอียด)")]
        public string? SalaryClass { get; set; }
        [Comment("เอกสารอ้างอิง")]
        public string? SalaryRef { get; set; }
        [Comment("ข้าราชการฯ กทม.")]
        public bool? IsOfficer { get; set; }
        [Comment("สถานะการบรรจุ")]
        public string PlacementStatus { get; set; } = "un-contain";
        [Comment("เหตุผลสละสิทธิ์")]
        public string? RejectReason { get; set; }
        [Comment("ผ่อนผัน")]
        public bool IsRelief { get; set; } = false;
        [Comment("เหตุผลผ่อนผัน")]
        public string? ReliefReason { get; set; }
        [Comment("การคัดกรองคุณสมบัติ")]
        public string? IsProperty { get; set; }


        [MaxLength(40), Comment("สัญชาติ")]
        public string? Nationality { get; set; }
        [MaxLength(40), Comment("เชื้อชาติ")]
        public string? Race { get; set; }

        [MaxLength(40), Comment("วันเกิด")]
        public DateTime? DateOfBirth { get; set; }

        [Comment("Id สถานภาพ")]
        public string? Relationship { get; set; }
        [Comment("Id ศาสนา")]
        public string? Religion { get; set; }

        [MaxLength(200), Comment("อีเมล")]
        public string? Email { get; set; }

        [MaxLength(20), Comment("เลขประจำตัวประชาชน")]
        public string? CitizenId { get; set; }

        [Comment("Id เขตที่ออกบัตรประชาชน")]
        public Guid? CitizenDistrictId { get; set; }

        [Comment("Id จังหวัดที่ออกบัตรประชาชน")]
        public Guid? CitizenProvinceId { get; set; }

        [Comment("วันที่ออกบัตร")]
        public DateTime? CitizenDate { get; set; }

        [MaxLength(200), Comment("โทรศัพท์")]
        public string? Telephone { get; set; }

        [MaxLength(200), Comment("โทรศัพท์มือถือ")]
        public string? MobilePhone { get; set; }

        [Comment("ความสามารถพิเศษ")]
        public string? Knowledge { get; set; }

        [Comment("ที่อยู่ตามทะเบียนบ้าน")]
        public string? RegistAddress { get; set; }

        [Comment("Id จังหวัดที่อยู่ตามทะเบียนบ้าน")]
        public Guid? RegistProvinceId { get; set; }

        [Comment("Id อำเภอที่อยู่ตามทะเบียนบ้าน")]
        public Guid? RegistDistrictId { get; set; }

        [Comment("Id ตำบลที่อยู่ตามทะเบียนบ้าน")]
        public Guid? RegistSubDistrictId { get; set; }

        [MaxLength(10), Comment("รหัสไปรษณีย์ที่อยู่ตามทะเบียนบ้าน")]
        public string? RegistZipCode { get; set; }

        [Comment("ที่อยู่ปัจจุบันเหมือนที่อยู่ตามทะเบียนบ้าน")]
        public bool? RegistSame { get; set; }

        [Comment("ที่อยู่ปัจจุบัน")]
        public string? CurrentAddress { get; set; }

        [Comment("Id จังหวัดที่อยู่ปัจจุบัน")]
        public Guid? CurrentProvinceId { get; set; }

        [Comment("Id อำเภอที่อยู่ปัจจุบัน")]
        public Guid? CurrentDistrictId { get; set; }

        [Comment("Id ตำบลที่อยู่ปัจจุบัน")]
        public Guid? CurrentSubDistrictId { get; set; }

        [MaxLength(10), Comment("รหัสไปรษณีย์ที่อยู่ปัจจุบัน")]
        public string? CurrentZipCode { get; set; }

        [Comment("คู่สมรส")]
        public bool? Marry { get; set; }

        [Comment("Id คำนำหน้าชื่อคู่สมรส")]
        public string? MarryPrefix { get; set; }

        [MaxLength(100), Comment("ชื่อจริงคู่สมรส")]
        public string? MarryFirstName { get; set; }

        [MaxLength(100), Comment("นามสกุลคู่สมรส")]
        public string? MarryLastName { get; set; }

        [MaxLength(200), Comment("อาชีพคู่สมรส")]
        public string? MarryOccupation { get; set; }

        [MaxLength(100), Comment("สัญชาติคู่สมรส")]
        public string? MarryNationality { get; set; }

        [Comment("Id คำนำหน้าชื่อบิดา")]
        public string? FatherPrefix { get; set; }

        [MaxLength(100), Comment("ชื่อจริงบิดา")]
        public string? FatherFirstName { get; set; }

        [MaxLength(100), Comment("นามสกุลบิดา")]
        public string? FatherLastName { get; set; }

        [MaxLength(200), Comment("อาชีพบิดา")]
        public string? FatherOccupation { get; set; }

        [MaxLength(100), Comment("สัญชาติบิดา")]
        public string? FatherNationality { get; set; }

        [Comment("Id คำนำหน้าชื่อมารดา")]
        public string? MotherPrefix { get; set; }

        [MaxLength(100), Comment("ชื่อจริงมารดา")]
        public string? MotherFirstName { get; set; }

        [MaxLength(100), Comment("นามสกุลมารดา")]
        public string? MotherLastName { get; set; }

        [MaxLength(200), Comment("อาชีพมารดา")]
        public string? MotherOccupation { get; set; }

        [MaxLength(100), Comment("สัญชาติมารดา")]
        public string? MotherNationality { get; set; }

        [Comment("ตำแหน่งปัจจุบัน ชื่อตำแหน่ง")]
        public string? OccupationOrg { get; set; }
        [Comment("ตำแหน่งปัจจุบัน กอง")]
        public string? OccupationPile { get; set; }
        [Comment("ตำแหน่งปัจจุบัน กลุ่ม/ฝ่าย")]
        public string? OccupationGroup { get; set; }
        [Comment("ตำแหน่งปัจจุบัน เงินเดือน")]
        public double? OccupationSalary { get; set; }
        [Comment("ตำแหน่งปัจจุบัน สังกัด")]
        public string? OccupationPosition { get; set; }
        [Comment("ตำแหน่งปัจจุบัน ประเภทราชการ")]
        public string? OccupationPositionType { get; set; }

        [MaxLength(20), Comment("ตำแหน่งปัจจุบัน เบอร์โทรที่ทำงาน")]
        public string? OccupationTelephone { get; set; }

        [Comment("ตำแหน่งสอบ")]
        public string? PositionCandidate { get; set; }

        [Comment("ประเภทตำแหน่ง")]
        public string? PositionType { get; set; }

        [Comment("ระดับ")]
        public string? PositionLevel { get; set; }

        [Comment("คะแนนเต็มภาค ก")]
        public double? PointTotalA { get; set; }

        [Comment("คะแนนภาค ก")]
        public double? PointA { get; set; }
        [Comment("คะแนนเต็มภาค ข")]
        public double? PointTotalB { get; set; }

        [Comment("คะแนนภาค ข")]
        public double? PointB { get; set; }

        [Comment("คะแนนเต็มภาค ค")]
        public double? PointTotalC { get; set; }

        [Comment("คะแนนภาค ค")]
        public double? PointC { get; set; }

        [Comment("ลำดับที่สอบได้")]
        public int? ExamNumber { get; set; }

        [Comment("จำนวนครั้งที่สมัครสอบ")]
        public int? ExamRound { get; set; }

        [Comment("ผลสมัครสอบ")]
        public string? Pass { get; set; }

        [Comment("ข้อมูลตำแหน่ง Draft")]
        public bool? Draft { get; set; }

        [Comment("Id รูปโปรไฟล์")]
        public virtual Document? ProfileImg { get; set; }

        [Comment("หมายเหตุแนวตั้ง")]
        public string? RemarkVertical { get; set; }

        [Comment("หมายเหตุแนวนอน")]
        public string? RemarkHorizontal { get; set; }
        [Comment("profileId")]
        public string? profileId { get; set; }


        [Comment("ข้อมูลเก่า")]
        public bool? IsOld { get; set; }
        [Comment("เงินเดือน")]
        public double? AmountOld { get; set; }
        [Comment("ระดับโครงสร้าง")]
        public string? nodeOld { get; set; }
        [Comment("id โครงสร้าง")]
        public string? nodeIdOld { get; set; }
        [Comment("id อัตรากำลัง")]
        public string? posmasterIdOld { get; set; }
        [Comment("ชื่อหน่วยงาน root")]
        public string? rootOld { get; set; }
        [Comment("id หน่วยงาน root")]
        public string? rootIdOld { get; set; }
        [Comment("ชื่อย่อหน่วยงาน root")]
        public string? rootShortNameOld { get; set; }
        [Comment("ชื่อหน่วยงาน child1")]
        public string? child1Old { get; set; }
        [Comment("id หน่วยงาน child1")]
        public string? child1IdOld { get; set; }
        [Comment("ชื่อย่อหน่วยงาน child1")]
        public string? child1ShortNameOld { get; set; }
        [Comment("ชื่อหน่วยงาน child2")]
        public string? child2Old { get; set; }
        [Comment("id หน่วยงาน child2")]
        public string? child2IdOld { get; set; }
        [Comment("ชื่อย่อหน่วยงาน child2")]
        public string? child2ShortNameOld { get; set; }
        [Comment("ชื่อหน่วยงาน child3")]
        public string? child3Old { get; set; }
        [Comment("id หน่วยงาน child3")]
        public string? child3IdOld { get; set; }
        [Comment("ชื่อย่อหน่วยงาน child3")]
        public string? child3ShortNameOld { get; set; }
        [Comment("ชื่อหน่วยงาน child4")]
        public string? child4Old { get; set; }
        [Comment("id หน่วยงาน child4")]
        public string? child4IdOld { get; set; }
        [Comment("ชื่อย่อหน่วยงาน child4")]
        public string? child4ShortNameOld { get; set; }
        [Comment("id revision")]
        public string? orgRevisionIdOld { get; set; }
        [Comment("id ตำแหน่ง")]
        public string? positionIdOld { get; set; }
        [Comment("เลขที่ตำแหน่ง")]
        public int? posMasterNoOld { get; set; }
        [Comment("ชื่อตำแหน่งในสายงาน")]
        public string? positionNameOld { get; set; }
        [Comment("สายงาน")]
        public string? positionFieldOld { get; set; }
        [Comment("id ประเภทตำแหน่ง")]
        public string? posTypeIdOld { get; set; }
        [Comment("ชื่อประเภทตำแหน่ง")]
        public string? posTypeNameOld { get; set; }
        [Comment("id ระดับตำแหน่ง")]
        public string? posLevelIdOld { get; set; }
        [Comment("ชื่อระดับตำแหน่ง")]
        public string? posLevelNameOld { get; set; }
        public virtual List<PlacementCertificate> PlacementCertificates { get; set; } = new List<PlacementCertificate>();
        public virtual List<PlacementEducation> PlacementEducations { get; set; } = new List<PlacementEducation>();
    }
}
