コード例 #1
0
ファイル: ReviewServices.cs プロジェクト: Stefoajc/RealEstate
        public async Task <ForumReviews> Create(ForumReviewCreateViewModel model, ReviewType reviewType, string reviewingUserId)
        {
            if (!await userManager.Users.AnyAsync(u => u.Id == reviewingUserId))
            {
                throw new ArgumentException("Не е намерен потребителят с който сте логнати!");
            }

            ForumReviews reviewToBeCreated;
            //review created by this user for this item which has to be deleted
            ForumReviews reviewAlreadyCreatedByThisUser;

            switch (reviewType)
            {
            case ReviewType.Post:
                if (!await PostsManager.Exists(model.ReviewedItemId))
                {
                    throw new ArgumentException("Постът, на който искате да направите ревю не съществува!");
                }

                reviewAlreadyCreatedByThisUser = await unitOfWork.ForumReviewsRepository.GetAll()
                                                 .OfType <PostReviews>()
                                                 .Where(r => r.UserId == reviewingUserId && r.PostId == model.ReviewedItemId)
                                                 .FirstOrDefaultAsync();

                reviewToBeCreated = Mapper.Map <PostReviews>(model, opts => opts.Items.Add("UserId", reviewingUserId));
                break;

            case ReviewType.Comment:
                if (!await CommentsManager.Exists(model.ReviewedItemId))
                {
                    throw new ArgumentException("Коментарът, на който искате да направите ревю не съществува!");
                }
                reviewAlreadyCreatedByThisUser = await unitOfWork.ForumReviewsRepository.GetAll()
                                                 .OfType <PostReviews>()
                                                 .Where(r => r.UserId == reviewingUserId && r.PostId == model.ReviewedItemId)
                                                 .FirstOrDefaultAsync();

                reviewToBeCreated = Mapper.Map <CommentReviews>(model, opts => opts.Items.Add("UserId", reviewingUserId));
                break;

            default:
                throw new ArgumentException("Не се поддържат Ревюта от избраният от вас тип!");
            }

            if (reviewAlreadyCreatedByThisUser != null)
            {
                unitOfWork.ForumReviewsRepository.Delete(reviewAlreadyCreatedByThisUser);
            }
            unitOfWork.ForumReviewsRepository.Add(reviewToBeCreated);
            await unitOfWork.SaveAsync();

            return(reviewToBeCreated);
        }
コード例 #2
0
        public async Task <ActionResult> Create(ForumReviewCreateViewModel review, string reviewedItemType)
        {
            _logger.Info("Creating Review! Params: " + (new { review, reviewedItemType }).ToJson());

            if (!ModelState.IsValid)
            {
                _logger.Error("Creating Review Form Invalid! Errors: " + ModelState.ToJson());
                return(Json(ModelState.ToDictionary()));
            }

            try
            {
                var createdReview = await _reviewsManager.Create(review, (ReviewType)Enum.Parse(typeof(ReviewType), reviewedItemType), User.Identity.GetUserId());

                _logger.Info("Creating Review Successfully!");

                return(Json(createdReview));
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Creating Review Failed!");
                throw;
            }
        }