Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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;
            }
        }
Пример #5
0
        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());
        }