diff --git a/BMA.EHR.Domain/Models/Leave/Commons/LeaveType.cs b/BMA.EHR.Domain/Models/Leave/Commons/LeaveType.cs
new file mode 100644
index 00000000..06df5904
--- /dev/null
+++ b/BMA.EHR.Domain/Models/Leave/Commons/LeaveType.cs
@@ -0,0 +1,9 @@
+using BMA.EHR.Domain.Models.Base;
+
+namespace BMA.EHR.Domain.Models.Leave.Commons
+{
+ public class LeaveType : EntityBase
+ {
+ public string Name { get; set; } = string.Empty;
+ }
+}
diff --git a/BMA.EHR.Domain/Models/Leave/Requests/LeaveRequest.cs b/BMA.EHR.Domain/Models/Leave/Requests/LeaveRequest.cs
new file mode 100644
index 00000000..97d7772f
--- /dev/null
+++ b/BMA.EHR.Domain/Models/Leave/Requests/LeaveRequest.cs
@@ -0,0 +1,108 @@
+using BMA.EHR.Domain.Models.Base;
+using BMA.EHR.Domain.Models.Documents;
+using BMA.EHR.Domain.Models.Leave.Commons;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+
+namespace BMA.EHR.Domain.Models.Leave.Requests
+{
+ public class LeaveRequest : EntityBase
+ {
+ [Required, Comment("Id ประเภทการลา")]
+ public LeaveType Type { get; set; }
+
+ [Required, Comment("วัน เดือน ปีเริ่มต้นลา")]
+ public DateTime LeaveStartDate { get; set; } = DateTime.Now;
+
+ [Required, Comment("วัน เดือน ปีสิ้นสุดลา")]
+ public DateTime LeaveEndDate { get; set; } = DateTime.Now;
+
+ [Required, Comment("เขียนที่")]
+ public string LeaveWrote { get; set; } = string.Empty;
+
+ [Required, Comment("สถานที่ติดต่อขณะลา")]
+ public string LeaveAddress { get; set; } = string.Empty;
+
+ [Required, Comment("หมายเลขที่ติดต่อขณะลา")]
+ public string LeaveNumber { get; set; } = string.Empty;
+
+ [Required, Comment("รายละเอียดการลา")]
+ public string LeaveDetail { get; set; } = string.Empty;
+
+ public Document LeaveDocument { get; set; }
+
+ public Document LeaveDraftDocument { get; set; }
+
+ public string LeaveSalaryText { get; set; } = string.Empty;
+
+ public string WifeDayName { get; set; } = string.Empty;
+
+ public string WifeDayDateBorn { get; set; } = string.Empty;
+
+ public int RestDayOldTotal { get; set; } = 0;
+
+ public int RestDayCurrentTotal { get; set; } = 0;
+
+ public bool OrdainDayStatus { get; set; } = false;
+
+ public string OrdainDayLocationName { get; set; } = string.Empty;
+
+ public string OrdainDayLocationAddress { get; set; } = string.Empty;
+
+ public string OrdainDayLocationNumber { get; set; } = string.Empty;
+
+ public DateTime OrdainDayOrdination { get; set; } = DateTime.Now;
+
+ public string OrdainDayBuddhistLentName { get; set; } = string.Empty;
+
+ public string OrdainDayBuddhistLentAddress { get; set; } = string.Empty;
+
+ public bool HajjDayStatus { get; set; } = false;
+
+ public string AbsentDaySummon { get; set; } = string.Empty;
+
+ public string AbsentDayLocation { get; set; } = string.Empty;
+
+ public DateTime AbsentDayRegistorDate { get; set; } = DateTime.Now;
+
+ public string AbsentDayGetIn { get; set; } = string.Empty;
+
+ public string AbsentDayAt { get; set; } = string.Empty;
+
+ public string StudyDaySubject { get; set; } = string.Empty;
+
+ public string StudyDayDegreeLevel { get; set; } = string.Empty;
+
+ public string StudyDayUniversityName { get; set; } = string.Empty;
+
+ public string StudyDayTrainingSubject { get; set; } = string.Empty;
+
+ public string StudyDayTrainingName { get; set; } = string.Empty;
+
+ public string StudyDayCountry { get; set; } = string.Empty;
+
+ public string StudyDayScholarship { get; set; } = string.Empty;
+
+ public string CoupleDayName { get; set; } = string.Empty;
+
+ public string CoupleDayPosition { get; set; } = string.Empty;
+
+ public string CoupleDayLevel { get; set; } = string.Empty;
+
+ public string CoupleDayLevelCountry { get; set; } = string.Empty;
+
+ public string CoupleDayCountryHistory { get; set; } = string.Empty;
+
+ public string CoupleDayTotalHistory { get; set; } = string.Empty;
+
+ public DateTime CoupleDayStartDateHistory { get; set; } = DateTime.Now;
+
+ public DateTime CoupleDayEndDateHistory { get; set; } = DateTime.Now;
+
+ public string CoupleDaySumTotalHistory { get; set; } = string.Empty;
+
+ public string LeaveStatus { get; set; } = string.Empty;
+
+ public string LeaveComment { get; set; } = string.Empty;
+ }
+}
diff --git a/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.Designer.cs b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.Designer.cs
new file mode 100644
index 00000000..c004b879
--- /dev/null
+++ b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.Designer.cs
@@ -0,0 +1,552 @@
+//
+using System;
+using BMA.EHR.Infrastructure.Persistence;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
+{
+ [DbContext(typeof(LeaveDbContext))]
+ [Migration("20231127043459_Add LeaveType and LeaveRequest Table")]
+ partial class AddLeaveTypeandLeaveRequestTable
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.9")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.AdditionalCheckRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("*วันที่ลงเวลา");
+
+ b.Property("CheckInEdit")
+ .HasColumnType("tinyint(1)")
+ .HasComment("*ขอลงเวลาช่วงเช้า");
+
+ b.Property("CheckOutEdit")
+ .HasColumnType("tinyint(1)")
+ .HasComment("*ขอลงเวลาช่วงบ่าย");
+
+ b.Property("Comment")
+ .HasColumnType("longtext")
+ .HasComment("หมายเหตุในการการอนุมัติ/ไม่อนุมัติ");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("*หมายเหตุขอลงเวลาพิเศษ");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak ที่ร้องขอ");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("สถานะการอนุมัติ");
+
+ b.HasKey("Id");
+
+ b.ToTable("AdditionalCheckRequests");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.DutyTime", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("คำอธิบาย");
+
+ b.Property("EndTimeAfternoon")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาออกงานช่วงบ่าย");
+
+ b.Property("EndTimeMorning")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาออกงานช่วงเช้า");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)")
+ .HasComment("สถานะการเปิดใช้งาน (เปิด/ปิด)");
+
+ b.Property("IsDefault")
+ .HasColumnType("tinyint(1)")
+ .HasComment("สถานะว่ารอบใดเป็นค่า Default ของข้าราชการ (สำหรับทุกคนที่ยังไม่ได้ทำการเลือกรอบ)");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("StartTimeAfternoon")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาเข้างานช่วงบ่าย");
+
+ b.Property("StartTimeMorning")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาเข้างานช่วงเช้า");
+
+ b.HasKey("Id");
+
+ b.ToTable("DutyTimes");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.ProcessUserTimeStamp", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckIn")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา เข้างาน");
+
+ b.Property("CheckInImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-In");
+
+ b.Property("CheckInLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-In");
+
+ b.Property("CheckInLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-In");
+
+ b.Property("CheckInLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-In");
+
+ b.Property("CheckInPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-In");
+
+ b.Property("CheckInRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In");
+
+ b.Property("CheckInStatus")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("สถานะ Check-In");
+
+ b.Property("CheckOut")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา ออกงาน");
+
+ b.Property("CheckOutImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-Out");
+
+ b.Property("CheckOutLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-Out");
+
+ b.Property("CheckOutLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-Out");
+
+ b.Property("CheckOutLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-Out");
+
+ b.Property("CheckOutPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-Out");
+
+ b.Property("CheckOutRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out");
+
+ b.Property("CheckOutStatus")
+ .HasColumnType("longtext")
+ .HasComment("สถานะ Check-Out");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("EditReason")
+ .HasColumnType("longtext")
+ .HasComment("เหตุผลการอนุมัติ/ไม่อนุมัติขอลงเวลาพิเศษ");
+
+ b.Property("EditStatus")
+ .HasColumnType("longtext")
+ .HasComment("สถานะการของลงเวลาพิเศษ");
+
+ b.Property("IsLocationCheckIn")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
+
+ b.Property("IsLocationCheckOut")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-Out");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("นำไปประมวลผลแล้วหรือยัง");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.HasKey("Id");
+
+ b.ToTable("ProcessUserTimeStamps");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.UserDutyTime", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("DutyTimeId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัสรอบการลงเวลา");
+
+ b.Property("EffectiveDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("วันที่มีผล");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("ทำการประมวลผลแล้วหรือยัง");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("ProfileId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส Profile ในระบบทะเบียนประวัติ");
+
+ b.Property("Remark")
+ .HasColumnType("longtext")
+ .HasComment("หมายเหตุ");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DutyTimeId");
+
+ b.ToTable("UserDutyTimes");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.UserTimeStamp", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckIn")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา เข้างาน");
+
+ b.Property("CheckInImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-In");
+
+ b.Property("CheckInLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-In");
+
+ b.Property("CheckInLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-In");
+
+ b.Property("CheckInLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-In");
+
+ b.Property("CheckInPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-In");
+
+ b.Property("CheckInRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In");
+
+ b.Property("CheckOut")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา ออกงาน");
+
+ b.Property("CheckOutImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-Out");
+
+ b.Property("CheckOutLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-Out");
+
+ b.Property("CheckOutLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-Out");
+
+ b.Property("CheckOutLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-Out");
+
+ b.Property("CheckOutPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-Out");
+
+ b.Property("CheckOutRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("IsLocationCheckIn")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
+
+ b.Property("IsLocationCheckOut")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-Out");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("นำไปประมวลผลแล้วหรือยัง");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.HasKey("Id");
+
+ b.ToTable("UserTimeStamps");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.UserDutyTime", b =>
+ {
+ b.HasOne("BMA.EHR.Domain.Models.Leave.TimeAttendants.DutyTime", "DutyTime")
+ .WithMany()
+ .HasForeignKey("DutyTimeId")
+ .OnDelete(DeleteBehavior.Cascade)
+ .IsRequired();
+
+ b.Navigation("DutyTime");
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.cs b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.cs
new file mode 100644
index 00000000..e090fc78
--- /dev/null
+++ b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127043459_Add LeaveType and LeaveRequest Table.cs
@@ -0,0 +1,22 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+
+#nullable disable
+
+namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
+{
+ ///
+ public partial class AddLeaveTypeandLeaveRequestTable : Migration
+ {
+ ///
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+
+ }
+
+ ///
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+
+ }
+ }
+}
diff --git a/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127044646_Add LeaveType and LeaveRequest Table and Add to Dbcontext.Designer.cs b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127044646_Add LeaveType and LeaveRequest Table and Add to Dbcontext.Designer.cs
new file mode 100644
index 00000000..68632b67
--- /dev/null
+++ b/BMA.EHR.Infrastructure/Migrations/LeaveDb/20231127044646_Add LeaveType and LeaveRequest Table and Add to Dbcontext.Designer.cs
@@ -0,0 +1,900 @@
+//
+using System;
+using BMA.EHR.Infrastructure.Persistence;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+
+#nullable disable
+
+namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
+{
+ [DbContext(typeof(LeaveDbContext))]
+ [Migration("20231127044646_Add LeaveType and LeaveRequest Table and Add to Dbcontext")]
+ partial class AddLeaveTypeandLeaveRequestTableandAddtoDbcontext
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "7.0.9")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Documents.Document", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)");
+
+ b.Property("CreatedDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("Detail")
+ .IsRequired()
+ .HasColumnType("text");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("varchar(255)");
+
+ b.Property("FileSize")
+ .HasColumnType("int");
+
+ b.Property("FileType")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("varchar(128)");
+
+ b.Property("ObjectRefId")
+ .HasColumnType("char(36)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Document");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.Commons.LeaveType", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.ToTable("LeaveTypes");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.Requests.LeaveRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("AbsentDayAt")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("AbsentDayGetIn")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("AbsentDayLocation")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("AbsentDayRegistorDate")
+ .HasColumnType("datetime(6)");
+
+ b.Property("AbsentDaySummon")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayCountryHistory")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayEndDateHistory")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CoupleDayLevel")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayLevelCountry")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayPosition")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayStartDateHistory")
+ .HasColumnType("datetime(6)");
+
+ b.Property("CoupleDaySumTotalHistory")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CoupleDayTotalHistory")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("HajjDayStatus")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("LeaveAddress")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("สถานที่ติดต่อขณะลา");
+
+ b.Property("LeaveComment")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("LeaveDetail")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รายละเอียดการลา");
+
+ b.Property("LeaveDocumentId")
+ .HasColumnType("char(36)");
+
+ b.Property("LeaveDraftDocumentId")
+ .HasColumnType("char(36)");
+
+ b.Property("LeaveEndDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เดือน ปีสิ้นสุดลา");
+
+ b.Property("LeaveNumber")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("หมายเลขที่ติดต่อขณะลา");
+
+ b.Property("LeaveSalaryText")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("LeaveStartDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เดือน ปีเริ่มต้นลา");
+
+ b.Property("LeaveStatus")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("LeaveWrote")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เขียนที่");
+
+ b.Property("OrdainDayBuddhistLentAddress")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrdainDayBuddhistLentName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrdainDayLocationAddress")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrdainDayLocationName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrdainDayLocationNumber")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("OrdainDayOrdination")
+ .HasColumnType("datetime(6)");
+
+ b.Property("OrdainDayStatus")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("RestDayCurrentTotal")
+ .HasColumnType("int");
+
+ b.Property("RestDayOldTotal")
+ .HasColumnType("int");
+
+ b.Property("StudyDayCountry")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDayDegreeLevel")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDayScholarship")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDaySubject")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDayTrainingName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDayTrainingSubject")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("StudyDayUniversityName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("TypeId")
+ .HasColumnType("char(36)");
+
+ b.Property("WifeDayDateBorn")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.Property("WifeDayName")
+ .IsRequired()
+ .HasColumnType("longtext");
+
+ b.HasKey("Id");
+
+ b.HasIndex("LeaveDocumentId");
+
+ b.HasIndex("LeaveDraftDocumentId");
+
+ b.HasIndex("TypeId");
+
+ b.ToTable("LeaveRequests");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.AdditionalCheckRequest", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("*วันที่ลงเวลา");
+
+ b.Property("CheckInEdit")
+ .HasColumnType("tinyint(1)")
+ .HasComment("*ขอลงเวลาช่วงเช้า");
+
+ b.Property("CheckOutEdit")
+ .HasColumnType("tinyint(1)")
+ .HasComment("*ขอลงเวลาช่วงบ่าย");
+
+ b.Property("Comment")
+ .HasColumnType("longtext")
+ .HasComment("หมายเหตุในการการอนุมัติ/ไม่อนุมัติ");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("*หมายเหตุขอลงเวลาพิเศษ");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak ที่ร้องขอ");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("สถานะการอนุมัติ");
+
+ b.HasKey("Id");
+
+ b.ToTable("AdditionalCheckRequests");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.DutyTime", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("คำอธิบาย");
+
+ b.Property("EndTimeAfternoon")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาออกงานช่วงบ่าย");
+
+ b.Property("EndTimeMorning")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาออกงานช่วงเช้า");
+
+ b.Property("IsActive")
+ .HasColumnType("tinyint(1)")
+ .HasComment("สถานะการเปิดใช้งาน (เปิด/ปิด)");
+
+ b.Property("IsDefault")
+ .HasColumnType("tinyint(1)")
+ .HasComment("สถานะว่ารอบใดเป็นค่า Default ของข้าราชการ (สำหรับทุกคนที่ยังไม่ได้ทำการเลือกรอบ)");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("StartTimeAfternoon")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาเข้างานช่วงบ่าย");
+
+ b.Property("StartTimeMorning")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("เวลาเข้างานช่วงเช้า");
+
+ b.HasKey("Id");
+
+ b.ToTable("DutyTimes");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.ProcessUserTimeStamp", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckIn")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา เข้างาน");
+
+ b.Property("CheckInImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-In");
+
+ b.Property("CheckInLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-In");
+
+ b.Property("CheckInLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-In");
+
+ b.Property("CheckInLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-In");
+
+ b.Property("CheckInPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-In");
+
+ b.Property("CheckInRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In");
+
+ b.Property("CheckInStatus")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("สถานะ Check-In");
+
+ b.Property("CheckOut")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา ออกงาน");
+
+ b.Property("CheckOutImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-Out");
+
+ b.Property("CheckOutLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-Out");
+
+ b.Property("CheckOutLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-Out");
+
+ b.Property("CheckOutLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-Out");
+
+ b.Property("CheckOutPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-Out");
+
+ b.Property("CheckOutRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out");
+
+ b.Property("CheckOutStatus")
+ .HasColumnType("longtext")
+ .HasComment("สถานะ Check-Out");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("EditReason")
+ .HasColumnType("longtext")
+ .HasComment("เหตุผลการอนุมัติ/ไม่อนุมัติขอลงเวลาพิเศษ");
+
+ b.Property("EditStatus")
+ .HasColumnType("longtext")
+ .HasComment("สถานะการของลงเวลาพิเศษ");
+
+ b.Property("IsLocationCheckIn")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
+
+ b.Property("IsLocationCheckOut")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-Out");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("นำไปประมวลผลแล้วหรือยัง");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.HasKey("Id");
+
+ b.ToTable("ProcessUserTimeStamps");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.UserDutyTime", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("DutyTimeId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัสรอบการลงเวลา");
+
+ b.Property("EffectiveDate")
+ .HasColumnType("datetime(6)")
+ .HasComment("วันที่มีผล");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("ทำการประมวลผลแล้วหรือยัง");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(102)
+ .HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
+
+ b.Property("ProfileId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส Profile ในระบบทะเบียนประวัติ");
+
+ b.Property("Remark")
+ .HasColumnType("longtext")
+ .HasComment("หมายเหตุ");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DutyTimeId");
+
+ b.ToTable("UserDutyTimes");
+ });
+
+ modelBuilder.Entity("BMA.EHR.Domain.Models.Leave.TimeAttendants.UserTimeStamp", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("char(36)")
+ .HasColumnOrder(0)
+ .HasComment("PrimaryKey")
+ .HasAnnotation("Relational:JsonPropertyName", "id");
+
+ b.Property("CheckIn")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา เข้างาน");
+
+ b.Property("CheckInImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-In");
+
+ b.Property("CheckInLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-In");
+
+ b.Property("CheckInLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-In");
+
+ b.Property("CheckInLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-In");
+
+ b.Property("CheckInPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-In");
+
+ b.Property("CheckInRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In");
+
+ b.Property("CheckOut")
+ .HasColumnType("datetime(6)")
+ .HasComment("วัน เวลา ออกงาน");
+
+ b.Property("CheckOutImageUrl")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("รูปถ่ายสถานที่ Check-Out");
+
+ b.Property("CheckOutLat")
+ .HasColumnType("double")
+ .HasComment("พิกัดละติจูด Check-Out");
+
+ b.Property("CheckOutLocationName")
+ .HasColumnType("longtext")
+ .HasComment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-Out");
+
+ b.Property("CheckOutLon")
+ .HasColumnType("double")
+ .HasComment("พิกัดลองจิจูด Check-Out");
+
+ b.Property("CheckOutPOI")
+ .IsRequired()
+ .HasColumnType("longtext")
+ .HasComment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-Out");
+
+ b.Property("CheckOutRemark")
+ .HasColumnType("longtext")
+ .HasComment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out");
+
+ b.Property("CreatedAt")
+ .HasColumnType("datetime(6)")
+ .HasColumnOrder(100)
+ .HasComment("สร้างข้อมูลเมื่อ");
+
+ b.Property("CreatedFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(104)
+ .HasComment("ชื่อ User ที่สร้างข้อมูล");
+
+ b.Property("CreatedUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(101)
+ .HasComment("User Id ที่สร้างข้อมูล");
+
+ b.Property("IsLocationCheckIn")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
+
+ b.Property("IsLocationCheckOut")
+ .HasColumnType("tinyint(1)")
+ .HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-Out");
+
+ b.Property("IsProcess")
+ .HasColumnType("tinyint(1)")
+ .HasComment("นำไปประมวลผลแล้วหรือยัง");
+
+ b.Property("KeycloakUserId")
+ .HasColumnType("char(36)")
+ .HasComment("รหัส User ของ Keycloak");
+
+ b.Property("LastUpdateFullName")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("varchar(200)")
+ .HasColumnOrder(105)
+ .HasComment("ชื่อ User ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property("LastUpdateUserId")
+ .IsRequired()
+ .HasMaxLength(40)
+ .HasColumnType("varchar(40)")
+ .HasColumnOrder(103)
+ .HasComment("User Id ที่แก้ไขข้อมูลล่าสุด");
+
+ b.Property