public async Task <MovieDetailResponseModel> GetMovieAsync(int id) { var movie = await _movieRepository.GetByIdAsync(id); var favoriteCount = await _movieRepository.GetCountAsync(f => f.Id == id); var castList = new List <MovieDetailResponseModel.CastResponseModel>(); foreach (var cast in movie.MovieCasts) { castList.Add(new MovieDetailResponseModel.CastResponseModel { Id = cast.CastId, Gender = cast.Cast.Gender, Name = cast.Cast.Name, ProfilePath = cast.Cast.ProfilePath, TmdbUrl = cast.Cast.TmdbUrl, Character = cast.Character }); } var genreList = new List <GenreModel>(); foreach (var genre in movie.Genres) { genreList.Add(new GenreModel { Id = genre.Id, Name = genre.Name }); } MovieDetailResponseModel movieDetailResponseModel = new MovieDetailResponseModel(); var response = movieDetailResponseModel; response.Id = movie.Id; response.Title = movie.Title; response.PosterUrl = movie.PosterUrl; response.BackdropUrl = movie.BackdropUrl; response.Rating = movie.Rating; response.Overview = movie.Overview; response.Tagline = movie.Tagline; response.Budget = movie.Budget; response.Revenue = movie.Revenue; response.ImdbUrl = movie.ImdbUrl; response.TmdbUrl = movie.TmdbUrl; response.ReleaseDate = movie.ReleaseDate; response.RunTime = movie.RunTime; response.Price = movie.Price; response.FavoritesCount = favoriteCount; response.Casts = castList; response.Genres = genreList; return(response); }
public async Task <MovieDetailResponseModel> GetMovieByIdAsync(int id) { var movie = await _movieRepository.GetByIdAsync(id); if (movie == null) { throw new Exception("Movie not found"); } var genres = new List <GenreResponseModel>(); var castofmovie = new List <CastResponseModel>(); foreach (var cast in movie.MovieCasts) { castofmovie.Add(new CastResponseModel { Id = cast.CastId, Name = cast.Cast.Name, Character = cast.Character, ProfilePath = cast.Cast.ProfilePath }); } foreach (var genre in movie.Genres) { genres.Add(new GenreResponseModel { Id = genre.Id, Name = genre.Name, }); } var result = new MovieDetailResponseModel { Id = movie.Id, Budget = movie.Budget, Title = movie.Title, Tagline = movie.Tagline, Overview = movie.Overview, RunTime = movie.RunTime, ReleaseDate = movie.ReleaseDate, BackdropUrl = movie.BackdropUrl, PosterUrl = movie.PosterUrl, Price = movie.Price, Rating = movie.Rating, Genres = genres, Casts = castofmovie }; return(result); }
public async Task <IActionResult> Get(int id) { var model = new MovieDetailResponseModel { MovieDetail = await _movieRepo.GetMovieDetail(id) }; if (model.MovieDetail == null) { return(NotFound(id)); } return(Ok(model)); }
//api/Movies/{id} public async Task <MovieDetailResponseModel> GetMovieByIdAsync(int id) { var movie = await _movieRepository.GetByIdAsync(id); var genres = new List <GenreResponseModel>(); foreach (var genre in movie.Genre) { genres.Add(new GenreResponseModel { Id = genre.Id, Name = genre.Name, }); } var casts = new List <MovieDetailResponseModel.CastResponseModel>(); foreach (var cast in movie.MovieCasts) { casts.Add(new MovieDetailResponseModel.CastResponseModel { Id = cast.Cast.Id, Name = cast.Cast.Name, Gender = cast.Cast.Gender, TmdbUrl = cast.Cast.TmdbUrl, ProfilePath = cast.Cast.ProfilePath, Character = cast.Character, }); } var result = new MovieDetailResponseModel { Id = movie.Id, Budget = movie.Budget, Title = movie.Title, Tagline = movie.Tagline, Overview = movie.Overview, RunTime = movie.RunTime, ReleaseDate = movie.ReleaseDate.Value, Revenue = movie.Revenue, BackdropUrl = movie.BackdropUrl, PosterUrl = movie.PosterUrl, Price = movie.Price, Rating = movie.Rating, Genres = genres, Casts = casts }; return(result); }
public async Task <MovieDetailResponseModel> GetMovieById(int movieId, int?userId = null) { var movie = await _movieRepository.GetByIdAsync(movieId); if (movie == null) { throw new Exception("Movie not found"); } var response = new MovieDetailResponseModel { Id = movie.Id, Title = movie.Title, PosterUrl = movie.PosterUrl, Tagline = movie.Tagline, RunTime = movie.RunTime, Rating = movie.Rating, CreatedDate = movie.CreatedDate, Price = movie.Price, Overview = movie.Overview, Budget = movie.Budget, Revenue = movie.Revenue, Genres = movie.MovieGenres?.Select(mg => new GenreResponseModel { Id = mg.GenreId, Name = mg.Genre.Name }), // Casts = movie.MovieCasts?.Select(mc => new CastOverviewResponseModel{Id = mc.CastId, Name = mc.Cast.Name, Character = mc.Character, ProfilePath = mc.Cast.ProfilePath}) }; var casts = await _movieCastRepository.GetCastsByMovieIdAsync(movieId); response.Casts = casts.Select(mc => new CastOverviewResponseModel { Id = mc.CastId, Name = mc.Cast.Name, Character = mc.Character, ProfilePath = mc.Cast.ProfilePath }); // Check if the user is login if (userId != null) { response.IsFavoriteByUser = await _favoriteRepository.GetExistsAsync(f => f.UserId == userId && f.MovieId == movieId); response.IsPurchasedByUser = await _purchaseRepository.GetExistsAsync(f => f.UserId == userId && f.MovieId == movieId); } return(response); }