@page "/searchmovies" @using MovieActorLookup.Models @using MovieActorLookup.Models.Movies @using System.ComponentModel.DataAnnotations @inject MovieService MovieService @rendermode InteractiveServer
Searching...
} else if (_actor != null) {@movieCharacter.Overview
Release Date: @movieCharacter.ReleaseDateEnter a movie title and character name to begin your search.
} @code { private string _movieTitle; private string _characterName; private Actor _actor; private MovieCharacter _matchedMovie; private bool _isSearching = false; private async Task SearchForActorAndCharacters() { _isSearching = true; _actor = null; _matchedMovie = null; // reset matched movie StateHasChanged(); if (!string.IsNullOrWhiteSpace(_movieTitle) && !string.IsNullOrWhiteSpace(_characterName)) { var movies = await MovieService.GetMoviesByTitle(_movieTitle); foreach (var movie in movies) { var credits = await MovieService.GetMovieCreditsByMovieId(movie.Id); foreach (var castMember in credits.Cast) { if (castMember.Character.ToLower().Contains(_characterName.ToLower())) { if (_actor == null) { _actor = new Actor(castMember.Name); int personId = castMember.Id; var filmography = await MovieService.GetActorMovieCreditsById(personId); if (filmography?.Cast != null) { foreach (var role in filmography.Cast) { var fullMovie = await MovieService.GetMovieDetailsById(role.Id); var movieCharacter = new MovieCharacter { MovieTitle = role.Title, CharacterName = role.Character, MoviePosterPath = role.PosterPath, ReleaseDate = DateTime.TryParse(fullMovie?.ReleaseDate, out var parsedDate) ? parsedDate.ToString("MM/dd/yyyy") : "N/A", Overview = fullMovie?.Overview ?? "", Franchise = fullMovie?.BelongsToCollection?.Name ?? "Standalone" }; _actor.MovieCharacters.Add(movieCharacter); if (_matchedMovie == null) { if (role.Title == movie.Title && role.Character == castMember.Character) { _matchedMovie = movieCharacter; } } } } } } } } } _isSearching = false; StateHasChanged(); } private async Task