Ejemplo n.º 1
0
 public Task <bool> AddNewReview(NewReviewDTO data) => Task.Run(() =>
 {
     if (UserExists(data.customerId) && ShopExists(data.shopId) && RatingIsValid(data.reviewRating) && ReviewCommentIsValid(data.reviewComment))
     {
         Reviews review = new Reviews
         {
             reviewId      = Guid.NewGuid().ToString(),
             customerId    = data.customerId,
             customerName  = data.customerName,
             shopId        = data.shopId,
             reviewRating  = data.reviewRating,
             reviewComment = data.reviewComment
         };
         try
         {
             context.Reviews.Add(review);
             context.SaveChanges();
         }
         catch (DbUpdateException)
         {
             return(false);
         }
         return(true);
     }
     else
     {
         return(false);
     }
 });
Ejemplo n.º 2
0
        public async Task <IActionResult> Create(CreateReviewViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var createDTO = new NewReviewDTO()
                    {
                        Comment       = model.Comment,
                        Score         = model.Score,
                        PhotoId       = model.PhotoId,
                        WrongCategory = model.WrongCategory
                    };
                    await this.reviewService.CreateAsync(createDTO);

                    return(RedirectToAction("Index", "Contests"));
                }
                catch (Exception e)
                {
                    toastNotification.AddErrorToastMessage(e.Message, new NotyOptions());
                    var path = Request.Path.Value.ToString() + "?photoId=" + model.PhotoId;
                    return(Redirect(path));
                }
            }
            return(View(model));
        }
Ejemplo n.º 3
0
 public async Task <IActionResult> AddNewReview([FromBody] NewReviewDTO data)
 {
     if (await Task.Run(() => _reviewProcessor.AddNewReview(data)))
     {
         return(Ok());
     }
     else
     {
         return(BadRequest());
     }
 }
Ejemplo n.º 4
0
        public async Task <IActionResult> CreateAsync(NewReviewDTO newReviewDTO)
        {
            try
            {
                var result = await this.reviewService.CreateApiAsync(newReviewDTO);

                return(Created("post", result));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Create a review.
        /// </summary>
        /// <param name="newReviewDTO">Details of new review.</param>
        /// <returns>Returns created review.</returns>
        public async Task <ReviewDTO> CreateAsync(NewReviewDTO newReviewDTO)
        {
            var photo = await this.photoService.FindPhotoAsync(newReviewDTO.PhotoId);

            if (photo.Contest.Status.Name != "Phase 2")
            {
                throw new ArgumentException(Exceptions.InvalidContestPhase);
            }
            if (newReviewDTO.Comment == null)
            {
                throw new ArgumentException(Exceptions.InvalidComment);
            }

            var username = this.userManager.GetUserName(this.signInManager.Context.User);
            var user     = await this.userService.GetUserByUsernameAsync(username);

            if (user.Rank.Name != "Organizer" && user.Rank.Name != "Admin")
            {
                if (!this.dbContext.Juries.Any(j => j.UserId == user.Id && j.ContestId == photo.ContestId))
                {
                    throw new ArgumentException(Exceptions.UserNotJury);
                }
            }
            if (await this.dbContext.Reviews.AnyAsync(r => r.UserId == user.Id && r.PhotoId == photo.Id))
            {
                throw new ArgumentException(Exceptions.ReviewedPhoto);
            }

            var review = new Review()
            {
                PhotoId   = photo.Id,
                Comment   = newReviewDTO.Comment,
                Score     = newReviewDTO.Score,
                UserId    = user.Id,
                CreatedOn = DateTime.UtcNow
            };

            if (newReviewDTO.WrongCategory)
            {
                review.Comment          = Exceptions.WrongCategoryComment;
                review.Score            = 0;
                photo.IsInWrongCategory = true;
            }
            await this.dbContext.Reviews.AddAsync(review);

            await this.dbContext.SaveChangesAsync();

            return(new ReviewDTO(review));
        }
Ejemplo n.º 6
0
        public void AddReview_NotValidComment_Fails()
        {
            var processor = new ReviewProcessor(context);

            var review = new NewReviewDTO
            {
                customerId    = "TestUser-1",
                customerName  = "Test",
                shopId        = "TestShop-1",
                reviewRating  = 2,
                reviewComment = ""
            };
            var result = processor.AddNewReview(review).Result;

            Assert.False(result);
        }
Ejemplo n.º 7
0
        public void AddReview_NotValidShopId_Fails()
        {
            var processor = new ReviewProcessor(context);

            var review = new NewReviewDTO
            {
                customerId    = "TestUser-1",
                customerName  = "Test",
                shopId        = "NOT VALID",
                reviewRating  = 2,
                reviewComment = Guid.NewGuid().ToString()
            };
            var result = processor.AddNewReview(review).Result;

            Assert.False(result);
        }
Ejemplo n.º 8
0
        public void AddReview_ValidData_Success()
        {
            var processor = new ReviewProcessor(context);

            var review = new NewReviewDTO
            {
                customerId    = "TestUser-1",
                customerName  = "Test",
                shopId        = "TestShop-1",
                reviewRating  = 2,
                reviewComment = Guid.NewGuid().ToString()
            };
            var result = processor.AddNewReview(review).Result;

            Assert.True(result);
        }