private PageGroupGenerator(MMUnit mmUnitSource, RingPlayerDb targetPlayerDb) { MMUnitSource = mmUnitSource; TargetPlayerDb = targetPlayerDb; }
double CreateScheduledPagesFromMMUnit(MMUnit mmunit, double relativeStartSecond, ref List<PageSchedule> lastInsertedSchedules, MMSlot slot) { PageGroup pageGroup = PageGroupGenerator.GetOrCreatePageGroup(mmunit, TargetDb); Guid pageGroupScheduledId = Guid.NewGuid(); TimeSpan currentStartTime = TimeSpan.FromSeconds(relativeStartSecond); Page[] pages = pageGroup.Pages.OrderBy(x => x.SortOrder).ToArray(); for (int i = 0; i < pages.Length; i++) { Page page = pages[i]; if (currentStartTime > TimeSpan.FromDays(1)) continue; PageSchedule pageSchedule = TargetDb.PageSchedules.NewRow(); pageSchedule.Id = Guid.NewGuid(); pageSchedule.StartTime = TargetDate.Date.Add(currentStartTime); pageSchedule.DiagnosticText = $"{pageGroup.Name} Seite {i + 1}"; pageSchedule.PageGroupScheduleId = pageGroupScheduledId; pageSchedule.Page = page; pageSchedule.RingMetaData = TargetRing; pageSchedule.SlotId = slot.Id; currentStartTime = currentStartTime.Add(TimeSpan.FromSeconds((double)pageSchedule.Page.ExpectedDuration)); pageSchedule.Table.Rows.Add(pageSchedule); if (lastInsertedSchedules != null) lastInsertedSchedules.Add(pageSchedule); } if (pageGroup.DurationInSeconds == 0) Debug.WriteLine($"Duration = 0 Beitrag SchreenGroup {pageGroup.Name} ({pageGroup.Id})"); return currentStartTime.TotalSeconds; }
public static PageGroup GetOrCreatePageGroup(MMUnit source, RingPlayerDb targetDb) { return new PageGroupGenerator(source, targetDb).Generate(); }
public PageGroup GeneratePageGroup(MMUnit mmUnit, RingMetaData ring) { return PageGroupGenerator.GetOrCreatePageGroup(mmUnit, ring.DataSet); }