namespace SeaHaven.Services.DTOs { public sealed class DashboardStatsQueryDTO { public DateOnly? DateFrom { get; set; } public DateOnly? DateTo { get; set; } } public sealed class DashboardWorkloadResponseDTO { public IReadOnlyList Items { get; init; } = []; public int Page { get; init; } public int PageSize { get; init; } public int TotalDispatchers { get; init; } } public sealed class DashboardWorkloadRowDTO { public string DispatcherId { get; init; } = string.Empty; public string DispatcherName { get; init; } = string.Empty; public string? Color { get; init; } public int TotalCount { get; init; } public int OpenCount { get; init; } } public sealed class DashboardPerformanceResponseDTO { public IReadOnlyList Items { get; init; } = []; public int Page { get; init; } public int PageSize { get; init; } public int TotalDispatchers { get; init; } } public sealed class DashboardPerformanceRowDTO { public string DispatcherId { get; init; } = string.Empty; public string DispatcherName { get; init; } = string.Empty; public string? Color { get; init; } public decimal CompletionRate { get; init; } public decimal? AverageResolutionDays { get; init; } } public sealed class DashboardRegionResponseDTO { public IReadOnlyList Items { get; init; } = []; } public sealed class DashboardRegionRowDTO { public string Region { get; init; } = string.Empty; public int WorkOrderCount { get; init; } } public sealed class DashboardVendorInsightsResponseDTO { public IReadOnlyList Items { get; init; } = []; public int Page { get; init; } public int PageSize { get; init; } public int TotalVendors { get; init; } } public sealed class DashboardVendorInsightsRowDTO { public int VendorCompanyId { get; init; } public string VendorCompanyName { get; init; } = string.Empty; public decimal CompletionRate { get; init; } public decimal RescheduleRate { get; init; } public decimal? AverageResolutionDays { get; init; } public int TotalJobs { get; init; } } public class DashboardStatsDTO { public int Total { get; set; } public int Open { get; set; } public int NotDispatched { get; set; } public int Completed { get; set; } public DashboardBreakdownDTO Breakdown { get; set; } = new(); public int DueCount { get; set; } public int CompletedDueCount { get; set; } public decimal CompletionRate { get; set; } public decimal? AverageResolutionDays { get; set; } } public sealed class DashboardBreakdownDTO { public int PM { get; set; } public int Emergency { get; set; } public int Reactive { get; set; } public int Overdue { get; set; } public int Other { get; set; } } }