using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using BMA.EHR.Domain.Models.Base; using BMA.EHR.Domain.Models.Organizations; using Microsoft.EntityFrameworkCore; namespace BMA.EHR.Domain.Models.Discipline { public class DisciplineDisciplinary : EntityBase { [Required, Comment("สถานะเรื่องร้องเรียน มีดังนี้ ใหม่ (NEW), ยุติเรื่อง (STOP), มีมูลส่งไปสืบสวนแล้ว (SEND_INVESTIGATE)")] public string Status { get; set; } = string.Empty; [Required, Comment("ผู้ถูกร้องเรียน (PERSON คือ บุคคล, ORGANIZATION คือ หน่วยงาน, BANGKOK คือ กรุงเทพมหานคร)")] public string RespondentType { get; set; } = string.Empty; [Required, Comment("เรื่องที่ร้องเรียน"), Column(TypeName = "text")] public string Title { get; set; } = string.Empty; [Comment("รายละเอียดของเรื่องร้องเรียน"), Column(TypeName = "text")] public string? Description { get; set; } = string.Empty; [Comment("วันที่รับเรื่อง เป็นวันที่ถือเป็นจุดเริ่มต้นของวินัยนั้น ๆ")] public DateTime? DateReceived { get; set; } [Comment("ระดับการพิจารณา 'ยังไม่ระบุ' (NORMAL คือ ปกติ, URGENT คือ ด่วน, VERY_URGENT คือ ด่วนมาก)")] public string? LevelConsideration { get; set; } = string.Empty; [Comment("วันที่กำหนดพิจารณา")] public DateTime? DateConsideration { get; set; } [Comment("ลักษณะความผิดครั้งแรกจะเป็น 'ยังไม่ระบุ' (NOT_SPECIFIED คือ ยังไม่ระบุ, NOT_DEADLY คือ ไม่ร้ายแรง, DEADLY คือ ร้ายแรง)")] public string? OffenseDetails { get; set; } = string.Empty; [Comment("วันแจ้งเตือนล่วงหน้า")] public DateTime? DateNotification { get; set; } [Comment("รับเรื่องร้องเรียนจาก ระบุว่ารับเรื่องมาจากใคร/หน่วยงานไหน (สตง., ปปช., ปปท., จดหมาย, อีเมล, โทรศัพท์, บอกกล่าว)")] public string? ComplaintFrom { get; set; } = string.Empty; [Comment("ผู้ร้องเรียน")] public string? Appellant { get; set; } = string.Empty; // [Required, Comment("อ้างอิงรหัสเอกสาร")] // public Document Document { get; set; } [Comment("ผลการตรวจสอบเรื่องร้องเรียน")] public string? ResultComplaint { get; set; } [Comment("ผลการตรวจสอบเรื่องสืบสวน")] public string? ResultInvestigate { get; set; } [Comment("ผลการตรวจสอบ")] public string? Result { get; set; } [Comment("กรณีหน่วยงานใส่หน่วยงาน")] public string? Organization { get; set; } [Comment("กรณีหน่วยงานใส่หน่วยงาน id")] public string? OrganizationId { get; set; } [Comment("หน่วยงานที่พิจารณา จะเปลี่ยนไปตามผู้ถูกร้องดูรายละเอียดด้านล่าง")] public string? ConsideredAgency { get; set; } [Comment("หน่วยงานที่พิจารณา จะเปลี่ยนไปตามผู้ถูกร้องดูรายละเอียดด้านล่าง id")] public string? ConsideredAgencyId { get; set; } [Comment("version หน่วยงาน")] public string? activeId { get; set; } [Comment("ลักษณะการสืบสวน (APPOINT_DIRECTORS คือ แต่งตั้งกรรมการสืบสวน, SECRET_INVESTIGATION คือ สืบสวนทางลับ, OTHER คือ อื่น ๆ)")] public string? InvestigationDetail { get; set; } [Comment("ลักษณะการสืบสวนกรณีเลือกอื่นๆ")] public string? InvestigationDetailOther { get; set; } [Comment("วันที่เริ่มการสืบสวน")] public DateTime? InvestigationDateStart { get; set; } [Comment("วันที่สิ้นสุดการสืบสวน")] public DateTime? InvestigationDateEnd { get; set; } [Comment("รายละเอียดเกี่ยวกับการสืบสวน")] public string? InvestigationDescription { get; set; } [Comment("สถานะหรือผลการสืบสวน (NOT_SPECIFIED คือ ยังไม่ระบุ, HAVE_CAUSE คือ มีมูล, NO_CAUSE คือ ไม่มีมูล")] public string? InvestigationStatusResult { get; set; } [Comment("กรณีมีมูลต้องเลือกว่า 'ร้ายแรง' หรือ 'ไม่ร้ายแรง'")] public string? InvestigationCauseText { get; set; } [Comment("ขยายเวลา")] public bool InvestigationExtendStatus { get; set; } = false; [Comment("จำนวนวันที่ต้องการขยาย")] public int? InvestigationDaysExtend { get; set; } [Comment("พยานและบันทึกถ้อยคำพยาน")] public string? DisciplinaryWitnesses { get; set; } [Comment("บันทึกถ้อยคำของผู้กล่าวหา")] public string? DisciplinaryRecordAccuser { get; set; } [Comment("สรุปพยานหลักฐานสนับสนุนข้อกล่าวหา")] public string? DisciplinarySummaryEvidence { get; set; } [Comment("อ้างอิงมาตราตามกฎหมาย")] public string? DisciplinaryRefLaw { get; set; } [Comment("ระดับโทษความผิด กรณีไม่ร้ายแรง: ภาคทัณฑ์, ตัดเงินเดือน, ลดขั้นเงินเดือน | กรณีร้ายแรง: ปลดออก, ไล่ออก")] public string? DisciplinaryFaultLevel { get; set; } [Comment("สอบสวนที่")] public string? DisciplinaryInvestigateAt { get; set; } [Comment("กรณีความผิด")] public string? DisciplinaryCaseFault { get; set; } [Comment("วันที่สรุปพยานหลักฐาน")] public DateTime? DisciplinaryDateEvident { get; set; } [Comment("วันที่รับทราบข้อกล่าวหา")] public DateTime? DisciplinaryDateAllegation { get; set; } [Comment("วันที่เริ่มการสอบสวน")] public DateTime? DisciplinaryDateStart { get; set; } [Comment("วันที่สิ้นสุดการสอบสวน")] public DateTime? DisciplinaryDateEnd { get; set; } [Comment("จำนวนวันที่ขยาย")] public int? DisciplinaryDaysExtend { get; set; } [Comment("ขยายเวลา")] public bool DisciplinaryExtendStatus { get; set; } = false; [Comment("วันที่มีคำสั่งให้สอบสวน")] public DateTime? DisciplinaryDateInvestigation { get; set; } [Comment("วันที่รายงานผลการสอบสวน")] public DateTime? DisciplinaryDateResult { get; set; } [Comment("ผลการสอบสวน ผล")] public string? DisciplinaryStatusResult { get; set; } [Comment("ผลการสอบสวน กรณีมีมูล")] public string? DisciplinaryCauseText { get; set; } [Comment("ผลการสอบสวน เหตุผล")] public string? DisciplinaryResult { get; set; } [Comment("สรุปผลการพิจารณา")] public string? ResultDescription { get; set; } [Comment("หน่วยงาย/ส่วนราชการ")] public string? ResultOc { get; set; } [Comment("ประเภทวินัย")] public string? ResultDisciplineType { get; set; } [Comment("ประเภทของเรื่อง")] public string? ResultTitleType { get; set; } [Comment("ปีงบประมาณ")] public int? ResultYear { get; set; } [Comment("ระดับโทษความผิดกรณีอื่นๆ")] public string? DisciplinaryFaultLevelOther { get; set; } [Comment("RootDnaId")] public Guid? RootDnaId { get; set; } public DisciplineInvestigate DisciplineInvestigate { get; set; } public virtual List DisciplineDisciplinary_ProfileComplaintInvestigates { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocComplaintInvestigates { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocInvestigates { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocResults { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocInvestigateRelevants { get; set; } = new List(); public virtual List DisciplineDisciplinary_DirectorInvestigates { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocSummaryEvidences { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocRecordAccusers { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocWitnessess { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocOthers { get; set; } = new List(); public virtual List DisciplineDisciplinary_DocRelevants { get; set; } = new List(); public virtual List DisciplineDisciplinaryExtends { get; set; } = new List(); } }