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 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); /// Set or update username/password credentials for an employee. public record SetEmployeeCredentialsRequest(string Username, string Password); /// Create a new employee. Owner/Manager only; Manager role requires Owner. /// Username+Password are optional and, when supplied, enable dashboard/POS login. public record CreateEmployeeRequest( string Name, string Phone, EmployeeRole Role, string? BranchId = null, decimal? BaseSalary = null, string? NationalId = null, string? Username = null, string? Password = null);