Example #1
0
        public async Task <ChartListDto> GetChartData(ChartRequestDto request)
        {
            var transformedGroup    = TransformDateRange(request.Granuality, request.DateRange);
            var resultChartElements = GroupAndSumGateUsagesByDateRange(transformedGroup, await GetData(request), request.Granuality);

            return(new ChartListDto
            {
                UserId = request.UserId,
                Granuality = request.Granuality,
                Type = request.Type,
                Elements = resultChartElements
            });
        }
Example #2
0
        public async Task <ServiceResult <ChartListDto> > GetDataAsync(ChartRequestDto request)
        {
            switch (request.Type)
            {
            case ChartType.GateOpenings:
                return(ServiceResult <ChartListDto> .Success(await _gateUsagesChartDataProvider.GetChartData(request)));

            case ChartType.Orders:
                return(ServiceResult <ChartListDto> .Success(await _ordersChartDataProvider.GetChartData(request)));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Example #3
0
        public async Task <ServiceResult <Dictionary <ChartType, ChartListDto>, ChartRequestDto> > GetDefaultDataAsync(int userId)
        {
            var chartRequest = new ChartRequestDto(DateTime.Today.AddDays(-6), DateTime.Today.AddDays(1).AddSeconds(-1),
                                                   ChartType.GateOpenings, ChartGranuality.PerDay, userId);
            var gateOpeningsData = await GetDataAsync(chartRequest);

            chartRequest.Type = ChartType.Orders;
            var orderData = await GetDataAsync(chartRequest);

            var resultDictionary = new Dictionary <ChartType, ChartListDto>()
            {
                { ChartType.GateOpenings, gateOpeningsData.IsValid ? gateOpeningsData.Result : new ChartListDto() },
                { ChartType.Orders, orderData.IsValid ? orderData.Result : new ChartListDto() }
            };

            return(ServiceResult <Dictionary <ChartType, ChartListDto>, ChartRequestDto> .Success(resultDictionary, chartRequest));
        }
Example #4
0
 protected abstract Task <Dictionary <DateTime, int> > GetData(ChartRequestDto request);
        protected override async Task <Dictionary <DateTime, int> > GetData(ChartRequestDto request)
        {
            var orders = await _ordersRepository.GetAllAsync(x => x.UserId == request.UserId && x.Date >= request.DateRange.StartDate && x.Date <= request.DateRange.EndDate);

            return(orders.GroupBy(x => x.Date.Date).ToDictionary(x => x.Key, x => x.Count()));
        }