@page "/schedules"
@using ErsatzTV.Application.ProgramSchedules
@using ErsatzTV.Application.ProgramSchedules.Commands
@using ErsatzTV.Application.ProgramSchedules.Queries
@inject IDialogService _dialog
@inject IMediator _mediator
Schedules
Name
Collection Playback Order
@context.Name
@context.MediaCollectionPlaybackOrder
Add Schedule
@if (_selectedScheduleItems != null)
{
@_selectedSchedule.Name Items
Start Time
Collection
Playout Mode
@(context.StartType == StartType.Fixed ? context.StartTime?.ToString(@"hh\:mm") ?? string.Empty : "Dynamic")
@context.Name
@context.PlayoutMode
}
@code {
private List _schedules;
private List _selectedScheduleItems;
private ProgramScheduleViewModel _selectedSchedule;
protected override Task OnParametersSetAsync() => LoadSchedules();
private async Task ScheduleSelected(ProgramScheduleViewModel schedule)
{
_selectedSchedule = schedule;
await _mediator.Send(new GetProgramScheduleItems(schedule.Id))
.IterT(results => _selectedScheduleItems = results.OrderBy(x => x.Name).ToList());
}
private async Task DeleteSchedule(ProgramScheduleViewModel programSchedule)
{
var parameters = new DialogParameters { { "EntityType", "schedule" }, { "EntityName", programSchedule.Name } };
var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall };
IDialogReference dialog = _dialog.Show("Delete Schedule", parameters, options);
DialogResult result = await dialog.Result;
if (!result.Cancelled)
{
await _mediator.Send(new DeleteProgramSchedule(programSchedule.Id));
await LoadSchedules();
}
}
private async Task LoadSchedules() =>
_schedules = await _mediator.Send(new GetAllProgramSchedules()).Map(list => list.OrderBy(vm => vm.Name).ToList());
}