コード例 #1
0
        /// <summary>
        /// Returns true if a new reservation is created.
        /// </summary>
        public bool AddRegularFromRecurring(ReservationCollection reservations, IReservationRecurrence rr, DateTime d)
        {
            // reservations should contain cancelled reservations

            // first, find out the pattern type
            if (rr.PatternID == (int)PatternType.Weekly)
            {
                if (rr.PatternParam1 == (int)d.DayOfWeek)
                {
                    if ((d >= rr.BeginDate && rr.EndDate == null) || (d >= rr.BeginDate && d <= rr.EndDate.Value))
                    {
                        return(AddNewRecurringReservation(reservations, GetReservationData(rr, d)));
                    }
                }
            }
            else if (rr.PatternID == (int)PatternType.Monthly)
            {
                if ((d >= rr.BeginDate && rr.EndDate == null) || (d >= rr.BeginDate && d <= rr.EndDate))
                {
                    DateTime dayOfMonth = GetDate(new DateTime(d.Year, d.Month, 1), rr.PatternParam1, (DayOfWeek)rr.PatternParam2);
                    if (d.Date == dayOfMonth)
                    {
                        return(AddNewRecurringReservation(reservations, GetReservationData(rr, d)));
                    }
                }
            }

            // currently only supports two types

            return(false);
        }
コード例 #2
0
        private ReservationData GetReservationData(IReservationRecurrence rr, DateTime d)
        {
            var processInfos = GetProcessInfos(rr.RecurrenceID);
            var invitees     = GetInvitees(rr.RecurrenceID);

            var beginDateTime = new DateTime(d.Year, d.Month, d.Day, rr.BeginTime.Hour, rr.BeginTime.Minute, rr.BeginTime.Second);
            var duration      = TimeSpan.FromMinutes(rr.Duration);

            return(new ReservationData(processInfos, invitees)
            {
                AccountID = rr.AccountID,
                ResourceID = rr.ResourceID,
                ClientID = rr.ClientID,
                ActivityID = rr.ActivityID,
                RecurrenceID = rr.RecurrenceID,
                Duration = new ReservationDuration(beginDateTime, duration),
                AutoEnd = rr.AutoEnd,
                KeepAlive = rr.KeepAlive,
                Notes = rr.Notes
            });
        }