using PowderCoating.Core.Enums; namespace PowderCoating.Application.DTOs.Timeclock; public class EmployeeClockEntryDto { public int Id { get; set; } public string UserId { get; set; } = string.Empty; public string UserDisplayName { get; set; } = string.Empty; public DateTime ClockInTime { get; set; } public DateTime? ClockOutTime { get; set; } public decimal? HoursWorked { get; set; } public ClockEntryType EntryType { get; set; } = ClockEntryType.Work; public string? Notes { get; set; } public bool IsOpen => ClockOutTime == null; } public class ClockInRequest { public string? Notes { get; set; } } public class ClockOutRequest { public int EntryId { get; set; } public string? Notes { get; set; } } /// /// Request sent from the kiosk tablet — employee taps their tile and enters a PIN. /// The server determines whether to clock in or clock out based on the employee's open entry. /// public class KioskPunchRequest { public string UserId { get; set; } = string.Empty; public string Pin { get; set; } = string.Empty; } public class EditClockEntryRequest { public int Id { get; set; } public DateTime ClockInTime { get; set; } public DateTime? ClockOutTime { get; set; } public string? Notes { get; set; } } /// /// Sent when an employee clicks Break or Lunch to pause their work segment. /// The server closes the current Work entry and opens a Break/Lunch entry. /// public class GoOnBreakRequest { /// Must be or . public ClockEntryType BreakType { get; set; } } /// Manager request to create a time entry on behalf of any company employee. public class ManualEntryRequest { public string UserId { get; set; } = string.Empty; public DateTime ClockInTime { get; set; } public DateTime? ClockOutTime { get; set; } public string? Notes { get; set; } } /// Employee tile shown on the kiosk employee-selection grid. public class KioskEmployeeDto { public string UserId { get; set; } = string.Empty; public string DisplayName { get; set; } = string.Empty; public string Initials { get; set; } = string.Empty; /// True when the employee has an open clock entry right now. public bool IsClockedIn { get; set; } }