コード例 #1
0
        // GET: CommentToReviews/Edit/5
        public ActionResult Edit(Guid?id)
        {
            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                CommentToReview commentToReview = db.CommentToReviews.Find(id);

                if (commentToReview == null)
                {
                    return(HttpNotFound());
                }

                ViewBag.ReviewId = new SelectList(db.Reviews, "Id", "Title", commentToReview.ReviewId);
                ViewBag.UserId   = new SelectList(db.Users, "Id", "Username", commentToReview.UserId);
                return(View(commentToReview));
            }
            catch
            {
                RedirectToAction("Error", "Home");
            }

            return(View());
        }
コード例 #2
0
        public ActionResult ShowReview(Guid?reviewId)
        {
            if (Session["userId"] == null)
            {
                return(RedirectToAction("Index", "Home"));
            }
            if (reviewId == null)
            {
                return(RedirectToAction("Reviews", "Review"));
            }
            try
            {
                using (var context = new rkDBContext())
                {
                    var reviewRating =
                        CalculateReviewRating(context.UserToReviews.Where(x => x.ReviewId == reviewId).ToList());

                    var reviewToShow = context.Reviews.Where(x => x.Id == reviewId).Select(x => new AllReviewsViewModel
                    {
                        Title           = x.Title,
                        CreatorUserId   = x.CreatorUserId,
                        CreatedBy       = x.User.Username,
                        UserRating      = x.UserRating,
                        ReviewId        = x.Id,
                        Description     = x.Description,
                        DisLikes        = x.DislikeCount,
                        Likes           = x.LikeCount,
                        TotalRating     = (decimal)reviewRating,
                        Type            = x.Type,
                        ReviewImagePath = reviewId.ToString() + ".png"
                    }).FirstOrDefault();

                    var reviewComments =
                        context.CommentToReviews.OrderByDescending(x => x.CreatedDate)
                        .Where(x => x.ReviewId == reviewId)
                        .ToList();
                    foreach (var item in reviewComments)
                    {
                        var commentToAdd = new CommentToReview
                        {
                            Id          = item.Id,
                            ReviewId    = item.ReviewId,
                            Comment     = item.Comment,
                            CreatedDate = item.CreatedDate,
                            User        = context.Users.SingleOrDefault(x => x.Id == item.UserId)
                        };
                        reviewToShow?.CommentToReviewList.Add(commentToAdd);
                    }
                    return(reviewToShow == null?View("Error") : View(reviewToShow));
                }
            }
            catch
            {
                return(RedirectToAction("Error", "Home"));
            }
        }
コード例 #3
0
        // GET: CommentToReviews/Create
        public ActionResult Create(Guid reviewId)
        {
            try
            {
                var newComment = new CommentToReview();

                newComment.ReviewId = reviewId;

                return(PartialView("_CommentPartial", newComment));
            }
            catch
            {
                RedirectToAction("Error", "Home");
            }

            return(View());
        }
コード例 #4
0
        public ActionResult DeleteConfirmed(Guid id)
        {
            try
            {
                CommentToReview commentToReview = db.CommentToReviews.Find(id);

                db.CommentToReviews.Remove(commentToReview);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }
            catch
            {
                RedirectToAction("Error", "Home");
            }

            return(View());
        }
コード例 #5
0
        public JsonResult CreateCommentToReview(AllReviewsViewModel allReviewsViewModel)
        {
            var succeeded = false;

            if (!ModelState.IsValid)
            {
                return(Json(allReviewsViewModel));
            }

            try
            {
                using (var context = new rkDBContext())
                {
                    var userId = (Guid)Session["userId"];

                    if (context.Users.Any(x => x.Id == userId))
                    {
                        var user = context.Users.SingleOrDefault(x => x.Id == userId);

                        var newCommentToReview = new CommentToReview
                        {
                            Id          = Guid.NewGuid(),
                            ReviewId    = allReviewsViewModel.ReviewId,
                            UserId      = (Guid)userId,
                            Comment     = allReviewsViewModel.CommentToAdd,
                            CreatedDate = DateTime.Now
                        };
                        allReviewsViewModel.CreatedBy   = user?.Username;
                        allReviewsViewModel.CreatedDate = DateTime.Now.ToShortDateString();

                        context.CommentToReviews.Add(newCommentToReview);
                        succeeded = true;
                        context.SaveChanges();
                    }
                    else
                    {
                        return(Json(new { succeeded }));
                    }
                }
            }
            catch
            {
                return(Json(new { succeeded }));
            }
            return(Json(new { succeeded, allReviewsViewModel }));
        }
コード例 #6
0
        // GET: CommentToReviews/Delete/5
        public ActionResult Delete(Guid?id)
        {
            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
                CommentToReview commentToReview = db.CommentToReviews.Find(id);
                if (commentToReview == null)
                {
                    return(HttpNotFound());
                }
                return(View(commentToReview));
            }
            catch
            {
                RedirectToAction("Error", "Home");
            }

            return(View());
        }
コード例 #7
0
        public ActionResult Edit([Bind(Include = "Id,UserId,ReviewId,Comment,CreatedDate")] CommentToReview commentToReview)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    db.Entry(commentToReview).State = EntityState.Modified;
                    db.SaveChanges();

                    return(RedirectToAction("Index"));
                }

                ViewBag.ReviewId = new SelectList(db.Reviews, "Id", "Title", commentToReview.ReviewId);
                ViewBag.UserId   = new SelectList(db.Users, "Id", "Username", commentToReview.UserId);

                return(View(commentToReview));
            }
            catch
            {
                RedirectToAction("Error", "Home");
            }

            return(View());
        }
コード例 #8
0
        } //check!

        public JsonResult PostComment(string text, Guid reviewId)
        {
            var status = 0;

            if (ModelState.IsValid)
            {
                try
                {
                    if (text.Length < 3)
                    {
                        ModelState.AddModelError("CommentError", "Your comment is too short!");
                        status = 2;
                        return(Json(status));
                    }

                    //get all reviews
                    var reviews = from m in db.Reviews select m;
                    var users   = from u in db.Users select u;

                    var newComment = new CommentToReview();

                    newComment.UserId      = ((User)Session["currentUser"]).Id;
                    newComment.Id          = Guid.NewGuid();
                    newComment.CreatedDate = DateTime.Now;
                    newComment.ReviewId    = reviewId;
                    newComment.Comment     = text;

                    //loop through all users, and add a user as the newComment.User property only if that user has the same Id as newComment.UserId  **1
                    foreach (var user in users)
                    {
                        if (user.Id == newComment.UserId)
                        {
                            newComment.User = user;
                        }
                    }

                    //loop through all reviews, and add a review as the "newComment.Review" property only if that review has the same ID as newComment.ReviewID **2
                    foreach (var review in reviews)
                    {
                        if (review.Id == newComment.ReviewId)
                        {
                            newComment.Review = review;
                        }
                    }

                    // **1 and **2 had to be done for some reason otherwise Entity thougth that upon assigning "newComment.Review/User" that a new entity should be implicitly created(???!)

                    //find current Review and add this comment to that review
                    foreach (var review in reviews)
                    {
                        if (review.Id == newComment.ReviewId)
                        {
                            review.CommentToReviews.Add(newComment);
                        }
                    }

                    db.SaveChanges();
                    status = 1;
                }
                catch
                {
                    RedirectToAction("Error", "Home");
                }

                return(Json(status));
            }

            return(Json(status));
        } //check!