diff --git a/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs b/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs index 6f59411..84d63a6 100644 --- a/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs +++ b/src/Vegasco.Server.Api/Consumptions/GetConsumptions.cs @@ -51,34 +51,38 @@ public static class GetConsumptions ApplicationDbContext dbContext, CancellationToken cancellationToken) { - List consumptions = await dbContext.Consumptions + Dictionary> consumptionsByCar = await dbContext.Consumptions .OrderByDescending(x => x.DateTime) .Include(x => x.Car) - .ToListAsync(cancellationToken); + .GroupBy(x => x.CarId) + .ToDictionaryAsync(x => x.Key, x => x.ToList(), cancellationToken); List responses = []; - for (int i = 0; i < consumptions.Count; i++) + foreach (var consumptions in consumptionsByCar.Select(x => x.Value)) { - Consumption consumption = consumptions[i]; - - double? literPer100Km = null; - - bool isLast = i == consumptions.Count - 1; - if (!isLast) + for (int i = 0; i < consumptions.Count; i++) { - Consumption previousConsumption = consumptions[i + 1]; - double distanceDiff = consumption.Distance - previousConsumption.Distance; - literPer100Km = consumption.Amount / (distanceDiff / 100); - } + Consumption consumption = consumptions[i]; - responses.Add(new ResponseDto( - consumption.Id.Value, - consumption.DateTime, - consumption.Distance, - consumption.Amount, - CarDto.FromCar(consumption.Car), - literPer100Km)); + double? literPer100Km = null; + + bool isLast = i == consumptions.Count - 1; + if (!isLast) + { + Consumption previousConsumption = consumptions[i + 1]; + 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 };