public GetAverageExpenseReportResultDto Execute(GetAverageExpenseReportDto dto) { return(new GetAverageExpenseReportResultDto { Status = true, Object = unit.Expense.GetAverageExpenseReport(dto) }); }
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) }); }