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; }
}