コード例 #1
0
        public decimal GetTotalSpentAmount(List <Income> income, ExpenseSummaryTimePeriod timePeriod)
        {
            var startDate = timePeriod.GetStartDate();
            var endDate   = timePeriod.GetEndDate();

            return(GetTotalSpentAmount(income, startDate, endDate));
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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);
        }