AVS-Carton-Shipment-Verifier/DTOs/MovementAnalyticsDto.cs

63 lines
1.5 KiB
C#

namespace AVSCartonShipmentVerifier.DTOs;
public sealed class MovementAnalyticsDto
{
public MovementSummaryDto Summary { get; init; } = new();
public MovementStatusShareDto StatusShare { get; init; } = new();
public IReadOnlyList<MovementChartDayDto> ChartByDay { get; init; } = [];
public IReadOnlyList<MovementDayDetailDto> DayDetails { get; init; } = [];
public string DateRangeLabel { get; init; } = string.Empty;
}
public sealed class MovementSummaryDto
{
public int MovedToday { get; init; }
public int MovedThisWeek { get; init; }
public int MovedThisMonth { get; init; }
public int TotalMoved { get; init; }
}
public sealed class MovementStatusShareDto
{
public int Moved { get; init; }
public int Pending { get; init; }
public int Total => Moved + Pending;
public double MovedPercent => Total > 0 ? Math.Round(Moved * 100.0 / Total, 1) : 0;
public double PendingPercent => Total > 0 ? Math.Round(Pending * 100.0 / Total, 1) : 0;
}
public sealed class MovementChartDayDto
{
public string DayLabel { get; init; } = string.Empty;
public int MovedCartons { get; init; }
}
public sealed class MovementDayDetailDto
{
public DateOnly Date { get; init; }
public string DateDisplay { get; init; } = string.Empty;
public int MovedCartons { get; init; }
public int SuccessfulScans { get; init; }
public int DuplicateRejections { get; init; }
public int ManualEntryRejections { get; init; }
public DateTime? LastMovedAtUtc { get; init; }
}