public async Task <UpdateRatingResponse> RateMovie(UserRatingUpdateRequest userRatingUpdateRequest) { var updateRatingResponse = new UpdateRatingResponse { MovieId = userRatingUpdateRequest.MovieId }; var movieToUpdate = await _movieRepository.GetMovie(userRatingUpdateRequest.MovieId); if (movieToUpdate == null) { updateRatingResponse.RatingUpdateStatus = RatingUpdateStatus.NotFound; return(updateRatingResponse); } var userRating = await _movieRepository.GetUserRating(userRatingUpdateRequest.MovieId, userRatingUpdateRequest.UserId); if (userRating != null) { userRating.Rating = userRatingUpdateRequest.Rating; await _movieRepository.UpdateMovieRating(userRating); updateRatingResponse.RatingUpdateStatus = RatingUpdateStatus.Updated; } else { await _movieRepository.AddMovieRating(userRatingUpdateRequest.MovieId, userRatingUpdateRequest.UserId, userRatingUpdateRequest.Rating); updateRatingResponse.RatingUpdateStatus = RatingUpdateStatus.Added; } return(updateRatingResponse); }
public async Task <IActionResult> PutMovie(UserRatingUpdateRequest userRatingUpdateRequest) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var updateRatingResponse = await _movieService.RateMovie(userRatingUpdateRequest); if (updateRatingResponse.RatingUpdateStatus == RatingUpdateStatus.NotFound) { return(NotFound($"Could not find Movie with Id: {userRatingUpdateRequest.MovieId} to update rating")); } return(StatusCode(updateRatingResponse.RatingUpdateStatus == RatingUpdateStatus.Added ? StatusCodes.Status201Created : StatusCodes.Status204NoContent)); }