public async Task <ActionResult <RideMetrics> > GetRideMetrics([FromQuery] PeriodSelectionEnum selectedPeriod) { var getMessageMetricsByPeriodSelectionQuery = new GetRideMetricsByPeriodSelectionQuery() { DatePeriod = selectedPeriod, }; var result = await _mediator.Send(getMessageMetricsByPeriodSelectionQuery); if (result.Type == QueryResultTypeEnum.NotFound) { return(new NotFoundResult()); } return(new OkObjectResult(result.Result)); }
public static DateRange GetDateRangeFromPeriodSelection(PeriodSelectionEnum periodSelection) { DateRange dateRange = null; switch (periodSelection) { case PeriodSelectionEnum.AllTime: return(new DateRange() { EndDate = new DateTime(2100, 1, 1), CurrentPeriodLabel = "All Time" }); case PeriodSelectionEnum.LastYear: dateRange = new DateRange() { StartDate = new DateTime(DateTime.Now.Year - 1, 1, 1), EndDate = new DateTime(DateTime.Now.Year, 1, 1), PriorPeriodLabel = (DateTime.Now.Year - 2).ToString(), CurrentPeriodLabel = (DateTime.Now.Year - 1).ToString() }; break; case PeriodSelectionEnum.ThisYear: dateRange = new DateRange() { StartDate = new DateTime(DateTime.Now.Year, 1, 1), EndDate = new DateTime(DateTime.Now.Year + 1, 1, 1), PriorPeriodLabel = (DateTime.Now.Year - 1).ToString(), CurrentPeriodLabel = (DateTime.Now.Year).ToString() }; break; case PeriodSelectionEnum.Rolling30: var rollingStart = DateTime.Now.AddDays(-30); var rollingEnd = DateTime.Now.AddDays(1); dateRange = new DateRange() { StartDate = new DateTime(rollingStart.Year, rollingStart.Month, rollingStart.Day), EndDate = new DateTime(rollingEnd.Year, rollingEnd.Month, rollingEnd.Day), CurrentPeriodLabel = $"{rollingStart.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)} -" + $" {rollingEnd.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}" }; break; case PeriodSelectionEnum.ThisMonth: var startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); var endDate = startDate.AddMonths(1); dateRange = new DateRange() { StartDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1), EndDate = new DateTime(endDate.Year, endDate.Month, endDate.Day), PriorPeriodLabel = startDate.ToString("MMM yyyy", CultureInfo.InvariantCulture), CurrentPeriodLabel = endDate.ToString("MMM yyyy", CultureInfo.InvariantCulture) }; break; } var daysBetweenDates = (dateRange.EndDate - dateRange.StartDate).Value.TotalDays * -1; dateRange.PreviousPeriodStartDate = dateRange.StartDate.Value.AddDays(daysBetweenDates); dateRange.PreviousPeriodEndDate = dateRange.EndDate.AddDays(daysBetweenDates); if (periodSelection == PeriodSelectionEnum.Rolling30) { dateRange.PriorPeriodLabel = $"{dateRange.PreviousPeriodStartDate.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)} -" + $" {dateRange.PreviousPeriodEndDate.Value.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture)}"; } return(dateRange); }