// TODO: HIGH: I think the decision to go with events / series etc makes it impossible to use entities here (or
        public override IEnumerable <DateTime> Occur(RepeatPeriod repeatPeriod, DateTime eventStart, DateTime repeatFrom, DateTime repeatTill)
        {
            var occurrences  = new List <DateTime>();
            var latestTime   = eventStart;
            var effectiveEnd = DateTime.Compare(repeatTill, TimeWhenFinished) < 0 ? repeatTill : TimeWhenFinished;

            while (latestTime < effectiveEnd)
            {
                if (latestTime > repeatFrom)
                {
                    occurrences.Add(latestTime);
                }

                latestTime = latestTime.Add(repeatPeriod.NextOccurence(latestTime).Subtract(latestTime));
            }

            return(occurrences);
        }
Exemple #2
0
        public override IEnumerable <DateTime> Occur(RepeatPeriod repeatPeriod, DateTime eventStart, DateTime repeatFrom, DateTime repeatTill)
        {
            var latestDate   = eventStart;
            var occurrences  = new List <DateTime>();
            var timesToOccur = MaxTimesToOccur;

            while (timesToOccur > 0 && latestDate <= repeatTill)
            {
                if (latestDate > repeatFrom)
                {
                    occurrences.Add(latestDate);
                }

                latestDate = latestDate.Add(repeatPeriod.NextOccurence(latestDate).Subtract(latestDate));
                timesToOccur--;
            }

            return(occurrences);
        }
        public override IEnumerable <DateTime> Occur(RepeatPeriod repeatPeriod, DateTime eventStart, DateTime repeatFrom, DateTime repeatTill)
        {
            var occurrences = new List <DateTime>();
            var latestTime  = eventStart;

            // TODO: HIGH : Not very readable code. I would try to hint the reader that we are trying to find the start time
            // for generating occurances. Possibly encapsulate the logic in RepeatPeriod to find the closest occurance to a given date and start from there.

            while (latestTime < repeatTill)
            {
                if (latestTime > repeatFrom)
                {
                    occurrences.Add(latestTime);
                }

                latestTime = latestTime.Add(repeatPeriod.NextOccurence(latestTime).Subtract(latestTime));
            }

            return(occurrences);
        }