示例#1
0
        public async Task <MovieDetailsResponseModel> GetMovieDetailByMovie(int id)
        {
            var movieDetail = await _movieRepository.GetMovieDetailById(id);

            if (movieDetail == null)
            {
                throw new NotFoundException("Movie", id);
            }

            // for genre
            var genres = new List <GenreModel>();

            foreach (var genre in movieDetail.Genres)
            {
                genres.Add(new GenreModel
                {
                    Id   = genre.Id,
                    Name = genre.Name
                });
            }

            // for cast detail
            var casts = new List <CastResponseModel>();

            foreach (var item in movieDetail.MovieCasts)
            {
                casts.Add(new CastResponseModel
                {
                    Id          = item.Casts.Id,
                    Name        = item.Casts.Name,
                    Gender      = item.Casts.Gender,
                    ProfilePath = item.Casts.ProfilePath,
                    Character   = item.Character
                });
            }


            // for movie facts +genres + cast detail
            var response = new MovieDetailsResponseModel()
            {
                Id          = movieDetail.Id,
                Title       = movieDetail.Title,
                PosterUrl   = movieDetail.PosterUrl,
                BackdropUrl = movieDetail.BackdropUrl,
                Rating      = movieDetail.Rating,
                Overview    = movieDetail.Overview,
                Tagline     = movieDetail.Tagline,
                Budget      = movieDetail.Budget,
                Revenue     = movieDetail.Revenue,
                ImdbUrl     = movieDetail.ImdbUrl,
                TmdbUrl     = movieDetail.TmdbUrl,
                ReleaseDate = movieDetail.ReleaseDate,
                RunTime     = movieDetail.RunTime,
                Price       = movieDetail.Price,
                Genres      = genres,
                Casts       = casts
            };

            return(response);
        }
示例#2
0
        public async Task <List <MovieDetailsResponseModel> > GetAllMovies()
        {
            var movieDetailsResponse = new List <MovieDetailsResponseModel>();
            var movies = await _movieRepository.GetMovies();

            foreach (var movie in movies)
            {
                var movieDetails = new MovieDetailsResponseModel
                {
                    Id               = movie.Id,
                    PosterUrl        = movie.PosterUrl,
                    Revenue          = movie.Revenue,
                    Title            = movie.Title,
                    OriginalLanguage = movie.OriginalLanguage,
                    ReleaseDate      = movie.ReleaseDate,
                    RunTime          = movie.RunTime,
                    Price            = movie.Price
                };
                movieDetailsResponse.Add(movieDetails);
            }

            return(movieDetailsResponse);



/*            return movieDetails;*/
        }
示例#3
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var count = await _favoriteRepository.GetFavoriteCount(id);

            var responseMovie = new MovieDetailsResponseModel
            {
                Id             = movie.Id,
                Title          = movie.Title,
                PosterUrl      = movie.PosterUrl,
                BackdropUrl    = movie.BackdropUrl,
                Rating         = movie.Rating,
                Overview       = movie.Overview,
                Tagline        = movie.Tagline,
                Budget         = movie.Budget,
                Revenue        = movie.Revenue,
                ImdbUrl        = movie.ImdbUrl,
                TmdbUrl        = movie.TmdbUrl,
                ReleaseDate    = movie.ReleaseDate.Value,
                RunTime        = movie.RunTime,
                Price          = movie.Price,
                FavoritesCount = count
            };

            return(responseMovie);
        }
示例#4
0
        //public Task<PaginatedList<MovieResponseModel>> GetAllPurchasesByMovieId(int movieId)
        //{
        //    throw new NotImplementedException();
        //}
        //public Task<PagedResultSet<MovieResponseModel>> GetMoviesByPagination(int pageSize = 20, int page = 0, string title = "")
        //{
        //    throw new NotImplementedException();
        //}
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var count = await _favoriteRepository.GetCountAsync(f => f.MovieId == id);

            var movieDetails = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                //Rating = movie.Rating,
                Overview       = movie.Overview,
                Tagline        = movie.Tagline,
                Budget         = movie.Budget,
                Revenue        = movie.Revenue,
                ImdbUrl        = movie.ImdbUrl,
                TmdbUrl        = movie.TmdbUrl,
                ReleaseDate    = movie.ReleaseDate,
                RunTime        = movie.RunTime,
                Price          = movie.Price,
                FavoritesCount = count
            };
            var genres = new List <Genre>();

            foreach (var movieGenre in movie.MovieGenre)
            {
                var genre = await _genreRepository.GetByIdAsync(movieGenre.GenreId);

                var response = new Genre
                {
                    Id   = genre.Id,
                    Name = genre.Name
                };
                genres.Add(response);
            }
            movieDetails.Genres = genres;
            var casts = new List <MovieDetailsResponseModel.CastResponseModel>();

            foreach (var movieCast in movie.MovieCast)
            {
                var cast = await _castRepository.GetByIdAsync(movieCast.CastId);

                var response = new MovieDetailsResponseModel.CastResponseModel
                {
                    Id          = cast.Id,
                    Name        = cast.Name,
                    Gender      = cast.Gender,
                    TmdbUrl     = cast.TmdbUrl,
                    ProfilePath = cast.ProfilePath,
                    Character   = movieCast.Charater
                };
                casts.Add(response);
            }
            movieDetails.Casts = casts;
            return(movieDetails);
        }
示例#5
0
        public async Task <MovieDetailsResponseModel> GetMovieDetailsAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var movieResult = new MovieDetailsResponseModel();

            movieResult.Casts = new List <CastDetailsResponseModel>();

            movieResult.Genre = new List <GenreForParticularMovieModel>();

            //Cast
            foreach (var cast in movie.MovieCast)
            {
                movieResult.Casts.Add(
                    new CastDetailsResponseModel
                {
                    Id          = cast.CastId,
                    Character   = cast.Character,
                    Name        = cast.Cast.Name,
                    ProfilePath = cast.Cast.ProfilePath
                });
            }

            // Genre
            foreach (var genre in movie.Genres)
            {
                movieResult.Genre.Add(
                    new GenreForParticularMovieModel
                {
                    Id   = genre.Id,
                    Name = genre.Name
                });
            }

            movieResult.Id          = movie.Id;
            movieResult.ReleaseDate = (DateTime)movie.ReleaseDate;
            movieResult.RunTime     = movie.RunTime;
            movieResult.Revenue     = (decimal)movie.Revenue;
            movieResult.Budget      = (decimal)movie.Budget;
            movieResult.PosterUrl   = movie.PosterUrl;
            movieResult.Title       = movie.Title;
            movieResult.Overview    = movie.Overview;

            int     count = 0;
            decimal total = 0;

            foreach (var review in movie.Review)
            {
                total += review.Rating;
                count++;
            }

            decimal avgRating = total / count;

            movieResult.Rating = avgRating;

            return(movieResult);
        }
示例#6
0
        public async Task <MovieDetailsResponseModel> GetMovieById(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            // map movie entity to MovieDetailsResponseModel
            var movieDetails = new MovieDetailsResponseModel
            {
                Id               = movie.Id,
                Title            = movie.Title,
                Overview         = movie.Overview,
                Tagline          = movie.Tagline,
                Budget           = movie.Budget,
                Revenue          = movie.Revenue,
                ImdbUrl          = movie.ImdbUrl,
                TmdbUrl          = movie.TmdbUrl,
                PosterUrl        = movie.PosterUrl,
                BackdropUrl      = movie.BackdropUrl,
                OriginalLanguage = movie.OriginalLanguage,
                ReleaseDate      = movie.ReleaseDate,
                RunTime          = movie.RunTime,
                Price            = movie.Price,
            };
            // map list of GenreModel
            List <GenreResponseModel> genreResponseModels = new List <GenreResponseModel>();

            foreach (var genre in movie.Genres)
            {
                var curGenreResponseModel = new GenreResponseModel
                {
                    Id   = genre.Id,
                    Name = genre.Name
                };
                genreResponseModels.Add(curGenreResponseModel);
            }

            // map list of CastResponseModel
            List <CastResponseModel> castResponseModels = new List <CastResponseModel>();

            foreach (var moviecast in movie.MovieCasts)
            {
                var cast = moviecast.Cast;
                var curCastResponseModel = new CastResponseModel
                {
                    Id          = cast.Id,
                    Name        = cast.Name,
                    Gender      = cast.Gender,
                    TmdbUrl     = cast.TmdbUrl,
                    ProfilePath = cast.ProfilePath,
                    Character   = moviecast.Character
                };
                castResponseModels.Add(curCastResponseModel);
            }

            movieDetails.Genres = genreResponseModels;
            movieDetails.Casts  = castResponseModels;

            return(movieDetails);
        }
示例#7
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);


            var castList = new List <MovieDetailsResponseModel.CastResponseModel>();

            foreach (var cast in movie.MovieCasts)
            {
                castList.Add(new MovieDetailsResponseModel.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
                });
            }



            var response = new MovieDetailsResponseModel();

            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.Casts       = castList;
            response.Genres      = genreList;



            return(response);
        }
示例#8
0
        public async Task <MovieDetailsResponseModel> GetMovieDetailsById(int id)
        {
            var movie = await _movieRepository.GetById(id);

            if (movie == null)
            {
                throw new NotFoundException("Movie", id);
            }

            List <GenreResponseModel> genres = new List <GenreResponseModel>();

            foreach (var g in movie.Genres)
            {
                genres.Add(new GenreResponseModel
                {
                    Id   = g.Id,
                    Name = g.Name,
                });
            }

            List <CastResponseModel> casts = new List <CastResponseModel>();

            foreach (var mc in movie.MovieCasts)
            {
                casts.Add(new CastResponseModel
                {
                    Id          = mc.Cast.Id,
                    Name        = mc.Cast.Name,
                    Gender      = mc.Cast.Gender,
                    TmdbUrl     = mc.Cast.TmdbUrl,
                    ProfilePath = mc.Cast.ProfilePath,
                    Character   = mc.Character,
                });
            }

            var response = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                Rating      = movie.Rating,
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Budget      = movie.Budget,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
                ReleaseDate = movie.ReleaseDate,
                Genres      = genres,
                Casts       = casts,
            };

            return(response);
        }
示例#9
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            // get movie by id
            var movie = await _movieRepository.GetByIdAsync(id);

            if (movie == null)
            {
                throw new NotFoundException("Movie", id);
            }
            var genres = new List <GenreModel>();
            var casts  = new List <MovieDetailsResponseModel.CastResponseModel>();

            // for every genre in the movie
            foreach (var genre in movie.Genres)
            {
                genres.Add(new GenreModel
                {
                    Id   = genre.Id,
                    Name = genre.Name
                });
            }
            // for every cast in the movie
            foreach (var thing in movie.MovieCasts)
            {
                casts.Add(new MovieDetailsResponseModel.CastResponseModel
                {
                    Id          = thing.CastId,
                    Character   = thing.Character,
                    Gender      = thing.Cast.Gender,
                    Name        = thing.Cast.Name,
                    ProfilePath = thing.Cast.ProfilePath,
                    TmdbUrl     = thing.Cast.TmdbUrl
                });
            }
            var response = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                Rating      = movie.Rating,
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Budget      = movie.Budget,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
                Casts       = casts,
                Genres      = genres
            };

            return(response);
        }
示例#10
0
        public async Task <MovieDetailsResponseModel> UpdateMovie(MovieCreateRequest movieCreateRequest)
        {
            var movie = new Movie
            {
                Id               = movieCreateRequest.Id,
                Title            = movieCreateRequest.Title,
                Overview         = movieCreateRequest.Overview,
                BackdropUrl      = movieCreateRequest.BackdropUrl,
                Budget           = movieCreateRequest.Budget,
                Revenue          = movieCreateRequest.Revenue,
                Tagline          = movieCreateRequest.Tagline,
                PosterUrl        = movieCreateRequest.PosterUrl,
                TmdbUrl          = movieCreateRequest.TmdbUrl,
                ImdbUrl          = movieCreateRequest.ImdbUrl,
                ReleaseDate      = movieCreateRequest.ReleaseDate,
                OriginalLanguage = movieCreateRequest.OriginalLanguage,
                RunTime          = movieCreateRequest.RunTime,
                Price            = movieCreateRequest.Price,
            };


            var updateMovie = await _movieRepository.UpdateAsync(movie);

            if (movieCreateRequest.Genres != null)
            {
                foreach (var genre in movieCreateRequest.Genres)
                {
                    var movieGenre = new MovieGenre {
                        MovieId = updateMovie.Id, GenreId = genre.Id
                    };
                    await _genresRepository.UpdateAsync(movieGenre);
                }
            }



            var response = new MovieDetailsResponseModel
            {
                Id               = updateMovie.Id,
                Title            = updateMovie.Title,
                Overview         = updateMovie.Overview,
                Tagline          = updateMovie.Tagline,
                ImdbUrl          = updateMovie.ImdbUrl,
                TmdbUrl          = updateMovie.TmdbUrl,
                BackdropUrl      = updateMovie.BackdropUrl,
                PosterUrl        = updateMovie.PosterUrl,
                Budget           = updateMovie.Budget,
                RunTime          = updateMovie.RunTime,
                ReleaseDate      = updateMovie.ReleaseDate,
                Revenue          = updateMovie.Revenue,
                Price            = updateMovie.Price,
                OriginalLanguage = updateMovie.OriginalLanguage
            };

            return(response);
        }
示例#11
0
        public async Task <MovieDetailsResponseModel> CreateMovie(MovieCreateRequest movieCreateRequest)
        {
            var           roles     = _currentUserService.Roles;
            List <string> rolesList = new List <string>();

            foreach (var role in roles)
            {
                rolesList.Add(role);
            }

            string admin = "Admin";

            if (!rolesList.Exists(e => e == admin))
            {
                throw new Exception("Not Authorized");
            }
            var movie = new Movie
            {
                Title            = movieCreateRequest.Title,
                Overview         = movieCreateRequest.Overview,
                BackdropUrl      = movieCreateRequest.BackdropUrl,
                Budget           = movieCreateRequest.Budget,
                CreatedDate      = movieCreateRequest.CreatedDate,
                ImdbUrl          = movieCreateRequest.ImdbUrl,
                OriginalLanguage = movieCreateRequest.OriginalLanguage,
                PosterUrl        = movieCreateRequest.PosterUrl,
                Price            = movieCreateRequest.Price,
                ReleaseDate      = movieCreateRequest.ReleaseDate,
                RunTime          = movieCreateRequest.RunTime,
                Tagline          = movieCreateRequest.TagLine,
                TmdbUrl          = movieCreateRequest.TmdbUrl
            };
            var createdMovie = await _movieRepository.AddAsync(movie);

            var response = new MovieDetailsResponseModel()
            {
                Id               = createdMovie.Id,
                Title            = createdMovie.Title,
                Overview         = createdMovie.Overview,
                BackdropUrl      = createdMovie.BackdropUrl,
                Budget           = createdMovie.Budget,
                CreatedDate      = createdMovie.CreatedDate,
                ImdbUrl          = createdMovie.ImdbUrl,
                OriginalLanguage = createdMovie.OriginalLanguage,
                PosterUrl        = createdMovie.PosterUrl,
                Price            = createdMovie.Price,
                ReleaseDate      = createdMovie.ReleaseDate,
                RunTime          = createdMovie.RunTime,
                Tagline          = createdMovie.Tagline,
                TmdbUrl          = createdMovie.TmdbUrl
            };

            return(response);
        }
示例#12
0
        public async Task <MovieDetailsResponseModel> UpdateMovie(MovieCreateRequestModel model)
        {
            var movie = new Movie
            {
                Title            = model.Title,
                Overview         = model.Overview,
                Tagline          = model.Tagline,
                Revenue          = model.Revenue,
                Budget           = model.Budget,
                ImdbUrl          = model.ImdbUrl,
                TmdbUrl          = model.TmdbUrl,
                PosterUrl        = model.PosterUrl,
                BackdropUrl      = model.BackdropUrl,
                OriginalLanguage = model.OriginalLanguage,
                ReleaseDate      = model.ReleaseDate,
                RunTime          = model.RunTime,
                Price            = model.Price,
            };
            var movieGenres = new List <Genre>();

            foreach (var genre in model.Genres)
            {
                movieGenres.Add(new Genre
                {
                    Id   = genre.Id,
                    Name = genre.Name,
                });
            }
            movie.Genres = movieGenres;

            var updatedMovie = await _movieRepository.Update(movie);

            var response = new MovieDetailsResponseModel
            {
                Id          = updatedMovie.Id,
                Title       = updatedMovie.Title,
                Overview    = updatedMovie.Overview,
                Tagline     = updatedMovie.Tagline,
                Revenue     = updatedMovie.Revenue,
                Budget      = updatedMovie.Budget,
                ImdbUrl     = updatedMovie.ImdbUrl,
                TmdbUrl     = updatedMovie.TmdbUrl,
                PosterUrl   = updatedMovie.PosterUrl,
                BackdropUrl = updatedMovie.BackdropUrl,
                ReleaseDate = updatedMovie.ReleaseDate,
                RunTime     = updatedMovie.RunTime,
                Price       = updatedMovie.Price,
                //Genres = updatedMovie.Genres,
            };

            return(response);
        }
示例#13
0
        public async Task <MovieDetailsResponseModel> UpdateMovie(MovieCreateRequestModel movieCreateRequestModel)
        {
            var movie = new Movie()
            {
                Id               = movieCreateRequestModel.Id,
                Title            = movieCreateRequestModel.Title,
                Overview         = movieCreateRequestModel.Overview,
                Tagline          = movieCreateRequestModel.Tagline,
                Revenue          = movieCreateRequestModel.Revenue,
                Budget           = movieCreateRequestModel.Budget,
                ImdbUrl          = movieCreateRequestModel.ImdbUrl,
                TmdbUrl          = movieCreateRequestModel.TmdbUrl,
                PosterUrl        = movieCreateRequestModel.PosterUrl,
                BackdropUrl      = movieCreateRequestModel.BackdropUrl,
                OriginalLanguage = movieCreateRequestModel.OriginalLanguage,
                ReleaseDate      = movieCreateRequestModel.ReleaseDate,
                RunTime          = movieCreateRequestModel.RunTime,
                Price            = movieCreateRequestModel.Price,
                Genres           = new List <Genre>()
            };

            foreach (var genre in movieCreateRequestModel.Genres)
            {
                movie.Genres.Add(new Genre()
                {
                    Id   = genre.Id,
                    Name = genre.Name,
                });
            }

            var newMovie = await _movieRepository.UpdateAsync(movie);

            var moiveResponse = new MovieDetailsResponseModel()
            {
                Id          = newMovie.Id,
                Title       = newMovie.Title,
                Budget      = newMovie.Budget,
                PosterUrl   = newMovie.PosterUrl,
                Rating      = newMovie.Rating,
                ReleaseDate = newMovie.ReleaseDate,
                BackdropUrl = newMovie.BackdropUrl,
                ImdbUrl     = newMovie.ImdbUrl,
                Tagline     = newMovie.Tagline,
                Price       = newMovie.Price,
                Revenue     = newMovie.Revenue,
                RunTime     = newMovie.RunTime,
                Overview    = newMovie.Overview,
                TmdbUrl     = newMovie.TmdbUrl,
            };

            return(moiveResponse);
        }
示例#14
0
        public async Task <MovieDetailsResponseModel> GetMovieById(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            List <CastResponseModel> casts = new List <CastResponseModel>();

            foreach (var cast in movie.MovieCasts)
            {
                var castResonse = new CastResponseModel
                {
                    Id          = cast.Cast.Id,
                    Name        = cast.Cast.Name,
                    Gender      = cast.Cast.Gender,
                    ProfilePath = cast.Cast.ProfilePath,
                    TmdbUrl     = cast.Cast.TmdbUrl,
                    Character   = cast.Character
                };
                casts.Add(castResonse);
            }
            List <Genre> genres = new List <Genre>();

            foreach (var genre in movie.MovieGenres)
            {
                var g = new Genre
                {
                    Id   = genre.Genre.Id,
                    Name = genre.Genre.Name
                };
                genres.Add(g);
            }
            var movieDetails = new MovieDetailsResponseModel
            {
                Id               = movie.Id,
                Title            = movie.Title,
                Overview         = movie.Overview,
                Tagline          = movie.Tagline,
                Budget           = movie.Budget,
                Revenue          = movie.Revenue,
                ImdbUrl          = movie.ImdbUrl,
                TmdbUrl          = movie.TmdbUrl,
                PosterUrl        = movie.PosterUrl,
                BackdropUrl      = movie.BackdropUrl,
                OriginalLanguage = movie.OriginalLanguage,
                ReleaseDate      = movie.ReleaseDate,
                RunTime          = movie.RunTime,
                Price            = movie.Price,
                Casts            = casts,
                Genres           = genres
            };

            return(movieDetails);
        }
示例#15
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var movieDetailsResponseModel = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                //missig rating, will talk later
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Budget      = movie.Budget,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
                //ignore favorite count for now
                Casts = new List <MovieDetailsResponseModel.CastResponseModel>()
            };

            foreach (var cast in movie.MovieCasts)
            {
                movieDetailsResponseModel.Casts.Add(new MovieDetailsResponseModel.CastResponseModel
                {
                    Id          = cast.Cast.Id,
                    Name        = cast.Cast.Name,
                    Gender      = cast.Cast.Gender,
                    TmdbUrl     = cast.Cast.TmdbUrl,
                    ProfilePath = cast.Cast.ProfilePath,
                    Character   = cast.Character
                });
            }
            movieDetailsResponseModel.Genres = new List <Core.Entities.Genre>();
            foreach (var genre in movie.MovieGenres)
            {
                movieDetailsResponseModel.Genres.Add(new Core.Entities.Genre
                {
                    Id   = genre.Genre.Id,
                    Name = genre.Genre.Name
                });
            }



            return(movieDetailsResponseModel);
        }
示例#16
0
        public async Task <MovieDetailsResponseModel> UpdateMovie(MovieCreateRequestModel movieCreateRequest)
        {
            //find the movie
            var movie = new Movie();

            PropertyCopy.Copy(movie, movieCreateRequest);
            var updateResult = await _repo.UpdateAsync(movie);

            var movieResult = new MovieDetailsResponseModel();

            PropertyCopy.Copy(movieResult, updateResult);

            return(movieResult);
        }
示例#17
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var casts = await _castRepository.GetCastByMovieId(id);

            var favoritecount = await _favoriteRepository.GetFavoriteCountAsync(id);

            var moviegenre = await _genreRepository.GetGenreByMovieId(id);


            var responseMovies = new MovieDetailsResponseModel
            {
                Id             = movie.Id,
                Title          = movie.Title,
                PosterUrl      = movie.PosterUrl,
                BackdropUrl    = movie.BackdropUrl,
                Rating         = movie.Rating,
                Overview       = movie.Overview,
                Tagline        = movie.Tagline,
                Budget         = movie.Budget,
                Revenue        = movie.Revenue,
                ImdbUrl        = movie.ImdbUrl,
                TmdbUrl        = movie.TmdbUrl,
                ReleaseDate    = movie.ReleaseDate,
                RunTime        = movie.RunTime,
                Price          = movie.Price,
                FavoritesCount = favoritecount,
                Casts          = new List <CastResponseModel>(),
                Genres         = moviegenre.ToList(),
            };

            foreach (var cast in casts)
            {
                var moviecast = await _castRepository.GetMovieCastById(cast.Id, id);

                responseMovies.Casts.Add(new MovieDetailsResponseModel.CastResponseModel
                {
                    Id          = cast.Id,
                    Name        = cast.Name,
                    Gender      = cast.Gender,
                    TmdbUrl     = cast.TmdbUrl,
                    ProfilePath = cast.ProfilePath,
                    Character   = moviecast.Character
                });
            }
            return(responseMovies);
        }
示例#18
0
        public async Task <MovieDetailsResponseModel> CreateMovie(MovieCreateRequest movieCreateRequest)
        {
            var dbMovie = await _movieRepository.GetMovieByTitle(movieCreateRequest.Title);

            if (dbMovie != null && string.Equals(dbMovie.Title, movieCreateRequest.Title, StringComparison.CurrentCultureIgnoreCase))
            {
                throw new Exception("Movie Already Exits");
            }

            var movie = new Movie
            {
                Id          = movieCreateRequest.Id,
                Title       = movieCreateRequest.Title,
                PosterUrl   = movieCreateRequest.PosterUrl,
                BackdropUrl = movieCreateRequest.BackdropUrl,
                //Rating = movie.Rating,
                Overview    = movieCreateRequest.Overview,
                Tagline     = movieCreateRequest.Tagline,
                Budget      = movieCreateRequest.Budget,
                Revenue     = movieCreateRequest.Revenue,
                ImdbUrl     = movieCreateRequest.ImdbUrl,
                TmdbUrl     = movieCreateRequest.TmdbUrl,
                ReleaseDate = movieCreateRequest.ReleaseDate,
                RunTime     = movieCreateRequest.RunTime,
                Price       = movieCreateRequest.Price
            };
            var createMovie = await _movieRepository.AddAsync(movie);

            var response = new MovieDetailsResponseModel
            {
                Id          = createMovie.Id,
                Title       = createMovie.Title,
                PosterUrl   = createMovie.PosterUrl,
                BackdropUrl = createMovie.BackdropUrl,
                //Rating = movie.Rating,
                Overview    = createMovie.Overview,
                Tagline     = createMovie.Tagline,
                Budget      = createMovie.Budget,
                Revenue     = createMovie.Revenue,
                ImdbUrl     = createMovie.ImdbUrl,
                TmdbUrl     = createMovie.TmdbUrl,
                ReleaseDate = createMovie.ReleaseDate,
                RunTime     = createMovie.RunTime,
                Price       = createMovie.Price
            };

            return(response);
        }
示例#19
0
        private MovieDetailsResponseModel movieToDetialResponse(Movie movie)
        {
            var movieResponseModel = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                PosterUrl   = movie.PosterUrl,
                ReleaseDate = movie.ReleaseDate.Value,
                Title       = movie.Title,
                Overview    = movie.Overview,
                Budget      = movie.Budget,
                Tagline     = movie.Tagline,
                Revenue     = movie.Revenue,
            };

            return(movieResponseModel);
        }
示例#20
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var movieDetailsResponseModel = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                // Movie - not have rating now
                Rating      = movie.Rating,
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Budget      = movie.Budget,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
                Casts       = new List <CastResponseModel>(),
                Genres      = new List <Genre>()

                              // FavoritesCount = movie.FavoritesCount;
            };

            foreach (var movieCast in movie.MovieCasts)
            {
                movieDetailsResponseModel.Casts.Add(new CastResponseModel {
                    Id          = movieCast.Cast.Id,
                    Name        = movieCast.Cast.Name,
                    Gender      = movieCast.Cast.Gender,
                    Character   = movieCast.Character,
                    ProfilePath = movieCast.Cast.ProfilePath,
                    TmdbUrl     = movieCast.Cast.TmdbUrl
                });
            }

            foreach (var genre in movie.MovieGenres)
            {
                movieDetailsResponseModel.Genres.Add(genre.Genre);
            }


            return(movieDetailsResponseModel);
        }
示例#21
0
        public async Task <MovieDetailsResponseModel> GetMovieByIdAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var casts = new List <CastResponseModel>();

            foreach (MovieCast ca in movie.MovieCasts)
            {
                casts.Add(new CastResponseModel
                {
                    Id          = ca.CastId,
                    Name        = ca.Cast.Name,
                    Gender      = ca.Cast.Gender,
                    TmdbUrl     = ca.Cast.TmdbUrl,
                    ProfilePath = ca.Cast.ProfilePath,
                    Character   = ca.Character
                });
            }

            var movieDetails = new MovieDetailsResponseModel
            {
                Id               = movie.Id,
                Title            = movie.Title,
                Budget           = movie.Budget,
                Overview         = movie.Overview,
                Tagline          = movie.Tagline,
                ImdbUrl          = movie.ImdbUrl,
                Revenue          = movie.Revenue,
                TmdbUrl          = movie.TmdbUrl,
                PosterUrl        = movie.PosterUrl,
                BackdropUrl      = movie.BackdropUrl,
                OriginalLanguage = movie.OriginalLanguage,
                ReleaseDate      = movie.ReleaseDate,
                RunTime          = movie.RunTime,
                Price            = movie.Price,
                Casts            = casts,
            };


            //
            // loop thru this object and add this movie.MovieCasts info to movieDetails.Casts
            //if (movie == null) throw new NotFoundException("Movie", id);
            //var favoritesCount = await _favoriteRepository.GetCountAsync(f => f.MovieId == id);
            //var response = _mapper.Map<MovieDetailsResponseModel>(movie);
            //response.FavoritesCount = favoritesCount;
            return(movieDetails);
        }
示例#22
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var favoriteCount = await _favoriteRepository.GetCountAsync(f => f.Id == id);

            MovieDetailsResponseModel movieDetailsResponseModel = new MovieDetailsResponseModel()
            {
                Id             = movie.Id,
                Title          = movie.Title,
                PosterUrl      = movie.PosterUrl,
                BackdropUrl    = movie.BackdropUrl,
                Overview       = movie.Overview,
                Tagline        = movie.Tagline,
                Budget         = movie.Budget,
                Revenue        = movie.Revenue,
                ImdbUrl        = movie.ImdbUrl,
                TmdbUrl        = movie.TmdbUrl,
                ReleaseDate    = movie.ReleaseDate,
                RunTime        = movie.RunTime,
                Price          = movie.Price,
                FavoritesCount = favoriteCount,
                Rating         = movie.Rating,
                Casts          = new List <MovieDetailsResponseModel.CastResponseModel>(),
                Genres         = new List <Genre>()
            };

            foreach (var cast in movie.MovieCasts)
            {
                movieDetailsResponseModel.Casts.Add(new MovieDetailsResponseModel.CastResponseModel
                {
                    Id          = cast.Cast.Id,
                    Character   = cast.Character,
                    Gender      = cast.Cast.Gender,
                    Name        = cast.Cast.Name,
                    TmdbUrl     = cast.Cast.TmdbUrl,
                    ProfilePath = cast.Cast.ProfilePath
                });
            }

            foreach (var genre in movie.MovieGenres)
            {
                movieDetailsResponseModel.Genres.Add(genre.Genre);
            }

            return(movieDetailsResponseModel);
        }
示例#23
0
        public async Task <List <MovieDetailsResponseModel> > GetAllMovies(MovieParameters movieParameters)
        {
            var movieDetailsResponse = new List <MovieDetailsResponseModel>();
            var movies = await _movieRepository.GetMovies(movieParameters);

            foreach (var movie in movies)
            {
                var movieDetails = new MovieDetailsResponseModel
                {
                    Id               = movie.Id,
                    Title            = movie.Title,
                    Overview         = movie.Overview,
                    Tagline          = movie.Tagline,
                    Budget           = movie.Budget,
                    Revenue          = movie.Revenue,
                    ImdbUrl          = movie.ImdbUrl,
                    TmdbUrl          = movie.TmdbUrl,
                    PosterUrl        = movie.PosterUrl,
                    BackdropUrl      = movie.BackdropUrl,
                    OriginalLanguage = movie.OriginalLanguage,
                    ReleaseDate      = movie.ReleaseDate,
                    RunTime          = movie.RunTime,
                    Price            = movie.Price,
                    Genres           = new List <GenreModel>(),
                    Casts            = new List <CastResponseModel>()
                };
                foreach (var genre in movie.Genres)
                {
                    movieDetails.Genres.Add(new GenreModel {
                        Id = genre.Id, Name = genre.Name
                    });
                }
                foreach (var cast in movie.MovieCasts)
                {
                    movieDetails.Casts.Add(new CastResponseModel
                    {
                        Id          = cast.CastId,
                        Character   = cast.Character,
                        Name        = cast.Cast.Name,
                        ProfilePath = cast.Cast.ProfilePath
                    });
                }
                movieDetailsResponse.Add(movieDetails);
            }

            return(movieDetailsResponse);
        }
示例#24
0
        public async Task <MovieDetailsResponseModel> CreateMovie(MovieCreateRequest movieCreateRequest)
        {
            var movie = new Movie {
                Id               = movieCreateRequest.Id,
                Title            = movieCreateRequest.Title,
                Overview         = movieCreateRequest.Overview,
                Tagline          = movieCreateRequest.Tagline,
                Revenue          = movieCreateRequest.Revenue,
                Budget           = movieCreateRequest.Budget,
                ImdbUrl          = movieCreateRequest.ImdbUrl,
                TmdbUrl          = movieCreateRequest.TmdbUrl,
                PosterUrl        = movieCreateRequest.PosterUrl,
                BackdropUrl      = movieCreateRequest.BackdropUrl,
                OriginalLanguage = movieCreateRequest.OriginalLanguage,
                ReleaseDate      = movieCreateRequest.ReleaseDate,
                RunTime          = movieCreateRequest.RunTime,
                Price            = movieCreateRequest.Price,
            };

            var CreatedMovie = await _movieRepository.AddAsync(movie);

            foreach (var genre in movieCreateRequest.Genres)
            {
                var MovieGenre = new MovieGenre {
                    MovieId = CreatedMovie.Id, GenreId = genre.Id
                };
                await _movieGenresRepository.AddAsync(MovieGenre);
            }
            var ReturnedModel = new MovieDetailsResponseModel {
                Id          = movie.Id,
                Title       = movie.Title,
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Revenue     = movie.Revenue,
                Budget      = movie.Budget,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
            };

            return(ReturnedModel);
        }
示例#25
0
        public async Task <MovieDetailsResponseModel> GetMovieById(int id)
        {
            var movieDetails = new MovieDetailsResponseModel();
            var movie        = await _movieRepository.GetByIdAsync(id); // _dbContext.Movies.Include(m => m.MovieCasts).ThenInclude(m => m.Cast).Include(m => m.Genres).FirstOrDefault(m => m.Id == id);

            movieDetails.Id               = movie.Id;
            movieDetails.PosterUrl        = movie.PosterUrl;
            movieDetails.Title            = movie.Title;
            movieDetails.Overview         = movie.Overview;
            movieDetails.Tagline          = movie.Tagline;
            movieDetails.Budget           = movie.Budget;
            movieDetails.Revenue          = movie.Revenue;
            movieDetails.ImdbUrl          = movie.ImdbUrl;
            movieDetails.TmdbUrl          = movie.TmdbUrl;
            movieDetails.BackdropUrl      = movie.BackdropUrl;
            movieDetails.OriginalLanguage = movie.OriginalLanguage;
            movieDetails.ReleaseDate      = movie.ReleaseDate;
            movieDetails.RunTime          = movie.RunTime;
            movieDetails.Price            = movie.Price;

            //movieDetails.Genres and movie.Genres are different type, so I think we cannot simply use =
            movieDetails.Genres = new List <GenreModel>();
            foreach (var genre in movie.Genres)
            {
                movieDetails.Genres.Add(new GenreModel {
                    Id = genre.Id, Name = genre.Name
                });
            }

            //movieDetails.Casts and movie.MovieCasts are different type, so I think we cannot simply use =
            movieDetails.Casts = new List <CastReponseModel>();
            foreach (var cast in movie.MovieCasts)
            {
                movieDetails.Casts.Add(new CastReponseModel
                {
                    Id          = cast.CastId,
                    Character   = cast.Character,
                    Name        = cast.Cast.Name,
                    ProfilePath = cast.Cast.ProfilePath
                });
            }

            return(movieDetails);
        }
示例#26
0
        public async Task <MovieDetailsResponseModel> GetMovieById(int id)
        {
            var movieDetails = new MovieDetailsResponseModel();
            var movie        = await _movieRepository.GetByIdAsync(id);

            // map movie entity to MovieDetailsResponseModel
            movieDetails.Id               = movie.Id;
            movieDetails.PosterUrl        = movie.PosterUrl;
            movieDetails.Title            = movie.Title;
            movieDetails.Overview         = movie.Overview;
            movieDetails.Tagline          = movie.Tagline;
            movieDetails.Budget           = movie.Budget;
            movieDetails.Revenue          = movie.Revenue;
            movieDetails.ImdbUrl          = movie.ImdbUrl;
            movieDetails.TmdbUrl          = movie.TmdbUrl;
            movieDetails.BackdropUrl      = movie.BackdropUrl;
            movieDetails.OriginalLanguage = movie.OriginalLanguage;
            movieDetails.ReleaseDate      = movie.ReleaseDate;
            movieDetails.RunTime          = movie.RunTime;
            movieDetails.Price            = movie.Price;

            movieDetails.Genres = new List <GenreModel>();
            movieDetails.Casts  = new List <CastResponseModel>();

            foreach (var genre in movie.Genres)
            {
                movieDetails.Genres.Add(new GenreModel {
                    Id = genre.Id, Name = genre.Name
                });
            }

            foreach (var cast in movie.MovieCasts)
            {
                movieDetails.Casts.Add(new CastResponseModel
                {
                    Id          = cast.CastId,
                    Character   = cast.Character,
                    Name        = cast.Cast.Name,
                    ProfilePath = cast.Cast.ProfilePath
                });
            }

            return(movieDetails);
        }
示例#27
0
        public async Task <MovieDetailsResponseModel> GetMovieDetailsById(int id)
        {
            var movie = await _movieRepository.GetById(id);


            var MovieDetails = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                BackdropUrl = movie.BackdropUrl,
                PosterUrl   = movie.PosterUrl,
                Tagline     = movie.Tagline,
                Overview    = movie.Overview,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Budget      = movie.Budget,
                Price       = movie.Price,
                Revenue     = movie.Revenue,
                Rating      = movie.Rating
            };

            MovieDetails.Genres = new List <GenreResponseModel>();
            MovieDetails.Casts  = new List <CastResponseModel>();

            foreach (var cast in movie.MovieCasts)
            {
                MovieDetails.Casts.Add(new CastResponseModel {
                    Id = cast.CastId, Name = cast.Cast.Name, ProfilePath = cast.Cast.ProfilePath, Character = cast.Character
                });
            }

            foreach (var genre in movie.MovieGenres)
            {
                MovieDetails.Genres.Add(new GenreResponseModel {
                    Id = genre.Genre.Id, Name = genre.Genre.Name
                });
            }

            return(MovieDetails);
        }
示例#28
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            if (movie == null)
            {
                throw new Exception("Movie not found");
            }
            var movieResponseModel = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                PosterUrl   = movie.PosterUrl,
                ReleaseDate = movie.ReleaseDate.Value,
                Title       = movie.Title,
                Overview    = movie.Overview,
                Price       = movie.Price,
            };

            return(movieResponseModel);
        }
示例#29
0
        public async Task <MovieDetailsResponseModel> CreateMovie(MovieCreateRequest movieCreateRequest)
        {
            var movie = new Movie
            {
                Id               = movieCreateRequest.Id,
                Title            = movieCreateRequest.Title,
                Overview         = movieCreateRequest.Overview,
                Tagline          = movieCreateRequest.Tagline,
                Revenue          = movieCreateRequest.Revenue,
                Budget           = movieCreateRequest.Budget,
                ImdbUrl          = movieCreateRequest.ImdbUrl,
                TmdbUrl          = movieCreateRequest.TmdbUrl,
                PosterUrl        = movieCreateRequest.PosterUrl,
                BackdropUrl      = movieCreateRequest.BackdropUrl,
                OriginalLanguage = movieCreateRequest.OriginalLanguage,
                ReleaseDate      = movieCreateRequest.ReleaseDate,
                RunTime          = movieCreateRequest.RunTime,
                Price            = movieCreateRequest.Price,
            };
            await _movieRepository.AddAsync(movie);

            var response = new MovieDetailsResponseModel
            {
                Id          = movieCreateRequest.Id,
                Title       = movieCreateRequest.Title,
                Overview    = movieCreateRequest.Overview,
                Tagline     = movieCreateRequest.Tagline,
                Revenue     = movieCreateRequest.Revenue,
                Budget      = movieCreateRequest.Budget,
                ImdbUrl     = movieCreateRequest.ImdbUrl,
                TmdbUrl     = movieCreateRequest.TmdbUrl,
                PosterUrl   = movieCreateRequest.PosterUrl,
                BackdropUrl = movieCreateRequest.BackdropUrl,
                ReleaseDate = movieCreateRequest.ReleaseDate,
                RunTime     = movieCreateRequest.RunTime,
                Price       = movieCreateRequest.Price,
                Genres      = movieCreateRequest.Genres
            };

            return(response);
        }
示例#30
0
        public async Task <MovieDetailsResponseModel> GetMovieAsync(int id)
        {
            var movie = await _repo.GetByIdAsync(id);

            //if (movie == null) throw new NotFoundException("Movie", id);
            //var favoritesCount = await _favoriteRepository.GetCountAsync(f => f.MovieId == id);
            var response = new MovieDetailsResponseModel
            {
                Id          = movie.Id,
                Title       = movie.Title,
                PosterUrl   = movie.PosterUrl,
                BackdropUrl = movie.BackdropUrl,
                //Rating =,
                Overview    = movie.Overview,
                Tagline     = movie.Tagline,
                Budget      = movie.Budget,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                TmdbUrl     = movie.TmdbUrl,
                ReleaseDate = movie.ReleaseDate,
                RunTime     = movie.RunTime,
                Price       = movie.Price,
                Genres      = movie.Genres.ToList()

                              //FavoriteCount = ;
            };
            var castList = new List <MovieDetailsResponseModel.CastResponseModel>();

            foreach (var cast in movie.MovieCasts)
            {
                var c = await _castRepo.GetByIdAsync(cast.CastId);

                var responseModel = new MovieDetailsResponseModel.CastResponseModel();
                PropertyCopy.Copy(responseModel, c);
                castList.Add(responseModel);
            }

            response.Casts = castList;
            //response.FavoritesCount = favoritesCount;
            return(response);
        }