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); }
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); }
private async Task <IActionResult> GetChartData(BaseChartDataRequestDto request, ChartType chartType) { var result = await _chartDataProviderFactory.GetData(request, chartType, UserId); return(Ok(result)); }