private SummaryModel GetSummaryModel(long accountId, SummaryTimePeriod timePeriod) { var expenses = ExpenseRepository.GetAccountExpenses(accountId); var settings = SettingsHelper.GetCategorySettings(accountId); var model = new SummaryModel(timePeriod, expenses.Min(e => e.SpentDate), expenses.Max(e => e.SpentDate)); expenses = expenses.Where(e => e.SpentDate >= model.StartDate && e.SpentDate <= model.EndDate.AddDays(1).AddSeconds(-1)).ToList(); return(model); }
public SummaryModel(SummaryTimePeriod timePeriod, DateTime?minDate = null, DateTime?maxDate = null) { Table = new List <SummaryModelTable>(); TimePeriod = timePeriod; switch (TimePeriod) { case SummaryTimePeriod.ThisWeek: StartDate = DateTime.UtcNow.AddHours(-6).Date; while (StartDate.DayOfWeek != DayOfWeek.Saturday) { StartDate = StartDate.AddDays(-1); } EndDate = StartDate.AddDays(7); break; case SummaryTimePeriod.Last7Days: StartDate = DateTime.UtcNow.AddHours(-6).Date.AddDays(-7); EndDate = DateTime.UtcNow.AddHours(-6).Date; break; case SummaryTimePeriod.ThisMonth: StartDate = new DateTime(DateTime.UtcNow.AddHours(-6).Date.Year, DateTime.UtcNow.AddHours(-6).Date.Month, 1); EndDate = StartDate.AddMonths(1).AddDays(-1); break; case SummaryTimePeriod.LastMonth: StartDate = new DateTime(DateTime.UtcNow.AddHours(-6).Date.Year, DateTime.UtcNow.AddHours(-6).Date.Month, 1).AddMonths(-1); EndDate = StartDate.AddMonths(1).AddDays(-1); break; case SummaryTimePeriod.Past30Days: StartDate = DateTime.UtcNow.AddHours(-6).Date.AddDays(-30); EndDate = DateTime.UtcNow.AddHours(-6).Date; break; case SummaryTimePeriod.ThisYear: StartDate = new DateTime(DateTime.UtcNow.AddHours(-6).Date.Year, 1, 1); EndDate = StartDate.AddYears(1).AddDays(-1); break; case SummaryTimePeriod.LastYear: StartDate = new DateTime(DateTime.UtcNow.AddHours(-6).Date.Year, 1, 1).AddYears(-1); EndDate = StartDate.AddYears(1).AddDays(-1); break; case SummaryTimePeriod.AllTime: StartDate = (minDate ?? DateTime.MinValue).Date; EndDate = (maxDate ?? DateTime.MaxValue).Date; break; default: throw new Exception($"{TimePeriod} is not implemented yet."); } }