示例#1
0
        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);
        }