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 }); }
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 }; }