public async Task <Unit> Handle(UpdateTopSalesStatisticsCommand request, CancellationToken cancellationToken) { try { var statistics = await _saleStatisticRepository.GetSaleStatistics(); foreach (var statistic in statistics) { var sales = await _saleService.ReadSales(statistic.Criteria.Filter); statistic.Items = sales .GroupBy(x => x.AgentId) .OrderByDescending(x => x.Count()) .Take(statistic.Criteria.Count) .Select(x => new SaleStatisticItem { RealEstateAgent = x.First().AgentName, SalesCount = x.Count() }); statistic.DateUpdated = DateTime.UtcNow; await _saleStatisticRepository.UpdateSaleStatistics(statistic); } } catch (Exception e) { _logger.LogCritical(e, "Fail to update statistics!"); } return(Unit.Value); }
public async Task <GetStatisticsQueryResponse> Handle(GetStatisticsQuery request, CancellationToken cancellationToken) { var statistics = await _saleStatisticRepository.GetSaleStatistics(); return(new GetStatisticsQueryResponse { Statistics = _mapper.Map <IEnumerable <SalesStatistic>, IEnumerable <GetStatisticsQueryResponseStatistic> >(statistics) }); }