Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        //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);
        }
Exemplo n.º 5
0
        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);
        }