Пример #1
0
        private void CreateChannelBreaks(Channel channel)
        {
            TvBreak currentBreak = null;

            foreach (BaseActivity activity in channel.Activities)
            {
                if (activity is TvProgram)
                {
                    TvProgram program = activity as TvProgram;
                    AddBreakToChannelIfNotEmpty(currentBreak, channel);
                    currentBreak = new TvBreak()
                    {
                        StartTime = program.EndTime,
                    };
                }
                else
                {
                    if (currentBreak == null)
                    {
                        currentBreak = new TvBreak()
                        {
                            StartTime = activity.StartTime,
                        };
                    }
                    currentBreak.Activities.Add(activity);
                    if (activity is AdvertisementInstance)
                    {
                        currentBreak.AddAdvertisement(activity as AdvertisementInstance);
                    }
                }
            }
            AddBreakToChannelIfNotEmpty(currentBreak, channel);
        }
Пример #2
0
 private void AddBreakToChannelIfNotEmpty(TvBreak tvBreak, Channel channel)
 {
     if (tvBreak != null && tvBreak.Advertisements.Count > 0)
     {
         tvBreak.ID      = lastBreakId++;
         tvBreak.EndTime = tvBreak.Advertisements.Last().EndTime;
         RecalculateSpanToUnits(tvBreak);
         channel.AddBreak(tvBreak);
     }
 }
Пример #3
0
 private void AssignBreakToDayPeriod(TvBreak tvBreak)
 {
     if (tvBreak.StartTime.TimeOfDay <= nightsEnd || tvBreak.StartTime.TimeOfDay >= nightsStart)
     {
         nightlyBreaks.Add(tvBreak);
     }
     else
     {
         dailyBreaks.Add(tvBreak);
     }
 }
 public void AssesBreak(BreakSchedule schedule)
 {
     _schedule        = schedule;
     _breakData       = schedule.BreakData;
     _taksAssessments = new Dictionary <int, TaskScore>();
     _unitsFromStart  = 0;
     for (int i = 0; i < _schedule.Count; i++)
     {
         CalculateAdConstraints(_schedule.Order[i], i);
         _unitsFromStart += _currentAd.AdSpanUnits;
     }
     schedule.Scores = _taksAssessments;
 }
Пример #5
0
        private void InsertInRandomBreak(TaskScore taskData)
        {
            int           breakNum = Random.Next(Instance.Breaks.Count);
            TvBreak       tvBreak  = Instance.Breaks.Values.ToList()[breakNum];
            BreakSchedule schedule = Solution.AdvertisementsScheduledOnBreaks[tvBreak.ID];
            int           position = Random.Next(schedule.Count + 1);
            Insert        insert   = new Insert()
            {
                TvBreak            = schedule.BreakData,
                AdvertisementOrder = taskData.AdConstraints,
                Position           = position,
                Instance           = Instance,
                Solution           = Solution,
            };

            insert.Asses();
            insert.Execute();
            Reporter.AddEntry(insert.GenerateReportEntry());
        }
Пример #6
0
        private void AddBreakViewershipFunction(TvBreak tvBreak)
        {
            ViewershipFunction    function = new ViewershipFunction();
            AdvertisementInstance lastAd   = new AdvertisementInstance();

            foreach (BaseActivity activity in tvBreak.Activities)
            {
                ViewershipSpan currentSpan = null;
                if (activity is Autopromotion autopromotion)
                {
                    currentSpan = new ViewershipSpan(autopromotion);
                }
                if (activity is AdvertisementInstance advertisement)
                {
                    currentSpan = new ViewershipSpan(advertisement);
                }
                function.AddTimeInterval(currentSpan);
            }
            tvBreak.MainViewsFunction = function;
        }
Пример #7
0
 public BreakSchedule(TvBreak tvBreak, List <AdvertisementTask> order) : this(tvBreak)
 {
     SubsituteOrder(order);
 }
Пример #8
0
 public BreakSchedule(TvBreak tvBreak)
 {
     BreakData = tvBreak;
 }