public async Task <QueryResult <CallMetrics> > Handle(GetCallMetricsByPeriodSelectionQuery request, CancellationToken cancellationToken) { var dateRange = DatePeriodHelper.GetDateRangeFromPeriodSelection(request.DatePeriod); var cacheKey = $"call-{dateRange.StartDate.ToString()}-{dateRange.EndDate.ToString()}"; if (request.RefreshCache) { _cache.Remove(cacheKey); } var metrics = await _cache.GetOrCreateAsync(cacheKey, async entry => { entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours(23); return(await _callRepository.GetOverviewCallMetrics(dateRange.StartDate, dateRange.EndDate, dateRange.PreviousPeriodStartDate, dateRange.PreviousPeriodEndDate)); }); metrics.CurrentPeriodLabel = dateRange.CurrentPeriodLabel; metrics.PriorPeriodLabel = dateRange.PriorPeriodLabel; return(new QueryResult <CallMetrics>(result: metrics, type: QueryResultTypeEnum.Success)); }