using Meezi.Core.Enums;

namespace Meezi.API.Models.Hr;

public record EmployeeSummaryDto(
    string Id,
    string Name,
    string Phone,
    EmployeeRole Role,
    decimal BaseSalary);

public record AttendanceDto(
    string Id,
    string EmployeeId,
    string EmployeeName,
    DateOnly Date,
    DateTime? ClockIn,
    DateTime? ClockOut,
    string? Notes);

public record ShiftDto(int DayOfWeek, ShiftType ShiftType);

public record UpsertShiftsRequest(IReadOnlyList<ShiftDto> Shifts);

public record LeaveRequestDto(
    string Id,
    string EmployeeId,
    string EmployeeName,
    DateOnly StartDate,
    DateOnly EndDate,
    string? Reason,
    LeaveStatus Status,
    string? ReviewedBy,
    DateTime CreatedAt);

public record CreateLeaveRequest(
    DateOnly StartDate,
    DateOnly EndDate,
    string? Reason);

public record ReviewLeaveRequest(LeaveStatus Status);

public record EmployeeSalaryDto(
    string Id,
    string EmployeeId,
    string EmployeeName,
    string MonthYear,
    decimal BaseSalary,
    decimal OvertimePay,
    decimal Deductions,
    decimal NetSalary,
    bool IsPaid);

public record CreateSalaryRequest(
    string EmployeeId,
    string MonthYear,
    decimal BaseSalary,
    decimal OvertimePay,
    decimal Deductions);

public record TodayShiftDto(ShiftType ShiftType, string Label);

/// <summary>Set or update username/password credentials for an employee.</summary>
public record SetEmployeeCredentialsRequest(string Username, string Password);
