Exemplo n.º 1
0
        public async Task <RidesAnalyticInfo> GetRidesEvolution()
        {
            DateTime fromFilter = DateTime.UtcNow.AddDays(-30);

            var labels = new List <int>();
            var to     = DateTime.UtcNow;

            var date = fromFilter;

            while (DateTime.Compare(date, to) < 0)
            {
                labels.Add(date.Day);
                date = date.AddDays(1);
            }

            int carrierId = await _securityContext.GetCarrierId(User.Identity);

            IEnumerable <RideResult> evolution = await _ridesRepository.GetRidesEvolutionAsync(carrierId, fromFilter);

            var values = new int[labels.Count];

            foreach (var item in evolution)
            {
                int index = (int)(item.Date - fromFilter).TotalDays;
                values[index] = item.Value;
            }

            RideGroupInfo rides = new RideGroupInfo()
            {
                Days   = labels,
                Values = values
            };

            int ridesCount = await _ridesRepository.LastDaysRidesAsync(carrierId, fromFilter);

            int passengersCount = await _ridesRepository.LastDaysPassengersAsync(carrierId, fromFilter);

            return(new RidesAnalyticInfo()
            {
                LastDaysRides = ridesCount,
                LastDaysPassengers = passengersCount,
                RidesEvolution = rides
            });
        }