예제 #1
0
        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);
        }