public GrouppedDateIntervals(DateTime startUtc, DateTime endUtc, EGrouppedTimeInterval grouppedTimeInterval) { _timeInterval = grouppedTimeInterval; var timeInterval = GrouppedTimeIntervalHelper.ToTimeInterval(grouppedTimeInterval); _startUtc = TimeIntervalHelper.ResetDateTime(startUtc, timeInterval); _endUtc = TimeIntervalHelper.ResetDateTime(endUtc, timeInterval); _intervals = GenerateIntervals(); }
protected override IEnumerable <DateTime> GenerateIntervals() { var intervals = new List <DateTime>(); var addOneAmountOfTimeFunction = GrouppedTimeIntervalHelper.AddOneAmountOfTimeFunction(_timeInterval); var amountOfTime = GetAmountsOfTime(); bool ComparaisonFunction(int minimum, int maximum) => _timeInterval == EGrouppedTimeInterval.Year ? minimum <= maximum : minimum < maximum; for (var startTime = _timeInterval == EGrouppedTimeInterval.Year ? DateTime.MinValue.AddYears(_startUtc.Year + 1) : DateTime.MinValue; ComparaisonFunction(amountOfTime.Minimum, amountOfTime.Maximum); startTime = addOneAmountOfTimeFunction(startTime), amountOfTime.Minimum++) { intervals.Add(startTime); } return(intervals); }
private (int Minimum, int Maximum) GetAmountsOfTime() { return((_timeInterval == EGrouppedTimeInterval.Year) ? (_startUtc.Year, _endUtc.Year) : (0, GrouppedTimeIntervalHelper.GetMaximumAmountOfTime(_timeInterval))); }
protected override bool IsBetweenInterval(DateTime interval, DateTime current) { var amountOfTimeFunction = GrouppedTimeIntervalHelper.GetAmountOfTimeFunction(_timeInterval); return(amountOfTimeFunction(current) == amountOfTimeFunction(interval)); }