コード例 #1
0
        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 }));
            }
        }
コード例 #2
0
        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...
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        // 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());
        }
コード例 #6
0
        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());
        }
コード例 #7
0
        // 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());
        }
コード例 #8
0
        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!
コード例 #9
0
        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));
        }