public JsonResult RateReview(int checkedValue, Guid reviewId) { var succeeded = checkedValue; var userId = (Guid)Session["userId"]; try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 6; return(Json(new { succeeded })); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (isValid && userToReview != null) { userToReview.Rating = checkedValue; context.SaveChanges(); } else if (!isValid) { var newUserToReview = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = false, Rating = checkedValue }; context.UserToReviews.Add(newUserToReview); context.SaveChanges(); } else { succeeded = 0; } return(Json(new { succeeded, rating = CalculateReviewRating(context.UserToReviews.Where(x => x.ReviewId == reviewId).ToList()) })); } } catch { succeeded = 6; return(Json(new { succeeded })); } }
public JsonResult RateReview(int value, Guid reviewId) { var status = 0; var userId = ((User)Session["currentUser"]).Id; try { //the review passed to this method var thisReview = db.Reviews.FirstOrDefault(r => r.Id == reviewId); //true if logged in user has rated, liked or disliked this review, false if not bool userToThisReview = thisReview.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); if (!userToThisReview) { var newUserToReview = new UserToReview { Id = Guid.NewGuid(), //new guid UserId = userId, //set logged in userID as Id to new user to review ReviewId = reviewId, //current review id Rating = value, //value is the argument for RateReview(int value .... HasLiked = false //set false since now we are rating not like/disliking }; thisReview.UserToReviews.Add(newUserToReview); status = 1; decimal totalrating = (decimal)CalcScoreLocal(thisReview.Id); db.SaveChanges(); return(Json(new { status, totalrating })); } else //if there IS a user that has liked/disliked or rated this review, then get that user -> { //get the user var existingUserToThisReview = thisReview.UserToReviews.FirstOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); //set this users rating of this review to the value given existingUserToThisReview.Rating = value; status = 1; decimal totalrating = (decimal)CalcScoreLocal(thisReview.Id); //obvious db.SaveChanges(); return(Json(new { status, totalrating })); } } catch { status = 2; return(Json(new { status })); } } //should work!...testing..1..2...3...
public ActionResult DeleteConfirmed(Guid id) { try { UserToReview userToReview = db.UserToReviews.Find(id); db.UserToReviews.Remove(userToReview); db.SaveChanges(); return(RedirectToAction("Index")); } catch { RedirectToAction("Error", "Home"); } return(View()); }
public ActionResult Edit([Bind(Include = "Id,UserId,ReviewId,HasLiked,Rating")] UserToReview userToReview) { try { if (ModelState.IsValid) { db.Entry(userToReview).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ReviewId = new SelectList(db.Reviews, "Id", "Title", userToReview.ReviewId); ViewBag.UserId = new SelectList(db.Users, "Id", "Username", userToReview.UserId); return(View(userToReview)); } catch { RedirectToAction("Error", "Home"); } return(View()); }
// GET: UserToReviews/Delete/5 public ActionResult Delete(Guid?id) { try { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UserToReview userToReview = db.UserToReviews.Find(id); if (userToReview == null) { return(HttpNotFound()); } return(View(userToReview)); } catch { RedirectToAction("Error", "Home"); } return(View()); }
public ActionResult Create([Bind(Include = "Id,UserId,ReviewId,HasLiked,Rating")] UserToReview userToReview) { try { if (ModelState.IsValid) { userToReview.Id = Guid.NewGuid(); db.UserToReviews.Add(userToReview); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.ReviewId = new SelectList(db.Reviews, "Id", "Title", userToReview.ReviewId); ViewBag.UserId = new SelectList(db.Users, "Id", "Username", userToReview.UserId); return(View(userToReview)); } catch { RedirectToAction("Error", "Home"); } return(View()); }
// GET: UserToReviews/Edit/5 public ActionResult Edit(Guid?id) { try { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } UserToReview userToReview = db.UserToReviews.Find(id); if (userToReview == null) { return(HttpNotFound()); } ViewBag.ReviewId = new SelectList(db.Reviews, "Id", "Title", userToReview.ReviewId); ViewBag.UserId = new SelectList(db.Users, "Id", "Username", userToReview.UserId); return(View(userToReview)); } catch { RedirectToAction("Error", "Home"); } return(View()); }
public JsonResult LikeOrDislike(int val, Guid reviewId) { var status = 0; //0 is initialization value, 1 = likes, 2 = dislikes, 3 = already liked or disliked! var userId = ((User)Session["currentUser"]).Id; if (val == 1) //( 1 = like) { try { //the review passed to this method var thisReview = db.Reviews.FirstOrDefault(r => r.Id == reviewId); //true if logged in user has liked/disliked this review, false if not bool userToThisReview = thisReview.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); if (!userToThisReview) { var newUserToReview = new UserToReview { Id = Guid.NewGuid(), //new guid UserId = userId, //set logged in userID as Id to new user to review ReviewId = reviewId, //current review id HasLiked = true //always true if liked or disliked }; thisReview.LikeCount++; status = 1; thisReview.UserToReviews.Add(newUserToReview); db.SaveChanges(); } else //if there IS a user that has liked/disliked or rated this review, then get that user -> { //get the user var existingUserToThisReview = thisReview.UserToReviews.FirstOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); //check if the user has liked or disliked if (existingUserToThisReview.HasLiked) { //if has, dont allow to like or dislike status = 3; return(Json(status)); } //if hasnt, then like this review, and set that users HasLiked to True thisReview.LikeCount++; existingUserToThisReview.HasLiked = true; status = 1; //obvious db.SaveChanges(); return(Json(status)); } } catch { return(Json(status)); } return(Json(status)); } else if (val == 2) // val==2 = dislike. --------- this is redundant but it's here for clarity { try { //the review passed to this method var thisReview = db.Reviews.FirstOrDefault(r => r.Id == reviewId); //true if logged in user has liked/disliked this review, false if not bool userToThisReview = thisReview.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); if (!userToThisReview) { var newUserToReview = new UserToReview { Id = Guid.NewGuid(), //new guid UserId = userId, //set logged in userID as Id to new user to review ReviewId = reviewId, //current review id HasLiked = true //always true if liked or disliked }; thisReview.DislikeCount++; status = 2; thisReview.UserToReviews.Add(newUserToReview); db.SaveChanges(); } else //if there IS a user that has liked/disliked or rated this review, then get that user -> { var existingUserToThisReview = thisReview.UserToReviews.FirstOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (existingUserToThisReview.HasLiked) { status = 3; return(Json(status)); } else { thisReview.DislikeCount++; status = 2; existingUserToThisReview.HasLiked = true; db.SaveChanges(); } } } catch { return(Json(status)); } } return(Json(status)); } //check!
public JsonResult LikeOrDislikeReview(int likeOrDislike, Guid reviewId) { var succeeded = 0; var userId = (Guid)Session["userId"]; if (likeOrDislike == 1) { try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 3; return(Json(succeeded)); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (!isValid) { succeeded = 1; var userHasLiked = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = true }; var reviewToLike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToLike != null) { reviewToLike.LikeCount++; } context.UserToReviews.Add(userHasLiked); context.SaveChanges(); } else if (userToReview != null && userToReview.HasLiked != true) { succeeded = 1; var reviewToLike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToLike != null) { reviewToLike.LikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else { return(Json(succeeded)); } } } catch { return(Json(succeeded)); } return(Json(succeeded)); } try { using (var context = new rkDBContext()) { if (!context.Users.Any(x => x.Id == userId)) { succeeded = 3; return(Json(succeeded)); } var isValid = context.UserToReviews.Any(x => x.UserId == userId && x.ReviewId == reviewId); var userToReview = context.UserToReviews.SingleOrDefault(x => x.UserId == userId && x.ReviewId == reviewId); if (userToReview != null && !isValid) { succeeded = 2; var userHasLiked = new UserToReview { Id = Guid.NewGuid(), UserId = userId, ReviewId = reviewId, HasLiked = true }; var reviewToDislike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToDislike != null) { reviewToDislike.DislikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else if (userToReview != null && userToReview.HasLiked != true) { succeeded = 2; var reviewToDislike = context.Reviews.SingleOrDefault(x => x.Id == reviewId); if (reviewToDislike != null) { reviewToDislike.DislikeCount++; } userToReview.HasLiked = true; context.SaveChanges(); } else { return(Json(succeeded)); } } } catch { return(Json(succeeded)); } return(Json(succeeded)); }