public decimal GetTotalSpentAmount(List <Income> income, ExpenseSummaryTimePeriod timePeriod) { var startDate = timePeriod.GetStartDate(); var endDate = timePeriod.GetEndDate(); return(GetTotalSpentAmount(income, startDate, endDate)); }
public static DateTime GetStartDate(this ExpenseSummaryTimePeriod timePeriod, DateTime?minDate = null) { var date = DateTime.UtcNow.AddHours(-6).Date; switch (timePeriod) { case ExpenseSummaryTimePeriod.Today: break; case ExpenseSummaryTimePeriod.ThisWeek: while (date.DayOfWeek != DayOfWeek.Saturday) { date = date.AddDays(-1); } break; case ExpenseSummaryTimePeriod.Last7Days: date = date.AddDays(-7); break; case ExpenseSummaryTimePeriod.ThisMonth: date = new DateTime(date.Date.Year, date.Month, 1); break; case ExpenseSummaryTimePeriod.LastMonth: date = new DateTime(date.Year, date.Month, 1).AddMonths(-1); break; case ExpenseSummaryTimePeriod.Past30Days: date = date.AddDays(-30); break; case ExpenseSummaryTimePeriod.ThisYear: date = new DateTime(date.Year, 1, 1); break; case ExpenseSummaryTimePeriod.LastYear: date = new DateTime(date.Year, 1, 1).AddYears(-1); break; case ExpenseSummaryTimePeriod.AllTime: date = (minDate ?? DateTime.MinValue).Date; break; default: throw new Exception($"{timePeriod} is not implemented yet."); } return(date); }
public IActionResult ExpenseSummary(ExpenseSummaryTimePeriod TimePeriod) { var accountId = HttpContext.Session.Get <long>(SessionHelper.SessionKeyAccountId); if (accountId == default) { return(RedirectToAction("Login", "Account", new { id = LoginHelper.BudgetApp })); } var model = GetExpenseSummary(accountId, TimePeriod); model.SetBaseViewModel(accountId); return(View(SettingsHelper.GetExpenseControllerViewPath("ExpenseSummary"), model)); }
public ExpenseSummaryModel(List <Expense> expenses, ExpenseSummaryTimePeriod timePeriod, bool hasSharedAccount) { TimePeriod = timePeriod == ExpenseSummaryTimePeriod.Default ? ExpenseSummaryTimePeriod.Today : timePeriod; var min = expenses.Any() ? (DateTime?)expenses.Min(e => e.SpentDate) : null; var max = expenses.Any() ? (DateTime?)expenses.Max(e => e.SpentDate) : null; StartDate = TimePeriod.GetStartDate(min); EndDate = TimePeriod.GetEndDate(max); Expenses = expenses.Where(e => e.SpentDate >= StartDate && e.SpentDate <= EndDate.AddDays(1).AddSeconds(-1)).ToList(); ColumnNames = new List <string> { "Store", "Category", "Amount", "SpentDate" }; HasSharedAccount = hasSharedAccount; }
public ExpenseSummaryModel GetExpenseSummary(long accountId, ExpenseSummaryTimePeriod timePeriod) { var expenses = ExpenseRepository.GetAccountExpenses(accountId); var hasSharedAccount = AccountHelper.HasSharedAccount(accountId); if (timePeriod == ExpenseSummaryTimePeriod.Default) { var accountSetting = SettingsHelper.GetExpenseSummarySettings(accountId); timePeriod = accountSetting.Settings.Any(s => s.ContextValue == SettingsHelper.TimePeriodSettingValue) ? accountSetting.Settings.Single(s => s.ContextValue == SettingsHelper.TimePeriodSettingValue).Data : ExpenseSummaryTimePeriod.Today; } var model = new ExpenseSummaryModel(expenses, timePeriod, hasSharedAccount); return(model); }