/// <summary> /// Creates the years. /// </summary> /// <param name="slice">The slice.</param> /// <param name="date">The minimum date. Any date earlier that this will not be incorporated if not affected.</param> private void CreateYears(AllTimeSlice slice, DateTime date) { foreach (var year in _dateCalculationService.GetInvolvedYears(slice.Start, slice.End)) { //Skip earlier years if (year < date.Year) { continue; } var startOfYear = _dateCalculationService.GetStartAndEndDateOfYear(year, out DateTime endOfYear); var yearSlice = new YearTimeSlice(startOfYear, endOfYear, year); CreateQuarters(yearSlice, date); slice.AddSlice(yearSlice); } }
/// <summary> /// Creates the quarters. /// </summary> /// <param name="slice">The slice.</param> /// <param name="date">The minimum date. Any date earlier that this will not be incorporated if not affected.</param> private void CreateQuarters(YearTimeSlice slice, DateTime date) { var affectedQuarter = _dateCalculationService.GetQuarterOfDate(date); for (var i = 0; i <= 3; i++) { var month = (i * 3) + 1; var startOfQuarter = _dateCalculationService.GetStartAndEndDateOfQuarter(new DateTime(slice.Start.Year, month, 1), out DateTime endOfQuater, out int quarter); if (slice.Start.Year != date.Year || slice.Start.Year == date.Year && quarter >= affectedQuarter) { var quarterSlice = new QuarterTimeSlice(startOfQuarter, endOfQuater, quarter); //Note: Not necessary now: CreateMonths(quarterSlice, date); slice.AddSlice(quarterSlice); } } }