public async Task <CourseReviewDto> CreateCourseReviewAsync(int courseId, CourseReviewCreateRequestDto request) { // 1. check user and course var user = await GetCurrentUser(); var course = await _courseRepository.GetCourseAsync(courseId); if (course == null) { throw new NotFoundException("Course not found"); } // 2. check user's exsisting review var review = await _courseReviewRepository.GetCourseReviewByCourseIdAndUserIdAsync(user.Id, courseId); if (review != null) { throw new BadRequestException("You have reviewed this course already."); } // 3. create review and update course var newReview = Review.Create(course, user, request.Comment, request.Score); await _courseReviewRepository.CreateAsync(newReview); await _courseReviewRepository.SaveAsync(); return(Mapper.Map <CourseReviewDto>(newReview)); }
/// <summary> /// Handles the specified request. /// </summary> /// <param name="request">The request.</param> /// <returns>The mono type.</returns> protected override IMono <Unit> Handle(ReviewRequest request) { var candidate = this.candidateRepository.Find(request.CandidateId); var employee = this.employeeRepository.Find(request.EmployeeId); var review = Review.Create(employee, candidate, request.Feedback); candidate.Subscribe(c => c.AddReview(review)); return(review.Map(_ => Unit.Value)); }
public void GET_ALL_OBJECTS() { var allDtos = _Adapter.GetAll(); foreach (var dto in allDtos) { var review = Review.Create(dto); } }
public void CREATE_FROM_DTO() { var dto = new ReviewDto() { Id = _TestId, Comments = _TestComments, Rating = _TestRating, CustomerId = _TestCustomerId }; var review = Review.Create(dto); }
public async Task <IActionResult> AcceptUserRequest(Guid userId, Guid activityId) { (await _unitOfWork.UserActivities.GetUserActivityByUserAndActivityAsync(userId, activityId)).Update(true, false, false); await _unitOfWork.CompleteAsync(); (await _unitOfWork.Activities.GetByIdAsync(activityId)).UpdateParticipantsNumber(); await _unitOfWork.CompleteAsync(); await _unitOfWork.Reviews.InsertAsync(Review.Create(userId, activityId)); await _unitOfWork.CompleteAsync(); var user = await _unitOfWork.Users.GetByIdAsync(userId); await _emailSender.SendRequestApprovedConfirmationAsync(user.Email); return(RedirectToAction("MyActivities", "User")); }
public async Task AddAsync(int rating, string comment, Guid userId, Guid bookId) { var book = await _bookRepository.GetOrFailAsync(bookId); var user = await _userRepository.GetOrFailAsync(userId); try { var review = Review.Create(Guid.NewGuid(), rating, comment, userId, bookId); book.AddReview(review); user.AddReview(_mapper.Map <ReviewShortcut>(review)); } catch (DomainException ex) { throw new ServiceException(ex, ErrorCodes.InvalidInput, ex.Message); } await _bookRepository.UpdateAsync(book); await _userRepository.UpdateAsync(user); _logger.LogInformation($"Review was created for book '{book.Title} by user with id '{userId}'"); }