Fix liter per 100 km calculation for multiple cars

This commit is contained in:
2025-06-23 16:50:07 +02:00
parent 0df7449a99
commit 9e16d6004a

View File

@@ -51,34 +51,38 @@ public static class GetConsumptions
ApplicationDbContext dbContext, ApplicationDbContext dbContext,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
List<Consumption> consumptions = await dbContext.Consumptions Dictionary<CarId, List<Consumption>> consumptionsByCar = await dbContext.Consumptions
.OrderByDescending(x => x.DateTime) .OrderByDescending(x => x.DateTime)
.Include(x => x.Car) .Include(x => x.Car)
.ToListAsync(cancellationToken); .GroupBy(x => x.CarId)
.ToDictionaryAsync(x => x.Key, x => x.ToList(), cancellationToken);
List<ResponseDto> responses = []; List<ResponseDto> responses = [];
for (int i = 0; i < consumptions.Count; i++) foreach (var consumptions in consumptionsByCar.Select(x => x.Value))
{ {
Consumption consumption = consumptions[i]; for (int i = 0; i < consumptions.Count; i++)
double? literPer100Km = null;
bool isLast = i == consumptions.Count - 1;
if (!isLast)
{ {
Consumption previousConsumption = consumptions[i + 1]; Consumption consumption = consumptions[i];
double distanceDiff = consumption.Distance - previousConsumption.Distance;
literPer100Km = consumption.Amount / (distanceDiff / 100);
}
responses.Add(new ResponseDto( double? literPer100Km = null;
consumption.Id.Value,
consumption.DateTime, bool isLast = i == consumptions.Count - 1;
consumption.Distance, if (!isLast)
consumption.Amount, {
CarDto.FromCar(consumption.Car), Consumption previousConsumption = consumptions[i + 1];
literPer100Km)); double distanceDiff = consumption.Distance - previousConsumption.Distance;
literPer100Km = consumption.Amount / (distanceDiff / 100);
}
responses.Add(new ResponseDto(
consumption.Id.Value,
consumption.DateTime,
consumption.Distance,
consumption.Amount,
CarDto.FromCar(consumption.Car),
literPer100Km));
}
} }
ApiResponse apiResponse = new() { Consumptions = responses }; ApiResponse apiResponse = new() { Consumptions = responses };