public bool Save(ScheduleDTO scheduleDTO)
        {
            if (scheduleDTO.ID == 0)
            {
                scheduleDTO.ID = MockDatabase.UniqueID;
                MockDatabase.UniqueID++;
                MockDatabase.Schedules.Add(scheduleDTO);
            }
            else
            {
                var schedule = MockDatabase.Schedules.FirstOrDefault(s => s.ID == scheduleDTO.ID);

                if (schedule == null)
                    return false;

                schedule.Title = scheduleDTO.Title;
                schedule.Frequency = scheduleDTO.Frequency;
                schedule.DaysOfWeek = scheduleDTO.DaysOfWeek;
                schedule.WeeklyInterval = scheduleDTO.WeeklyInterval;
                schedule.MonthlyInterval = scheduleDTO.MonthlyInterval;
                schedule.NumberOfOccurrences = scheduleDTO.NumberOfOccurrences;
                schedule.StartDate = scheduleDTO.StartDate;
                schedule.EndDate = scheduleDTO.EndDate;
                schedule.StartTime = scheduleDTO.StartTime;
                schedule.EndTime = scheduleDTO.EndTime;
            }

            return true;
        }
        public ActionResult CreateSchedule(ScheduleDTO scheduleDTO)
        {
            // TODO: validate the DTO client-side and with FluentValidation!
            if (string.IsNullOrEmpty(scheduleDTO.Title))
            {
                return View(scheduleDTO);
            }

            var repository = new ScheduleRepository();
            repository.Save(scheduleDTO);
            return RedirectToAction("Index", "Home");
        }
        public ActionResult CreateSchedule(DateTime eventDate)
        {
            var scheduleDTO = new ScheduleDTO()
            {
                StartDate = eventDate,
                StartTime = new TimeSpan(DateTime.Now.Hour, 0, 0),
                EndTime = new TimeSpan(DateTime.Now.Hour + 1, 0, 0),
                NumberOfOccurrences = 0
            };

            LoadViewBag();
            return View(scheduleDTO);
        }
 private IEnumerable<object> GetSpecificNumberOfOccurrencesForDateRange(ScheduleDTO scheduleDTO, DateRange range)
 {
     var calendarObjects = new List<object>();
     var occurrences = scheduleDTO.Schedule.Occurrences(range).ToArray();
     for (var i = 0; i < scheduleDTO.NumberOfOccurrences; i++)
     {
         var date = occurrences.ElementAtOrDefault(i);
         calendarObjects.Add(new
         {
             id = scheduleDTO.ID,
             title = scheduleDTO.Title,
             start = ToUnixTimestamp(date + scheduleDTO.StartTime),
             end = ToUnixTimestamp(date + scheduleDTO.EndTime),
             url = Url.Action("ScheduleOccurrence", "Home", new { id = scheduleDTO.ID, occurrenceDate = date }),
             allDay = false
         });
     }
     return calendarObjects;
 }
        private IEnumerable<object> GetAllOccurrencesForDateRange(ScheduleDTO scheduleDTO, DateRange range)
        {
            var calendarObjects = new List<object>();  
            foreach (var date in scheduleDTO.Schedule.Occurrences(range))
            {
                calendarObjects.Add(new
                {
                    id = scheduleDTO.ID,
                    title = scheduleDTO.Title,
                    start = ToUnixTimestamp(date + scheduleDTO.StartTime),
                    end = ToUnixTimestamp(date + scheduleDTO.EndTime),
                    url = Url.Action("ScheduleOccurrence", "Home", new { id = scheduleDTO.ID, occurrenceDate = date }),
                    allDay = false
                });
            }

            return calendarObjects;
        }