Example #1
0
        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));
        }
Example #2
0
        /// <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));
        }
Example #3
0
        public void GET_ALL_OBJECTS()
        {
            var allDtos = _Adapter.GetAll();

            foreach (var dto in allDtos)
            {
                var review = Review.Create(dto);
            }
        }
Example #4
0
        public void CREATE_FROM_DTO()
        {
            var dto = new ReviewDto()
            {
                Id         = _TestId,
                Comments   = _TestComments,
                Rating     = _TestRating,
                CustomerId = _TestCustomerId
            };

            var review = Review.Create(dto);
        }
Example #5
0
        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"));
        }
Example #6
0
        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}'");
        }