Пример #1
0
        private List <object> BuildCalendarObjects(ScheduleViewModel scheduleViewModel, DateRange calendarRange)
        {
            var calendarObjects = new List <object>();

            // if frequency is none then this is a one-time only event
            if (scheduleViewModel.FrequencyTypeOptions.Equals(FrequencyType.None))
            {
                return(BuildCalendarObjects(scheduleViewModel));
            }

            var schedule = scheduleViewModel.BuildSchedule();

            // use the calendar start date or the schedule start date whichever is later
            var start = (scheduleViewModel.StartDate > calendarRange.StartDateTime)
                ? scheduleViewModel.StartDate
                : calendarRange.StartDateTime;

            // use the calendar end date or the schedule end date whichever is earlier
            var end = (scheduleViewModel.EndDate < calendarRange.EndDateTime)
                ? scheduleViewModel.EndDate.Value
                : calendarRange.EndDateTime;

            var scheduleDateRange = new DateRange(start, end);

            // let ScheduleWidget calculate the schedule dates for us and
            // add each date to the payload for the javascript calendar
            foreach (var date in schedule.Occurrences(scheduleDateRange))
            {
                calendarObjects.Add(new
                {
                    id     = scheduleViewModel.ID,
                    title  = scheduleViewModel.Title,
                    start  = date + scheduleViewModel.StartTime,
                    end    = date + scheduleViewModel.EndTime,
                    url    = Url.Action("ScheduleOccurrence", "Example", new { id = scheduleViewModel.ID, occurrenceDate = date }),
                    allDay = false
                });
            }

            return(calendarObjects);
        }