예제 #1
0
 public GetAverageExpenseReportResultDto Execute(GetAverageExpenseReportDto dto)
 {
     return(new GetAverageExpenseReportResultDto
     {
         Status = true,
         Object = unit.Expense.GetAverageExpenseReport(dto)
     });
 }
예제 #2
0
        public AverageExpense GetAverageExpenseReport(GetAverageExpenseReportDto dto)
        {
            var years   = DateTime.Now.SubDays(-3 * 356).ToUnix();
            var expense = ctx.Expenses.Where(p => p.CreatedAt > years).ToList();

            return(new AverageExpense
            {
                LastThreeYearYears = expense.GroupBy(p => p.CreatedAt.ToDate().Year).Select(t => new ExpensePerYear {
                    Year = t.Key.ToString(), Amount = t.ToList().Sum(r => r.Amount)
                }).ToList(),
                LastThreeYearMonths = expense.GroupBy(p => new { Year = p.CreatedAt.ToDate().Year, Month = p.CreatedAt.ToDate().Month }).Select(t => new ExpensePerMonth {
                    MonthName = $"{t.Key.Year.ToString()}/{t.Key.Month.ToString()}", Amount = t.ToList().Sum(r => r.Amount)
                }).ToList(),
                LastThreeYearDays = expense.GroupBy(p => new { Year = p.CreatedAt.ToDate().Year, Month = p.CreatedAt.ToDate().Month, Day = p.CreatedAt.ToDate().Day }).Select(t => new ExpensePerDay {
                    DayName = $"{t.Key.Year.ToString()}/{t.Key.Month.ToString()}/{t.Key.Day.ToString()}", Amount = t.ToList().Sum(r => r.Amount)
                }).ToList(),
                TotalCount = expense.Sum(p => p.Amount)
            });
        }