using BMA.EHR.Domain.Models.Base; using Microsoft.EntityFrameworkCore; using System.ComponentModel.DataAnnotations; namespace BMA.EHR.Domain.Models.Leave.TimeAttendants { public class ProcessUserTimeStamp : EntityBase { [Required, Comment("รหัส User ของ Keycloak")] public Guid KeycloakUserId { get; set; } = Guid.Empty; [Required, Comment("วัน เวลา เข้างาน")] public DateTime CheckIn { get; set; } = DateTime.MinValue; [Comment("วัน เวลา ออกงาน")] public DateTime? CheckOut { get; set; } [Required, Comment("นำไปประมวลผลแล้วหรือยัง")] public bool IsProcess { get; set; } = false; [Required, Comment("พิกัดละติจูด Check-In")] public double CheckInLat { get; set; } = 0; [Required, Comment("พิกัดลองจิจูด Check-In")] public double CheckInLon { get; set; } = 0; [Required, Comment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-In")] public string CheckInPOI { get; set; } = string.Empty; [Required, Comment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In")] public bool IsLocationCheckIn { get; set; } = true; [Comment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-In")] public string? CheckInLocationName { get; set; } = string.Empty; [Required, Comment("รูปถ่ายสถานที่ Check-In")] public string CheckInImageUrl { get; set; } = string.Empty; [Comment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In")] public string? CheckInRemark { get; set; } = string.Empty; [Required, Comment("สถานะ Check-In")] public string? CheckInStatus { get; set; } = string.Empty; [Required, Comment("พิกัดละติจูด Check-Out")] public double CheckOutLat { get; set; } = 0; [Required, Comment("พิกัดลองจิจูด Check-Out")] public double CheckOutLon { get; set; } = 0; [Required, Comment("ชื่อสถานที่ ได้มาจากระบบ ArcGis ของกองสารสนเทศภูมิศาสตร์ Check-Out")] public string CheckOutPOI { get; set; } = string.Empty; [Required, Comment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-Out")] public bool IsLocationCheckOut { get; set; } = true; [Comment("กรณีเลือกนอกสถานที่ตั้ง ต้องระบุข้อมูลชื่อสถานะที่ Check-Out")] public string? CheckOutLocationName { get; set; } = string.Empty; [Required, Comment("รูปถ่ายสถานที่ Check-Out")] public string CheckOutImageUrl { get; set; } = string.Empty; [Comment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out")] public string? CheckOutRemark { get; set; } = string.Empty; [Comment("สถานะ Check-Out")] public string? CheckOutStatus { get; set; } = string.Empty; [Comment("สถานะการของลงเวลาพิเศษ")] public string? EditStatus { get; set; } = string.Empty; [Comment("เหตุผลการอนุมัติ/ไม่อนุมัติขอลงเวลาพิเศษ")] public string? EditReason { get; set; } = string.Empty; public string? Prefix { get; set; } public string? FirstName { get; set; } public string? LastName { get; set; } public string? CitizenId { get; set; } public string? Gender { get; set; } public string? Root { get; set; } public string? Child1 { get; set; } public string? Child2 { get; set; } public string? Child3 { get; set; } public string? Child4 { get; set; } public Guid? RootId { get; set; } public Guid? Child1Id { get; set; } public Guid? Child2Id { get; set; } public Guid? Child3Id { get; set; } public Guid? Child4Id { get; set; } public Guid? ProfileId { get; set; } public string? ProfileType { get; set; } public Guid? RootDnaId { get; set; } public Guid? Child1DnaId { get; set; } public Guid? Child2DnaId { get; set; } public Guid? Child3DnaId { get; set; } public Guid? Child4DnaId { get; set; } } }