public List <TransportByDateViewModel> GetTransportsReport(TransportReportRequestViewModel request) { var from = request.From.ToDateTime(); var to = request.To.ToDateTime(23, 59, 59); var quantityBookings = _activityRepository.GeTransportByDateRangeReport(from, to).OrderBy(x => x.Vehicle.Owner.Name); var transportByDateViewModel = new ConcurrentDictionary <string, TransportByDateViewModel>(); foreach (var activity in quantityBookings) { var key = activity.Vehicle.Owner.Name; if (!transportByDateViewModel.ContainsKey(key)) { transportByDateViewModel[key] = new TransportByDateViewModel { TransportName = key, Quantity = quantityBookings.Count(x => x.ActivityDateTime.Year == activity.ActivityDateTime.Year && x.ActivityDateTime.Month == activity.ActivityDateTime.Month) }; } } return(transportByDateViewModel.Values.OrderByDescending(x => x.Quantity).Take(10).OrderBy(x => x.TransportName).ToList()); }
public async Task <IActionResult> GetTransportsReport([FromBody] TransportReportRequestViewModel request) { var transportByDateViewModel = _transportReportProvider.GetTransportsReport(request); return(Ok(transportByDateViewModel)); }