public async Task <IActionResult> CreateRating([FromBody] CreateRatingRequest request) { User user = await this.users.GetById(request.Uid); Rating rating = await this.ratingValues.GetByValue(request.Value); if (user == null) { return(BadRequest(new ErrorResponse { Error = "Invalid uid" })); } if (rating == null) { return(BadRequest(new ErrorResponse { Error = "Invalid Rating Value" })); } MovieRating userRating = new MovieRating { UserId = user.Id, MovieId = request.MovieId, RatingId = rating.Id, Review = request.Review }; if (await this.movieRatings.Exists(request.Uid, request.MovieId)) { return(Conflict(new ErrorResponse { Error = "Rating already exists" })); } MovieRating ratingAdded = await this.movieRatings.Add(userRating); MovieRatingResponse response = this.mapper.Map <MovieRatingResponse>(ratingAdded); return(CreatedAtAction("GetAllRatingsByMovie", new { movieId = response.MovieId }, response)); }
public async Task <IActionResult> UpdateRating(UpdateRatingRequest request) { User user = await this.users.GetById(request.Uid); Rating rating = await this.ratingValues.GetByValue(request.Value); MovieRating ratingToUpdate = await this.movieRatings.GetById(request.Uid, request.MovieId); if (ratingToUpdate == null) { return(NotFound(new ErrorResponse { Error = "Movie rating does not exist" })); } if (user == null) { return(BadRequest(new ErrorResponse { Error = "Invalid uid" })); } if (rating == null) { return(BadRequest(new ErrorResponse { Error = "Invalid Rating Value" })); } ratingToUpdate.RatingId = rating.Id; ratingToUpdate.Review = request.Review; ratingToUpdate = await this.movieRatings.Update(ratingToUpdate); MovieRatingResponse response = this.mapper.Map <MovieRatingResponse>(ratingToUpdate); return(Ok(response)); }