Esempio n. 1
0
        public async Task <MovieDetailsViewModel> GetMovieAndDetailsByIdAsync(string movieId, string userId = null)
        {
            var movieFromDb = await dbContext.Movies.FindAsync(movieId);

            var randomReview = new MovieReviewViewModel();

            if (movieFromDb.Reviews.Count > 0)
            {
                Random rnd         = new Random();
                int    reviewIndex = rnd.Next(0, movieFromDb.Reviews.Count());

                var reviewFromDb = movieFromDb.Reviews.ToList()[reviewIndex];

                randomReview.Movie   = reviewFromDb.Movie.Name;
                randomReview.User    = reviewFromDb.User.UserName;
                randomReview.Content = reviewFromDb.Content;
                randomReview.Rating  = reviewFromDb.Rating;
                randomReview.Date    = reviewFromDb.Date;
            }

            var movieDetailsViewModel = mapper.Map <Movie, MovieDetailsViewModel>(movieFromDb);

            movieDetailsViewModel.RandomReview            = randomReview;
            movieDetailsViewModel.Cast                    = mapper.Map <List <MovieRole>, List <MovieCastViewModel> >(movieFromDb.Cast.ToList());
            movieDetailsViewModel.IsReviewedByCurrentUser = await reviewService.ReviewExistsAsync(userId, movieFromDb.Id);

            return(movieDetailsViewModel);
        }
Esempio n. 2
0
        public async Task <IActionResult> DeleteFeedback([FromBody] MovieReviewViewModel review)
        {
            var hasSeen = _context.Watchhistory.Where(r => r.CustomerMailAddress == User.Identity.Name).FirstOrDefault(r => r.MovieId == review.MovieId);

            if (!ModelState.IsValid && hasSeen == null)
            {
                return(BadRequest(ModelState));
            }
            var newReview = Mapper.Map <MovieReview>(review);

            newReview.CustomerMailAddress = User.Identity.Name;
            try
            {
                _repository.DeleteMovieReview(newReview);
                if (await _repository.SaveChangesAsync())
                {
                    return(Json($"/api/movies/{review.MovieId}/feedback"));
                }
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }

            return(BadRequest("Failed to save changes to the database"));
        }
Esempio n. 3
0
        public async Task <IActionResult> UpdateFeedback([FromBody] MovieReviewViewModel review)
        {
            var hasSeen = _context.Watchhistory.Where(r => r.CustomerMailAddress == User.Identity.Name).FirstOrDefault(r => r.MovieId == review.MovieId);

            if (!ModelState.IsValid && hasSeen == null)
            {
                return(BadRequest(ModelState));
            }
            if (review.Review.Length < 10 || review.Review.Length > 500)
            {
                return(BadRequest("The length of your review is too long or too short (min 10 & max 500 characters"));
            }
            if (review.Rating < 1 || review.Rating > 10)
            {
                return(BadRequest("Rating must be between 1 and 10"));
            }

            var newReview = Mapper.Map <MovieReview>(review);

            newReview.CustomerMailAddress = User.Identity.Name;
            try{
                _repository.UpdateMovieReview(newReview);
                if (await _repository.SaveChangesAsync())
                {
                    return(Json($"/api/movies/{review.MovieId}/feedback"));
                }
            } catch (Exception e) {
                return(BadRequest(e.Message));
            }

            return(BadRequest("Failed to save changes to the database"));
        }
Esempio n. 4
0
        // GET: Movies/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            var movie = await _context.Movie
                        .FirstOrDefaultAsync(m => m.ID == id);

            if (movie == null)
            {
                return(NotFound());
            }

            IQueryable <Review> reviewQuery = from m in _context.Review
                                              select m;

            var reviews = reviewQuery;

            reviews = reviews.Where(s => s.MovieID == id);

            var MRVM = new MovieReviewViewModel();

            MRVM.movie   = movie;
            MRVM.reviews = reviews;

            return(View(MRVM));
        }