Beispiel #1
0
        protected override Span NextSpan(Pointer.Type pointer)
        {
            if (_start == null)
            {
                if (pointer == Pointer.Type.Future)
                {
                    var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday);
                    saturdayRepeater.Now = Now;
                    var nextSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Future);
                    _start = nextSaturdaySpan.Start.Value;
                }
                else if (pointer == Pointer.Type.Past)
                {
                    var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday);
                    saturdayRepeater.Now = Now.Value.AddSeconds(RepeaterDay.DAY_SECONDS);
                    var lastSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Past);
                    _start = lastSaturdaySpan.Start.Value;
                }
            }
            else
            {
                var direction = pointer == Pointer.Type.Future ? 1 : -1;
                _start = _start.Value.AddSeconds(direction * RepeaterWeek.WEEK_SECONDS);
            }

            return(new Span(
                       _start.Value,
                       _start.Value.AddSeconds(WEEKEND_SECONDS)));
        }
Beispiel #2
0
        protected override Span CurrentSpan(Pointer.Type pointer)
        {
            Span thisSpan;

            if (pointer == Pointer.Type.Future || pointer == Pointer.Type.None)
            {
                var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday);
                saturdayRepeater.Now = Now;
                var thisSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Future);
                thisSpan = new Span(
                    thisSaturdaySpan.Start.Value,
                    thisSaturdaySpan.Start.Value.AddSeconds(WEEKEND_SECONDS));
            }
            else if (pointer == Pointer.Type.Past)
            {
                var saturdayRepeater = new RepeaterDayName(DayOfWeek.Saturday);
                saturdayRepeater.Now = Now;
                var lastSaturdaySpan = saturdayRepeater.GetNextSpan(Pointer.Type.Past);
                thisSpan = new Span(
                    lastSaturdaySpan.Start.Value,
                    lastSaturdaySpan.Start.Value.AddSeconds(WEEKEND_SECONDS));
            }
            else
            {
                throw new ArgumentException("Unable to handle pointer " + pointer + ".", "pointer");
            }

            return(thisSpan);
        }
Beispiel #3
0
        protected override Span NextSpan(Pointer.Type pointer)
        {
            if (_start == null)
            {
                if (pointer == Pointer.Type.Future)
                {
                    var sundayRepeater = new RepeaterDayName(GetStartOfWeek());
                    sundayRepeater.Now = Now;
                    var nextSundaySpan = sundayRepeater
                                         .GetNextSpan(Pointer.Type.Future);
                    _start = nextSundaySpan.Start.Value;
                }
                else if (pointer == Pointer.Type.Past)
                {
                    var sundayRepeater = new RepeaterDayName(GetStartOfWeek());
                    sundayRepeater.Now = Now.Value.AddDays(1);
                    sundayRepeater.GetNextSpan(Pointer.Type.Past);
                    var lastSundaySpan = sundayRepeater
                                         .GetNextSpan(Pointer.Type.Past);
                    _start = lastSundaySpan.Start.Value;
                }
                else
                {
                    throw new ArgumentException(
                              "Unable to handle pointer " + pointer + ".",
                              "pointer");
                }
            }
            else
            {
                var direction = pointer == Pointer.Type.Future ? 1 : -1;
                _start.Value.AddDays(WEEK_DAYS * direction);
            }

            return(new Span(_start.Value, _start.Value.AddDays(WEEK_DAYS)));
        }
Beispiel #4
0
        protected override Span CurrentSpan(Pointer.Type pointer)
        {
            Span     thisWeekSpan;
            DateTime thisWeekStart;
            DateTime thisWeekEnd;
            var      now = Now.Value;

            if (pointer == Pointer.Type.Future)
            {
                thisWeekStart = Time.New(now, now.Hour).AddHours(1);
                var sundayRepeater = new RepeaterDayName(GetStartOfWeek());
                sundayRepeater.Now = now;
                var thisSundaySpan = sundayRepeater.GetCurrentSpan(Pointer.Type.Future);
                thisWeekEnd  = thisSundaySpan.Start.Value;
                thisWeekSpan = new Span(thisWeekStart, thisWeekEnd);
            }
            else if (pointer == Pointer.Type.Past)
            {
                thisWeekEnd = now;
                var sundayRepeater = new RepeaterDayName(GetStartOfWeek());
                sundayRepeater.Now = now;
                var lastSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Past);
                thisWeekStart = lastSundaySpan.Start.Value;
                thisWeekSpan  = new Span(thisWeekStart, thisWeekEnd);
            }
            else if (pointer == Pointer.Type.None)
            {
                var sundayRepeater = new RepeaterDayName(GetStartOfWeek());
                sundayRepeater.Now = now;
                var lastSundaySpan = sundayRepeater.GetNextSpan(Pointer.Type.Past);
                thisWeekStart = lastSundaySpan.Start.Value;
                thisWeekEnd   = thisWeekStart.AddDays(WEEK_DAYS);
                thisWeekSpan  = new Span(thisWeekStart, thisWeekEnd);
            }
            else
            {
                throw new ArgumentException("Unable to handle pointer " + pointer + ".", "pointer");
            }

            return(thisWeekSpan);
        }