private async Task <IEnumerable <ProgramScheduleItemViewModel> > PersistItems( ReplaceProgramScheduleItems request, ProgramSchedule programSchedule) { programSchedule.Items = request.Items.Map(i => BuildItem(programSchedule, i.Index, i)).ToList(); await _programScheduleRepository.Update(programSchedule); // rebuild any playouts that use this schedule foreach (Playout playout in programSchedule.Playouts) { await _channel.WriteAsync(new BuildPlayout(playout.Id, true)); } return(programSchedule.Items.Map(ProjectToViewModel)); }
private async Task <ProgramScheduleItemViewModel> PersistItem( AddProgramScheduleItem request, ProgramSchedule programSchedule) { int nextIndex = programSchedule.Items.Select(i => i.Index).DefaultIfEmpty(0).Max() + 1; ProgramScheduleItem item = BuildItem(programSchedule, nextIndex, request); programSchedule.Items.Add(item); await _programScheduleRepository.Update(programSchedule); // rebuild any playouts that use this schedule foreach (Playout playout in programSchedule.Playouts) { await _channel.WriteAsync(new BuildPlayout(playout.Id, true)); } return(ProjectToViewModel(item)); }
private async Task <ProgramScheduleViewModel> ApplyUpdateRequest( ProgramSchedule programSchedule, UpdateProgramSchedule update) { // we only need to rebuild playouts if the playback order has been modified bool needToRebuildPlayout = programSchedule.MediaCollectionPlaybackOrder != update.MediaCollectionPlaybackOrder; programSchedule.Name = update.Name; programSchedule.MediaCollectionPlaybackOrder = update.MediaCollectionPlaybackOrder; await _programScheduleRepository.Update(programSchedule); if (needToRebuildPlayout) { foreach (Playout playout in programSchedule.Playouts) { await _channel.WriteAsync(new BuildPlayout(playout.Id, true)); } } return(ProjectToViewModel(programSchedule)); }