Пример #1
0
        private HelpfulnessVoteResponse RegisterAnonymousVote(HelpfulnessVoteModel voteModel, ProductReview productReview, Product productPage, bool isHelpful)
        {
            if (productReview.Votes.Any(v => v.IPAddress == voteModel.IPAddress))
            {
                return new HelpfulnessVoteResponse
                {
                    Type = ProductReviewResponseType.Info,
                    Message = "Already voted",
                    RedirectUrl = "~/" + productPage.LiveUrlSegment
                };
            }

            var vote = new HelpfulnessVote
            {
                IsHelpful = isHelpful,
                ProductReview = productReview,
                IPAddress = voteModel.IPAddress
            };

            productReview.Votes.Add(vote);
            _session.Transact(session => session.Save(vote));
            return new HelpfulnessVoteResponse
            {
                Message = "Vote registered",
                RedirectUrl = "~/" + productPage.LiveUrlSegment,
                Type = ProductReviewResponseType.Success
            };
        }
        public HelpfulnessVoteResponse Downvote(HelpfulnessVoteModel voteModel)
        {
            var productReview = _session.Get <ProductReview>(voteModel.ProductReviewId);

            if (productReview == null)
            {
                return(new HelpfulnessVoteResponse
                {
                    Type = ProductReviewResponseType.Error,
                    Message = "Could not find product review to vote"
                });
            }
            Product productPage = productReview.ProductVariant.Product;
            User    currentUser = CurrentRequestData.CurrentUser;

            if (currentUser != null)
            {
                return(RegisterLoggedInVote(voteModel, productReview, currentUser, productPage, false));
            }
            return(RegisterAnonymousVote(voteModel, productReview, productPage, false));
        }
        private HelpfulnessVoteResponse RegisterLoggedInVote(HelpfulnessVoteModel voteModel, ProductReview productReview, User currentUser, Product productPage, bool isHelpful)
        {
            if (productReview.Votes.Any(v => v.IsHelpful == isHelpful && v.User == currentUser))
            {
                return(new HelpfulnessVoteResponse
                {
                    Type = ProductReviewResponseType.Info,
                    Message = "Already voted",
                    RedirectUrl = "~/" + productPage.LiveUrlSegment
                });
            }
            List <HelpfulnessVote> oppositeVotes =
                productReview.Votes.Where(v => v.IsHelpful != isHelpful && v.User == currentUser).ToList();

            if (oppositeVotes.Any())
            {
                _session.Transact(session => oppositeVotes.ForEach(v =>
                {
                    productReview.Votes.Remove(v);
                    session.Delete(v);
                }));
            }
            var vote = new HelpfulnessVote
            {
                IsHelpful     = isHelpful,
                User          = currentUser,
                ProductReview = productReview,
                IPAddress     = voteModel.IPAddress
            };

            productReview.Votes.Add(vote);
            _session.Transact(session => session.Save(vote));
            return(new HelpfulnessVoteResponse
            {
                Message = "Vote registered",
                RedirectUrl = "~/" + productPage.LiveUrlSegment,
                Type = ProductReviewResponseType.Success
            });
        }
        private HelpfulnessVoteResponse RegisterAnonymousVote(HelpfulnessVoteModel voteModel, ProductReview productReview, Product productPage, bool isHelpful)
        {
            if (productReview.Votes.Any(v => v.IPAddress == voteModel.IPAddress))
            {
                return(new HelpfulnessVoteResponse
                {
                    Type = ProductReviewResponseType.Info,
                    Message = "Already voted",
                    RedirectUrl = "~/" + productPage.LiveUrlSegment
                });
            }

            var vote = new HelpfulnessVote
            {
                IsHelpful     = isHelpful,
                ProductReview = productReview,
                IPAddress     = voteModel.IPAddress
            };

            productReview.Votes.Add(vote);
            _session.Transact(session => session.Save(vote));
            return(new HelpfulnessVoteResponse
            {
                Message = "Vote registered",
                RedirectUrl = "~/" + productPage.LiveUrlSegment,
                Type = ProductReviewResponseType.Success
            });
        }
Пример #5
0
 private HelpfulnessVoteResponse RegisterLoggedInVote(HelpfulnessVoteModel voteModel, ProductReview productReview, User currentUser, Product productPage, bool isHelpful)
 {
     if (productReview.Votes.Any(v => v.IsHelpful == isHelpful && v.User == currentUser))
     {
         return new HelpfulnessVoteResponse
         {
             Type = ProductReviewResponseType.Info,
             Message = "Already voted",
             RedirectUrl = "~/" + productPage.LiveUrlSegment
         };
     }
     List<HelpfulnessVote> oppositeVotes =
         productReview.Votes.Where(v => v.IsHelpful != isHelpful && v.User == currentUser).ToList();
     if (oppositeVotes.Any())
     {
         _session.Transact(session => oppositeVotes.ForEach(v =>
         {
             productReview.Votes.Remove(v);
             session.Delete(v);
         }));
     }
     var vote = new HelpfulnessVote
     {
         IsHelpful = isHelpful,
         User = currentUser,
         ProductReview = productReview,
         IPAddress = voteModel.IPAddress
     };
     productReview.Votes.Add(vote);
     _session.Transact(session => session.Save(vote));
     return new HelpfulnessVoteResponse
     {
         Message = "Vote registered",
         RedirectUrl = "~/" + productPage.LiveUrlSegment,
         Type = ProductReviewResponseType.Success
     };
 }