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); } });
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)); }
public async Task <IActionResult> AddNewReview([FromBody] NewReviewDTO data) { if (await Task.Run(() => _reviewProcessor.AddNewReview(data))) { return(Ok()); } else { return(BadRequest()); } }
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)); } }
/// <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)); }
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); }
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); }
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); }