using PayRollDAL.DTO.Adjustment; using PayRollDAL.DTO.PayProcess; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace PayRollDAL.DTO.Leave { public class AllLeaveDetailInOneDTO { private int employeeid; private string employeecode; private string employeename; private string departmentcode; private string departmentname; private string designationcode; private string designationname; private List permssiondetaildtos; private List leavecreditdebitdetaildtos; private List leaverequestdebitdetaildtos; private List leavestatusdtos; private List adjustmentreportdtos; private List dailyattendancedtos; private List leaveondutyrequestdtos; private List missedpunchdtos; private List punchdetaildtos; public int EmployeeId { get { return employeeid; } set { employeeid = value; } } public string EmployeeCode { get { return employeecode; } set { employeecode = value; } } public string EmployeeName { get { return employeename; } set { employeename = value; } } public string DesignationCode { get { return designationcode; } set { designationcode = value; } } public string DepartmentName { get { return departmentname; } set { departmentname = value; } } public string DepartmentCode { get { return departmentcode; } set { departmentcode = value; } } public string DesignationName { get { return designationname; } set { designationname = value; } } public List PermssionDetailDTOs { get { return permssiondetaildtos; } set { permssiondetaildtos = value; } } public List LeaveCreditDebitDetailDTOs { get { return leavecreditdebitdetaildtos; } set { leavecreditdebitdetaildtos = value; } } public List LeaveRequestDebitDetailDTOs { get { return leaverequestdebitdetaildtos; } set { leaverequestdebitdetaildtos = value; } } public List LeaveStatusDTOs { get { return leavestatusdtos; } set { leavestatusdtos = value; } } public List AdjustmentReportDTOs { get { return adjustmentreportdtos; } set { adjustmentreportdtos = value; } } public List DailyAttendanceDTOs { get { return dailyattendancedtos; } set { dailyattendancedtos = value; } } public List LeaveOnDutyRequestDTOs { get { return leaveondutyrequestdtos; } set { leaveondutyrequestdtos = value; } } public List MissedPunchDTOs { get { return missedpunchdtos; } set { missedpunchdtos = value; } } public List PunchDetailDTOs { get { return punchdetaildtos; } set { punchdetaildtos = value; } } } public class PermssionDetailDTO { // Employee information public int EmployeeId { get; set; } public string? TimeSlipNumber { get; set; } public DateOnly? TimeSlipDate { get; set; } // TIMESLIPDATE public DateTime? CreatedOn { get; set; } // ✅ ADD — CREATEDON = Created Date and Time public DateOnly? AttendanceDate { get; set; } // Permission details public int? Duration { get; set; } public string Type { get; set; } = "Official"; public string Location { get; set; } = string.Empty; public string Remarks { get; set; } = string.Empty; public string Reason { get; set; } = string.Empty; // Approval information public int? ApprovedById { get; set; } public string ApprovedByCode { get; set; } = string.Empty; public string ApprovedByName { get; set; } = string.Empty; // Reporting Officer // Time fields stored as HHmm integer in DB public int? FromTime { get; set; } public int? ToTime { get; set; } // Helper properties public TimeSpan? FromTimeSpan => FromTime.HasValue ? TimeSpan.FromHours(FromTime.Value / 100).Add(TimeSpan.FromMinutes(FromTime.Value % 100)) : null; public TimeSpan? ToTimeSpan => ToTime.HasValue ? TimeSpan.FromHours(ToTime.Value / 100).Add(TimeSpan.FromMinutes(ToTime.Value % 100)) : null; // Status public int? Status { get; set; } public string? RequestStatus { get; set; } // "Approved", "Pending", "Rejected" public DateTime? ApprovedRejectedOn { get; set; } // MODIFIEDON — keep as DateTime (timestamp) } public class LeaveCreditDebitDetailDTO { private int employeeid; private string creditdebitnumber; private DateOnly creditdebitdate; private DateOnly fromdate; private DateOnly todate; private decimal numberofdays; private string type; private string category; private string remarks; private int leavetype; private int status; public int EmployeeId { get { return employeeid; } set { employeeid = value; } } public string CreditDebitNumber { get { return creditdebitnumber; } set { creditdebitnumber = value; } } public DateOnly CreditDebitDate { get { return creditdebitdate; } set { creditdebitdate = value; } } public DateOnly FromDate { get { return fromdate; } set { fromdate = value; } } public DateOnly ToDate { get { return todate; } set { todate = value; } } public decimal NumberofDays { get { return numberofdays; } set { numberofdays = value; } } public string Type { get { return type; } set { type = value; } } public string Category { get { return category; } set { category = value; } } public string Remarks { get { return remarks; } set { remarks = value; } } public int LeaveType { get { return leavetype; } set { leavetype = value; } } public int Status { get { return status; } set { status = value; } } } public class LeaveRequestDebitDetailDTO { private int employeeid; private string requestnumber; private DateOnly requestdate; private DateOnly fromdate; private DateOnly todate; private decimal numberofdays; private string category; private string remarks; private int leavetype; private int status; public int EmployeeId { get { return employeeid; } set { employeeid = value; } } public string RequestNumber { get { return requestnumber; } set { requestnumber = value; } } public DateOnly RequestDate { get { return requestdate; } set { requestdate = value; } } public DateOnly FromDate { get { return fromdate; } set { fromdate = value; } } public DateOnly ToDate { get { return todate; } set { todate = value; } } public decimal NumberofDays { get { return numberofdays; } set { numberofdays = value; } } public string Category { get { return category; } set { category = value; } } public string Remarks { get { return remarks; } set { remarks = value; } } public int LeaveType { get { return leavetype; } set { leavetype = value; } } public int Status { get { return status; } set { status = value; } } } // 1️⃣ Daily Attendance DTO public class DailyAttendanceDTO { public int EmployeeId { get; set; } public DateOnly AttendanceDate { get; set; } public string? ShiftCode { get; set; } public string? ShiftName { get; set; } public int? InTime { get; set; } // HHmm smallint (e.g. 910 = 09:10) public int? OutTime { get; set; } // HHmm smallint (e.g. 1750 = 17:50) public int? WorkedHours { get; set; } // minutes public int? LateIn { get; set; } // minutes public int? EarlyOut { get; set; } // minutes public string? ActualDayType { get; set; } // from DAYTYPE public string? ActualLeaveType { get; set; } // from LEAVEID → MLEAVE public string? ActualShift { get; set; } // current shift name public string? PlannedDayType { get; set; } // from PREVIOUSDAYTYPE public string? PlannedShift { get; set; } // from PREVIOUSSHIFTID → MSHIFT public string? Remarks { get; set; } public string? Status { get; set; } } // 2️⃣ Leave / OnDuty Request DTO (Day-wise) public class LeaveOnDutyRequestDTO { public int EmployeeId { get; set; } public string? RequestNumber { get; set; } public string? RequestType { get; set; } // "Leave" or "On Duty" public DateTime CreatedOn { get; set; } public string? RequestStatus { get; set; } public DateOnly FromDate { get; set; } public DateOnly ToDate { get; set; } public string? LeaveType { get; set; } public string? LeaveName { get; set; } public string? Reason { get; set; } public string? Remarks { get; set; } public string? ReportingOfficer { get; set; } public string? ApprovedByName { get; set; } public DateTime? ApprovedRejectedOn { get; set; } } // 3️⃣ Missed Punch DTO // 3️⃣ Missed Punch DTO — Updated to match FN_GET_PUNCH_POSTDATA output public class MissedPunchDTO { // ✅ Key field for lookup public int EmployeeId { get; set; } // ✅ Display fields matching your expected output public string? PunchAttendanceDate { get; set; } // AttendanceDate — string '01-Dec-2026' public string? PunchPunchDate { get; set; } // PunchDate — string '01-Dec-2026' public int? PunchPunchTime { get; set; } // PunchTime — HHmm integer e.g. 1000 = 10:00 public string? PunchPunchStatus { get; set; } // PunchType — 'IN' or 'OUT' from function // ✅ Additional fields from function public long? PunchId { get; set; } public string? EmployeeCode { get; set; } public string? EmployeeName { get; set; } public string? PunchCalInTime { get; set; } public int? PunchVerificationStatus { get; set; } public string? PunchGeoCode { get; set; } public int? PunchPunchType { get; set; } public string? PunchAdditionalInformation { get; set; } // This is Remarks in your output public long? PunchSiteId { get; set; } public string? PunchSiteName { get; set; } public long? DeviceId { get; set; } public string? DeviceName { get; set; } public long? PunchReasonId { get; set; } public string? PunchReasonName { get; set; } // This is Reason in your output — join to MGCM if needed public int? PunchRecordType { get; set; } public int? PunchGeoDistance { get; set; } public int? GeoFencing { get; set; } public string? FunctionReportingToMailId { get; set; } public string? FunctionReportingToMobileNumber { get; set; } public string? AdminReportingToMailId { get; set; } public string? AdminReportingToMobileNumber { get; set; } } // 4️⃣ Punch Details DTO — No change needed, already correct public class PunchDetailDTO { public int EmployeeId { get; set; } public DateOnly AttendanceDate { get; set; } public DateOnly PunchDate { get; set; } public int? PunchTime { get; set; } // HHmm smallint public string? Status { get; set; } public int? ReasonId { get; set; } public string? ReasonCode { get; set; } public string? Reason { get; set; } public string? Remarks { get; set; } } }