Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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)
            });
        }