コード例 #1
0
        /// <summary>
        ///   Add review to executor.
        /// </summary>
        /// <param name="review">Review to add.</param>
        /// <param name="currentUserId">Id of current user.</param>
        /// <returns>
        ///    Added review.
        /// </returns>
        /// <exception cref="System.ArgumentException">When one of params invalid.</exception>
        /// <exception cref="System.UnauthorizedAccessException">User not permissions.</exception>

        public async Task <Review> AddReview(Review review, long currentUserId)
        {
            review.CheckArgumentException();

            var user = await _userRepository.GetAsync(currentUserId);

            var order = await _orderRepository.GetAsync(review.OrderId);

            order = order.CustomerId == user.Id
                ? order
                : throw new UnauthorizedAccessException();

            return(await _reviewRepository.AddAsync(review));
        }