@page "/media/movies/{MovieId:int}" @using ErsatzTV.Application.Movies @using ErsatzTV.Application.Movies.Queries @using ErsatzTV.Application.MediaCollections @using ErsatzTV.Application.MediaCollections.Commands @inject IMediator Mediator @inject IDialogService Dialog @inject NavigationManager NavigationManager
@if (!string.IsNullOrWhiteSpace(_movie.FanArt)) { fan art }
@if (!string.IsNullOrWhiteSpace(_movie.Poster)) { movie poster }
@_movie.Title @_movie.Year @if (!string.IsNullOrWhiteSpace(_movie.Plot)) { @_movie.Plot }
Add To Collection
@if (_movie.Studios.Any()) { Studios
@foreach (string studio in _movie.Studios.OrderBy(s => s)) { }
} @if (_movie.Genres.Any()) { Genres
@foreach (string genre in _movie.Genres.OrderBy(g => g)) { }
} @if (_movie.Tags.Any()) { Tags
@foreach (string tag in _movie.Tags.OrderBy(t => t)) { }
}
@code { [Parameter] public int MovieId { get; set; } private MovieViewModel _movie; protected override Task OnParametersSetAsync() => RefreshData(); private Task RefreshData() => Mediator.Send(new GetMovieById(MovieId)).IfSomeAsync(vm => _movie = vm); private async Task AddToCollection() { var parameters = new DialogParameters { { "EntityType", "movie" }, { "EntityName", _movie.Title } }; 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 AddMovieToCollection(collection.Id, MovieId)); NavigationManager.NavigateTo($"/media/collections/{collection.Id}"); } } }