private async Task <Either <Error, Unit> > EnsureScheduleExistsAsync(CancellationToken cancellationToken) { var programScheduleApi = new ProgramScheduleApi(_serverUrl); Option <ProgramScheduleViewModel> maybeExisting = await programScheduleApi .ApiSchedulesGetAsync(cancellationToken) .Map(list => list.SingleOrDefault(schedule => schedule.Name == Name)); await maybeExisting.Match( existing => { // TODO: update playback order if changed? _logger.LogInformation("Schedule {Schedule} is already present", Name); if (Reset) { return(programScheduleApi .ApiSchedulesProgramScheduleIdItemsDeleteAsync(existing.Id, cancellationToken) .Iter(_ => _logger.LogInformation("Successfully reset schedule {Schedule}", Name))); } return(Task.CompletedTask); }, () => { var data = new CreateProgramSchedule(Name, Order); return(programScheduleApi.ApiSchedulesPostAsync(data, cancellationToken) .Iter(_ => _logger.LogInformation("Successfully created schedule {Schedule}", Name))); }); return(unit); }
private async Task AddScheduleItem( int programScheduleId, int mediaCollectionId, CancellationToken cancellationToken) { var programScheduleApi = new ProgramScheduleApi(_serverUrl); var request = new AddProgramScheduleItem { ProgramScheduleId = programScheduleId, StartType = StartType, StartTime = StartTime, PlayoutMode = PlayoutMode, MediaCollectionId = mediaCollectionId, PlayoutDuration = PlayoutDuration, MultipleCount = MultipleCount, OfflineTail = OfflineTail }; await programScheduleApi.ApiSchedulesItemsAddPostAsync(request, cancellationToken); _logger.LogInformation( "Collection {Collection} has been added to schedule {Schedule}", CollectionName, ScheduleName); }
private async Task <Option <ProgramScheduleViewModel> > GetSchedule(CancellationToken cancellationToken) { var programScheduleApi = new ProgramScheduleApi(_serverUrl); return(await programScheduleApi.ApiSchedulesGetAsync(cancellationToken) .Map(list => list.SingleOrDefault(schedule => schedule.Name == ScheduleName))); }
private async ValueTask BuildPlayout(CancellationToken cancellationToken, ChannelViewModel channel) { var programScheduleApi = new ProgramScheduleApi(_serverUrl); Option <ProgramScheduleViewModel> maybeSchedule = await programScheduleApi .ApiSchedulesGetAsync(cancellationToken) .Map(list => list.SingleOrDefault(s => s.Name == ScheduleName)); await maybeSchedule.Match( schedule => SynchronizePlayoutAsync(channel.Id, schedule.Id, cancellationToken), () => { _logger.LogError("Unable to locate schedule {Schedule}", ScheduleName); return(ValueTask.CompletedTask); }); }