@page "/media/tv/seasons/{SeasonId:int}" @using ErsatzTV.Application.Television @using ErsatzTV.Application.Television.Queries @using ErsatzTV.Application.MediaCards @using ErsatzTV.Application.MediaCards.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands @using ErsatzTV.Application.ProgramSchedules @using ErsatzTV.Application.ProgramSchedules.Commands @inject IMediator Mediator @inject IDialogService Dialog @inject NavigationManager NavigationManager
@if (!string.IsNullOrWhiteSpace(_season.Poster)) { }
@_season.Title @_season.Year @_season.Plot
Add To Collection Add To Schedule
@foreach (TelevisionEpisodeCardViewModel card in _data.Cards) { } @code { [Parameter] public int SeasonId { get; set; } private TelevisionSeasonViewModel _season; private int _pageSize => 100; private readonly int _pageNumber = 1; private TelevisionEpisodeCardResultsViewModel _data; private List _breadcrumbs; protected override Task OnParametersSetAsync() => RefreshData(); private async Task RefreshData() { await Mediator.Send(new GetTelevisionSeasonById(SeasonId)) .IfSomeAsync(vm => _season = vm); _data = await Mediator.Send(new GetTelevisionEpisodeCards(SeasonId, _pageNumber, _pageSize)); _breadcrumbs = new List { new("TV Shows", "/media/tv/shows"), new($"{_season.Title} ({_season.Year})", $"/media/tv/shows/{_season.ShowId}"), new(_season.Plot, null, true) }; } private async Task AddToCollection() { var parameters = new DialogParameters { { "EntityType", "season" }, { "EntityName", $"{_season.Title} - {_season.Plot}" } }; var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; IDialogReference dialog = Dialog.Show("Add To Collection", parameters, options); DialogResult result = await dialog.Result; if (!result.Cancelled && result.Data is MediaCollectionViewModel collection) { await Mediator.Send(new AddTelevisionSeasonToSimpleMediaCollection(collection.Id, SeasonId)); NavigationManager.NavigateTo($"/media/collections/{collection.Id}"); } } private async Task AddToSchedule() { var parameters = new DialogParameters { { "EntityType", "season" }, { "EntityName", $"{_season.Title} - {_season.Plot}" } }; var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.ExtraSmall }; IDialogReference dialog = Dialog.Show("Add To Schedule", parameters, options); DialogResult result = await dialog.Result; if (!result.Cancelled && result.Data is ProgramScheduleViewModel schedule) { await Mediator.Send(new AddProgramScheduleItem(schedule.Id, StartType.Dynamic, null, PlayoutMode.One, ProgramScheduleItemCollectionType.TelevisionSeason, null, null, SeasonId, null, null, null)); NavigationManager.NavigateTo($"/schedules/{schedule.Id}/items"); } } }