예제 #1
0
        public async Task <MovieCardResponseModel> UpdateMovie(MovieUpdatedRequestModel movieUpdatedRequestModel)
        {
            var dbMovie = await _movieRepository.GetByIdAsync(movieUpdatedRequestModel.Id);

            if (dbMovie == null)
            {
                throw new NotFoundException("Movie Not exists");
            }
            var movie = new Movie()
            {
                Id      = dbMovie.Id,
                Title   = movieUpdatedRequestModel.Title == null ? dbMovie.Title: movieUpdatedRequestModel.Title,
                Budget  = movieUpdatedRequestModel.Budget == 0 ? dbMovie.Budget : movieUpdatedRequestModel.Budget,
                Revenue = movieUpdatedRequestModel.Revenue == 0 ? dbMovie.Revenue : movieUpdatedRequestModel.Revenue,
            };
            var updateMovie = await _movieRepository.UpdateAsync(movie);

            var updatedMovieResponse = new MovieCardResponseModel
            {
                Id      = updateMovie.Id,
                Budget  = updateMovie.Budget,
                Title   = updateMovie.Title,
                Revenue = updateMovie.Revenue,
            };

            return(updatedMovieResponse);
        }
예제 #2
0
        public async Task <MovieCardResponseModel> GetMovieCardById(int id)
        {
            var movie = await _movieRepository.GetByIdAsync(id);

            var genreList = new List <GenreResponseModel>();

            foreach (var genre in movie.Genres)
            {
                var theGenre = await _genreRepository.GetByIdAsync(genre.Id);

                genreList.Add(new GenreResponseModel
                {
                    Id   = theGenre.Id,
                    Name = theGenre.Name,
                });
            }
            var castList = new List <CastDetailResponseModel>();

            foreach (var cast in movie.MovieCasts)
            {
                var theCast = await _castRepository.GetByIdAsync(cast.CastId);

                castList.Add(new CastDetailResponseModel
                {
                    Id          = theCast.Id,
                    Name        = theCast.Name,
                    ProfilePath = theCast.ProfilePath,
                    Character   = cast.Character,
                });
            }
            var theMovie = new MovieCardResponseModel
            {
                Id          = movie.Id,
                Budget      = movie.Budget,
                Title       = movie.Title,
                BackdropUrl = movie.BackdropUrl,
                PosterUrl   = movie.PosterUrl,
                Tagline     = movie.Tagline,
                RunTime     = movie.RunTime,
                Overview    = movie.Overview,
                Price       = movie.Price,
                ReleaseDate = movie.ReleaseDate,
                Rating      = movie.Rating,
                Revenue     = movie.Revenue,
                ImdbUrl     = movie.ImdbUrl,
                Genres      = genreList,
                Casts       = castList,
            };

            return(theMovie);
        }
예제 #3
0
        public async Task <IEnumerable <MovieCardResponseModel> > GetTop25GrossingMovies()
        {
            var movies = await _movieRepository.GetTopRevenueMovies();

            var movieResponseModel = new List <MovieCardResponseModel>();

            foreach (var movie in movies)
            {
                var movieCard = new MovieCardResponseModel
                {
                    Id        = movie.Id,
                    PosterUrl = movie.PosterUrl,
                    Revenue   = movie.Revenue,
                    Title     = movie.Title
                };
                movieResponseModel.Add(movieCard);
            }
            return(movieResponseModel);
        }
예제 #4
0
        public async Task <IEnumerable <MovieCardResponseModel> > GetMoviesByPage(int pageSize, int page)
        {
            var movies = await _movieRepository.GetMoviesByPage(pageSize, page);

            var movieModels = new List <MovieCardResponseModel>();

            foreach (var movie in movies)
            {
                var curModel = new MovieCardResponseModel
                {
                    Id        = movie.Id,
                    PosterUrl = movie.PosterUrl,
                    Revenue   = movie.Revenue,
                    Title     = movie.Title
                };
                movieModels.Add(curModel);
            }
            return(movieModels);
        }
예제 #5
0
        public async Task <MovieCardResponseModel> CreateMovie(MovieCreateRequestModel movieCreateRequestModel)
        {
            var movie = new Movie
            {
                Title   = movieCreateRequestModel.Title,
                Budget  = movieCreateRequestModel.Budget,
                Revenue = movieCreateRequestModel.Revenue,
            };
            var response = await _movieRepository.AddAsync(movie);

            var createdMovie = new MovieCardResponseModel
            {
                Id      = response.Id,
                Title   = response.Title,
                Budget  = response.Budget,
                Revenue = response.Revenue,
            };

            return(createdMovie);
        }
예제 #6
0
        public async Task <IEnumerable <MovieCardResponseModel> > GetTop25topGrossingMovies()
        {
            var movies = await _movieRepository.GetTopRevenueMovies();  //a list of 25 movies of top revenue

            var movieCardResponseModel = new List <MovieCardResponseModel>();

            foreach (var movie in movies)
            {
                //createa movieCard and add it to the result
                var movieCard = new MovieCardResponseModel
                {
                    Id        = movie.Id,
                    Title     = movie.Title,
                    Revenue   = movie.Revenue,
                    PosterUrl = movie.PosterUrl
                };
                movieCardResponseModel.Add(movieCard);
            }
            return(movieCardResponseModel);
        }