using SolutionErp.Domain.Contracts;

namespace SolutionErp.Application.Reports.Dtos;

public record DashboardStatsDto(
    int TotalContracts,
    int ActiveContracts,                  // chưa ở final phase (DaPhatHanh hoặc TuChoi)
    int OverdueContracts,                 // SlaDeadline < UtcNow
    int PublishedThisMonth,               // DaPhatHanh trong tháng này
    decimal TotalValueActive,             // sum(GiaTri) của ActiveContracts
    List<PhaseCountDto> ByPhase,
    List<SupplierCountDto> TopSuppliers,  // top 5 NCC theo số HĐ
    List<ProjectCountDto> TopProjects,    // top 5 dự án theo số HĐ
    List<MonthlyValueDto> MonthlyValue);  // 12 tháng gần nhất: tháng → tổng giá trị HĐ tạo

public record PhaseCountDto(ContractPhase Phase, int Count);
public record SupplierCountDto(Guid SupplierId, string SupplierName, int Count, decimal TotalValue);
public record ProjectCountDto(Guid ProjectId, string ProjectName, int Count, decimal TotalValue);
public record MonthlyValueDto(int Year, int Month, decimal TotalValue, int Count);
