コード例 #1
0
        public IActionResult UpdateReview([FromBody] ReviewForUpdateDto review)
        {
            try
            {
                if (review == null)
                {
                    _logger.LogError("Review object sent from client is null.");
                    return(BadRequest("Review object is null"));
                }

                if (!ModelState.IsValid)
                {
                    _logger.LogError("Invalid Review object sent from client.");
                    return(BadRequest("Invalid model object"));
                }

                bool succes = _reviewLogic.Update(review);
                if (!succes)
                {
                    return(NotFound());
                }

                return(Ok("Review is updated"));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error"));
            }
        }
コード例 #2
0
        public async Task <IActionResult> UpdateReviewStatus(int id, [FromQuery] ReviewForUpdateDto reviewForUpdateDto)
        {
            var reviewFromRepo = await _repo.GetReview(id);

            if (reviewFromRepo == null)
            {
                return(BadRequest("No file has been found."));
            }

            reviewForUpdateDto.IsApproved = true;

            _mapper.Map(reviewForUpdateDto, reviewFromRepo);

            /*  IMPORTANT
             * Be careful here. Make sure no await, no task.
             * Just classes or else mapping exception eventhough
             * you have already did automapper mapping
             */

            if (await _repo.SaveAll())
            {
                return(NoContent());
            }

            throw new Exception($"Updating review status {id} failed on save");
        }
コード例 #3
0
        public async Task <IActionResult> UpdateReview(int id, [FromBody] ReviewForUpdateDto review)
        {
            if (review == null)
            {
                return(BadRequest());
            }

            if (!await _reviewRepository.ReviewExists(id))
            {
                return(NotFound());
            }

            var reviewForGameFromRepo = await _reviewRepository.GetReviewById(id);

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

            Mapper.Map(review, reviewForGameFromRepo);

            await _reviewRepository.UpdateReview(reviewForGameFromRepo);

            if (!await _reviewRepository.Save())
            {
                throw new Exception($"Updating game {id} failed on save!");
            }

            return(NoContent());
        }
コード例 #4
0
        public bool Update(ReviewForUpdateDto reviewForUpdate)
        {
            try
            {
                var reviewDto = GetById(reviewForUpdate.id);

                if (reviewDto == null)
                {
                    return(false);
                }

                Review DataEntity = _mapper.Map <Review>(reviewDto);

                _mapper.Map(reviewForUpdate, DataEntity);

                _repository.Update(DataEntity);
                _repository.Save();

                _logger.LogError($"Updated Review with id: {DataEntity.id}");

                return(true);
            }
            catch (Exception ex)
            {
                _logger.LogError($"Something went wrong inside UpdateReview action: {ex.Message}");
                throw new Exception();
            }
        }
コード例 #5
0
        public async Task <IActionResult> UpdateReviewForRestaurant(Guid restaurantId, Guid reviewId, ReviewForUpdateDto review)
        {
            // optimize function
            await DeletePutOptimize(restaurantId, reviewId);

            // get reviews
            var reviewFromRepo = await _knockRepository.GetReviewAsync(restaurantId, reviewId);

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

            // map
            _mapper.Map(review, reviewFromRepo);

            // call update function
            _knockRepository.UpdateReview(reviewFromRepo);
            await _knockRepository.SaveChangesAsync();

            return(NoContent());
        }
コード例 #6
0
        public async Task <IActionResult> UpdateReviewForProduct(Guid productId, Guid id, [FromBody] ReviewForUpdateDto review)
        {
            var reviewEntity = HttpContext.Items["entity"] as Review;

            _mapper.Map(review, reviewEntity);
            await _repository.SaveAsync();

            return(NoContent());
        }
コード例 #7
0
        public async Task <IActionResult> PartiallyUpdateReviewForAlbum([FromRoute] Guid albumId, [FromRoute] Guid reviewId, [FromBody] JsonPatchDocument <ReviewForUpdateDto> patchDoc)
        {
            if (patchDoc == null)
            {
                return(BadRequest());
            }

            //  TODO: check if artist/album exist first

            var reviewFromRepo = await _reviewRepository.GetReviewForAlbumAsync(albumId, reviewId);

            //  upserting

            if (reviewFromRepo == null)
            {
                var reviewForUpdateDto = new ReviewForUpdateDto();


                patchDoc.ApplyTo(reviewForUpdateDto, ModelState);

                TryValidateModel(reviewForUpdateDto);

                if (!ModelState.IsValid)
                {
                    return(new ErrorProcessingEntityObjectResult(ModelState));
                }

                var reviewToAdd = Mapper.Map <Review>(reviewForUpdateDto);

                reviewToAdd.Id      = reviewId;
                reviewToAdd.AlbumId = albumId;

                _reviewRepository.Create(reviewToAdd);

                if (!await _reviewRepository.SaveChangesAsync())
                {
                    throw new Exception($"upserting review {reviewId} for album {albumId} failed on save");
                }

                var reviewToReturn = Mapper.Map <ReviewDto>(reviewToAdd);

                return(CreatedAtRoute("GetReviewForAlbum", new { albumId, reviewId = reviewToReturn.Id }, reviewToReturn));
            }

            var reviewToPatch = Mapper.Map <ReviewForUpdateDto>(reviewFromRepo);

            patchDoc.ApplyTo(reviewToPatch, ModelState);

            TryValidateModel(reviewToPatch);

            if (!ModelState.IsValid)
            {
                return(new ErrorProcessingEntityObjectResult(ModelState));
            }

            Mapper.Map(reviewToPatch, reviewFromRepo);

            if (reviewFromRepo.AlbumId == null)
            {
                reviewFromRepo.Id = albumId;
            }
            _reviewRepository.Update(reviewFromRepo);

            if (!await _reviewRepository.SaveChangesAsync())
            {
                throw new Exception($"Updating review {reviewId} for album {albumId} failed on save");
            }

            return(NoContent());
        }
コード例 #8
0
        public async Task <IActionResult> UpdateReviewForAlbum([FromRoute] Guid albumId, [FromRoute] Guid reviewId, [FromBody] ReviewForUpdateDto reviewToUpdate)
        {
            if (reviewToUpdate == null)
            {
                return(BadRequest());
            }

            var reviewFromRepo = await _reviewRepository.GetReviewForAlbumAsync(albumId, reviewId);

            //  upserting

            if (reviewFromRepo == null)
            {
                var reviewEntity = Mapper.Map <Review>(reviewToUpdate);
                reviewEntity.Id      = reviewId;
                reviewEntity.AlbumId = albumId;

                _reviewRepository.Create(reviewEntity);

                if (!await _reviewRepository.SaveChangesAsync())
                {
                    throw new Exception($"upserting review {reviewId} for album {albumId} failed on save");
                }

                var reviewToReturn = Mapper.Map <ReviewDto>(reviewEntity);

                return(CreatedAtRoute("GetReviewForAlbum", new { albumId, reviewId = reviewToReturn.Id }, reviewToReturn));
            }

            Mapper.Map(reviewToUpdate, reviewFromRepo);
            if (reviewFromRepo.AlbumId == null)
            {
                reviewFromRepo.Id = albumId;
            }
            _reviewRepository.Update(reviewFromRepo);

            if (!await _reviewRepository.SaveChangesAsync())
            {
                throw new Exception($"Updating review {reviewId} for album {albumId} failed on save");
            }

            return(NoContent());
        }