@page "/playouts/add" @using ErsatzTV.Application.Channels @using ErsatzTV.Application.Channels.Queries @using ErsatzTV.Application.ProgramSchedules @using ErsatzTV.Application.ProgramSchedules.Queries @inject NavigationManager _navigationManager @inject ILogger _logger @inject ISnackbar _snackbar @inject IMediator _mediator
Add Playout @foreach (ChannelViewModel channel in _channels) { @($"{channel.Number} - {channel.Name}") } @foreach (ProgramScheduleViewModel schedule in _programSchedules) { @schedule.Name } Add Playout
@code { private readonly PlayoutEditViewModel _model = new(); private List _channels; private List _programSchedules; private EditContext _editContext; private ValidationMessageStore _messageStore; protected override async Task OnParametersSetAsync() { _channels = await _mediator.Send(new GetAllChannels()) .Map(list => list.OrderBy(vm => decimal.Parse(vm.Number)).ToList()); _programSchedules = await _mediator.Send(new GetAllProgramSchedules()) .Map(list => list.OrderBy(vm => vm.Name).ToList()); } protected override void OnInitialized() { _editContext = new EditContext(_model); _messageStore = new ValidationMessageStore(_editContext); } private async Task HandleSubmitAsync() { _messageStore.Clear(); if (_editContext.Validate()) { Seq errorMessage = (await _mediator.Send(_model.ToCreate())).LeftToSeq(); errorMessage.HeadOrNone().Match( error => { _snackbar.Add(error.Value, Severity.Error); _logger.LogError("Unexpected error saving playout: {Error}", error.Value); }, () => _navigationManager.NavigateTo("/playouts")); } } }