using SolutionErp.Domain.Common;

namespace SolutionErp.Domain.Hrm;

// Phase 11 P11-B Wave 1 (Mig 42 — S43 2026-05-30) — Số dư phép theo năm.
// Track quota phép từng NV × LoạiPhép × Năm. Trừ phép tự động khi đơn nghỉ
// phép duyệt cuối (ApproveLeaveRequestHandler terminal branch UPSERT UsedDays).
//
// Remaining = EntitledDays + AdjustmentDays − UsedDays (COMPUTED ở DTO, KHÔNG store).
// UNIQUE (UserId, LeaveTypeId, Year) — 1 row mỗi NV mỗi loại mỗi năm.
public class LeaveBalance : AuditableEntity
{
    public Guid UserId { get; set; }
    public Guid LeaveTypeId { get; set; }
    public int Year { get; set; }

    // Phân bổ năm — mặc định lấy từ LeaveType.DaysPerYear lúc tạo row.
    public decimal EntitledDays { get; set; }

    // Đã dùng — cộng dồn NumDays mỗi đơn nghỉ phép duyệt cuối.
    public decimal UsedDays { get; set; }

    // Admin carry-over / điều chỉnh (dồn phép năm trước, thưởng phép...). Default 0.
    public decimal AdjustmentDays { get; set; }

    public LeaveType? LeaveType { get; set; }
}
