Exemplo n.º 1
0
        public async Task <IActionResult> GetTopLiftInSlicedPeriod(DateTime startDate, DateTime endDate, int daysInSlice)
        {
            /* Validate input */
            if (endDate <= startDate.AddDays(daysInSlice))
            {
                return(BadRequest($"No {daysInSlice} days period between {startDate} and {endDate}"));
            }

            /* Separate period in slices and query them */
            var queries     = new List <Task <TopLiftInPeriod> >();
            var currentDate = startDate;

            while (currentDate < endDate)
            {
                queries.Add(_workoutRepository.GetTopLiftInPeriod(currentDate, currentDate = currentDate.AddDays(daysInSlice)));
            }
            List <TopLiftInPeriod> liftInPeriods = (await Task.WhenAll(queries)).ToList();

            return(Ok(liftInPeriods));
        }