public ReportsDto GetReports(Int32 userId) { _userId = userId; var consumptions = _consumptionRepository.GetConsumptionReport(userId); var incomes = _incomeRepository.GetIncomeReport(userId); var report = new ReportsDto() { IncomeStats = _incomeRepository.GetIncomeTypeStats(userId) .Select(x => new IncomeStatDto() { IncomeType = x.Key.Name, Sum = x.Value }).OrderByDescending(x => x.Sum).ToList(), ProductStats = GetProductStats(consumptions, userId), Months = DateTimeHelper.GetLastMonths(MonthsCount) }; var firstConsumption = _consumptionRepository.GetFirstConsumption(userId); if (firstConsumption != null) { report.TotalMonths = DateTime.Now.Month - firstConsumption.Date.Month + 1; } else { report.TotalMonths = 1; } var charts = new List <ChartDto>(); charts.Add(GetComplexChartDto(incomes, consumptions)); charts.Add(GetIncomesChartDto(incomes)); charts.Add(GetConsumptionsChartDto(consumptions)); report.Charts = charts.ToArray(); return(report); }