public async Task <bool> SaveMovieRating(UserMovieRatingDto rating) { var movieExists = await _context.Movies.AnyAsync(m => m.MovieId == rating.MovieId); if (!movieExists) { return(false); } var userExists = await _context.Users.AnyAsync(u => u.UserId == rating.UserId); if (!userExists) { return(false); } var userMovieRating = await(from r in _context.UserMovieRatings where r.MovieId == rating.MovieId && r.UserId == rating.UserId select r).FirstOrDefaultAsync(); if (userMovieRating == null) { _context.UserMovieRatings.Add(new UserMovieRating { MovieId = rating.MovieId, UserId = rating.UserId, Rating = rating.Rating }); } else { userMovieRating.Rating = rating.Rating; } await _context.SaveChangesAsync(); return(true); }
public UserMovieRatingDto AddOrUpdateRating(UserMovieRatingDto dto) { // Can be replaced with better validation // Currently just return null if not valid if (dto.Rating < 1 || dto.Rating > 5) { return(null); } var entity = _mapper.Map <UserMovieRating>(dto); var command = new AddRatingCommand(_dbContext, entity); var result = command.Execute(); return(_mapper.Map <UserMovieRatingDto>(result)); }
public async Task <IActionResult> AddRating([FromBody] UserMovieRatingDto rating) { if (!ModelState.IsValid) { return(BadRequest()); } var success = await _repository.SaveMovieRating(rating); if (success) { return(Ok()); } else { return(NotFound()); } }
public async Task <IActionResult> UpdateUserMovieRating(UserMovieRatingDto userMovieRatingDto) { try { _logger.LogInformation("Information is logged, In UpdateUserMovieRating() API call with parameter userMovieRatingDto=" + JsonConvert.SerializeObject(userMovieRatingDto)); if (userMovieRatingDto.RatingStars < 1 || userMovieRatingDto.RatingStars > 5) { return(BadRequest("Invalid rating stars value provided by user for movie")); } if (_movieDataRepository.Get(userMovieRatingDto.MovieId) == null) { return(NotFound("Movie not found")); } if (_userDataRepository.Get(userMovieRatingDto.UserId) == null) { return(NotFound("User not found")); } var userMovieRating = _mapper.Map <UserMovieRating>(userMovieRatingDto); int userMovieRatingId = await _movieApiRepository.UserMovieRatingsUpsert(userMovieRating); if (userMovieRatingId > 0) { return(Ok("Succesfully updated user's movie ratingstar record, resultCode=" + userMovieRatingId)); } else if (userMovieRatingId == 0) { return(Ok("Succesfully inserted or added new user's movie ratingstar record, resultCode=" + userMovieRatingId)); } else { return(StatusCode(500)); } } catch (Exception ex) { _logger.LogError("Error occured in UpdateUserMovieRating() API call." + "\n" + ex.Message + "\n" + ex.StackTrace + "\n" + ex.InnerException); throw ex; } }
public async Task <IActionResult> Post([FromBody] UserMovieRatingDto dto) { if (dto == null) { return(BadRequest()); } if (dto.MovieID == 0 || dto.UserID == 0) { return(BadRequest()); } var result = await Task.Run(() => _menuService.AddOrUpdateRating(dto)); if (result != null && result.ID > 0) { return(Json(result)); } return(BadRequest()); }