Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetTransportsReport([FromBody] TransportReportRequestViewModel request)
        {
            var transportByDateViewModel = _transportReportProvider.GetTransportsReport(request);

            return(Ok(transportByDateViewModel));
        }