public static bool CreateProgram(TvDatabase.Program program, int scheduleType, out ISchedule currentSchedule) { ServiceRegistration.Get <ILogger>().Debug("SlimTvService3.CreateProgram: program = {0}", program.ToString()); TvDatabase.Schedule schedule; TvDatabase.Schedule saveSchedule = null; TvBusinessLayer layer = new TvBusinessLayer(); if (IsRecordingProgram(program, out schedule, false)) // check if schedule is already existing { ServiceRegistration.Get <ILogger>().Debug("SlimTvService3.CreateProgram - series schedule found ID={0}, Type={1}", schedule.IdSchedule, schedule.ScheduleType); ServiceRegistration.Get <ILogger>().Debug(" - schedule= {0}", schedule.ToString()); if (schedule.IsSerieIsCanceled(schedule.GetSchedStartTimeForProg(program), program.IdChannel)) { // Delete the cancelled schedule. saveSchedule = schedule; schedule = new TvDatabase.Schedule(program.IdChannel, program.Title, program.StartTime, program.EndTime) { PreRecordInterval = saveSchedule.PreRecordInterval, PostRecordInterval = saveSchedule.PostRecordInterval, ScheduleType = (int)ScheduleRecordingType.Once }; } } else { ServiceRegistration.Get <ILogger>().Debug("SlimTvService3.CreateProgram - no series schedule"); // No series schedule => create it schedule = new TvDatabase.Schedule(program.IdChannel, program.Title, program.StartTime, program.EndTime) { PreRecordInterval = Int32.Parse(layer.GetSetting("preRecordInterval", "5").Value), PostRecordInterval = Int32.Parse(layer.GetSetting("postRecordInterval", "5").Value), ScheduleType = scheduleType }; } if (saveSchedule != null) { ServiceRegistration.Get <ILogger>().Debug("SlimTvService3.CreateProgram - UnCancelSerie at {0}", program.StartTime); saveSchedule.UnCancelSerie(program.StartTime, program.IdChannel); saveSchedule.Persist(); currentSchedule = saveSchedule.ToSchedule(); } else { ServiceRegistration.Get <ILogger>().Debug("SlimTvService3.CreateProgram - create schedule = {0}", schedule.ToString()); schedule.Persist(); currentSchedule = schedule.ToSchedule(); } return(currentSchedule != null); }