Beispiel #1
0
        public async Task <List <BaseChartDataResponseDto> > GetChartData(BaseChartDataRequestDto request)
        {
            var dateRequest = request as VerticalBarChartRequestDto;
            var date        = new DateTime(dateRequest.Year, 1, 1);
            var allExpenses = await _expenseRepository.GetByDates(date.StartOfYear(), date.EndOfYear(), request.WalletId.ToDeobfuscated());

            var groupedByTypes = allExpenses.GroupBy(x => x.Type);
            var monthList      = GetMonthList();

            var list = new List <BaseChartDataResponseDto>();

            foreach (var typeGroup in groupedByTypes)
            {
                var verticalBarData = new VerticalBarChartDataResponseDto
                {
                    Labels = new List <string>(),
                    Points = new List <decimal>(),
                    Type   = typeGroup.Key.GetStringValue()
                };

                var groupedByMonth = typeGroup.GroupBy(x => x.Date.Month).OrderBy(x => x.Key).ToList();
                foreach (var month in monthList)
                {
                    var groupedMonth = groupedByMonth.FirstOrDefault(x => x.Key == month);
                    verticalBarData.Labels.Add(DateTimeFormatInfo.CurrentInfo.GetMonthName(month));
                    verticalBarData.Points.Add(Math.Round(groupedMonth?.Sum(x => x.Price) ?? 0, 2));
                }

                list.Add(verticalBarData);
            }

            return(list);
        }
Beispiel #2
0
        public async Task <List <BaseChartDataResponseDto> > GetChartData(BaseChartDataRequestDto baseRequest)
        {
            var dateTimeRange        = baseRequest as DateTimeRangeChartDataRequestDto;
            var allExpensesFromRange = await _expenseRepository.GetByDates(dateTimeRange.From.Value, dateTimeRange.To.Value, dateTimeRange.WalletId.ToDeobfuscated());

            var groupedByTypes = allExpensesFromRange.GroupBy(x => x.Type);

            var list = new List <BaseChartDataResponseDto>();

            foreach (var typeGroup in groupedByTypes)
            {
                var pieChartData = new CategoryPieChartDataResponseDto
                {
                    Labels = new List <string>(),
                    Points = new List <decimal>(),
                    Type   = typeGroup.Key.GetStringValue()
                };

                var groupedByCategory = typeGroup.GroupBy(x => x.Category);
                foreach (var groupedCategory in groupedByCategory)
                {
                    pieChartData.Labels.Add(groupedCategory.Key.GetStringValue());
                    pieChartData.Points.Add(Math.Round(groupedCategory.Sum(x => x.Price), 2));
                }

                list.Add(pieChartData);
            }

            return(list);
        }
        public async Task<List<BaseChartDataResponseDto>> GetData(BaseChartDataRequestDto request, ChartType type, string userId)
        {
            var hasPermission = await _permissionService.HasUserAccess(request.WalletId, userId);

            if (!hasPermission)
            {
                return new List<BaseChartDataResponseDto>();
            }

            var provider = _providers[type];

            return await provider.GetChartData(request);
        }
Beispiel #4
0
        private async Task <IActionResult> GetChartData(BaseChartDataRequestDto request, ChartType chartType)
        {
            var result = await _chartDataProviderFactory.GetData(request, chartType, UserId);

            return(Ok(result));
        }