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); }
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); } }
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; }
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()); }
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; }
public BreakSchedule(TvBreak tvBreak, List <AdvertisementTask> order) : this(tvBreak) { SubsituteOrder(order); }
public BreakSchedule(TvBreak tvBreak) { BreakData = tvBreak; }