コード例 #1
0
        public async Task <IEnumerable <CarStatistic> > GetCarStatisticsInPreviousDays(int days)
        {
            var travelPlans = _travelPlanService.GetTravelPlansInDateRange(days);

            var travelPlansGroupedByCar = travelPlans.ToList()
                                          .GroupBy(tp => new { tp.CarId, tp.Car }, (g, tp) => new
            {
                g.Car.CarId,
                g.Car,
                Trips = tp.Select(x => new
                {
                    x.TravelPlanId,
                    StartLocation = x.StartLocation.Name,
                    EndLcoation   = x.EndLocation.Name,
                    StartDate     = x.StartTimeUtc,
                    EndDate       = x.EndTimeUtc,
                    Employees     = x.TravelPlanEmployees.Select(tpe => tpe.Employee)
                })
            }).ToList();

            var carStatistics = new List <CarStatistic>();

            foreach (var car in travelPlansGroupedByCar)
            {
                var carStatistic = new CarStatistic()
                {
                    Car = car.Car.Adapt <CarDto>(),
                };

                var travelPlanStatistics = car.Trips.Select(t => new TravelPlanStatistic()
                {
                    TravelPlanId  = t.TravelPlanId,
                    Employees     = MapEmployee(t.Employees),
                    StartLocation = t.StartLocation,
                    EndLocation   = t.EndLcoation,
                    StartTimeUtc  = t.StartDate,
                    EndTimeUtc    = t.EndDate
                });
                carStatistic.TravelPlanStatistics.AddRange(travelPlanStatistics);

                carStatistics.Add(carStatistic);
            }

            return(carStatistics);
        }