示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
                }
            }
        }