示例#1
0
        public ActionResult Approve(int id)
        {
            //var reviews = db.AttractionReview.Where(x => x.isApproved == 0).ToList();

            AttractionReview approved = db.AttractionReview.Where(x => x.ID == id).Single();

            approved.isApproved = 1;
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        public ActionResult ReviewDelete(int id)
        {
            AttractionReview review = db.AttractionReview.Find(id);

            if (!review.Author.Equals(Membership.GetUser().UserName) && !Roles.IsUserInRole(Membership.GetUser().UserName, "admin"))
            {
                return(RedirectToAction("Details", new { id = review.AttractionID }));
            }
            ViewBag.Attraction = db.Attraction.Find(review.AttractionID);
            return(View(review));
        }
        public ActionResult AttractionReviews(int count)
        {
            Random random = new Random();

            for (int i = 0; i < count; ++i)
            {
                AttractionReview review = new AttractionReview();
                review.AttractionID = db.Attraction.OrderBy(x => x.ID).Skip(random.Next(db.Attraction.Count() - 1)).FirstOrDefault().ID;
                review.Author       = "guest";
                review.Date         = DateTime.Now;
                review.Rating       = random.Next(1, 10);
                review.Text         = generateRandomText(2);
                db.AttractionReview.Add(review);
                db.SaveChanges();
            }

            return(RedirectToAction("Index", "Attraction"));
        }
        public ActionResult ReviewDeleteConfirmed(int id)
        {
            AttractionReview review = db.AttractionReview.Find(id);

            if (!review.Author.Equals(Membership.GetUser().UserName) && !Roles.IsUserInRole(Membership.GetUser().UserName, "admin"))
            {
                return(RedirectToAction("Details", new { id = review.AttractionID }));
            }
            //update avg rating
            var attraction = db.Attraction.Include(c => c.Country).Include(c => c.AttractionType)
                             .Include(r => r.Reviews).Where(x => x.ID == review.AttractionID).SingleOrDefault();
            int reviewsCount = attraction.Reviews.Count();

            attraction.AvgRating = (attraction.AvgRating * reviewsCount - review.Rating) / (reviewsCount - 1);
            //end of update
            db.AttractionReview.Remove(review);
            db.SaveChanges();
            return(RedirectToAction("Details", new { id = review.AttractionID }));
        }
        public ActionResult ReviewEdit(AttractionReview review, int oldRating)
        {
            if (!review.Author.Equals(Membership.GetUser().UserName) && !Roles.IsUserInRole(Membership.GetUser().UserName, "admin"))
            {
                return(RedirectToAction("Details", new { id = review.AttractionID }));
            }

            db.Entry(review).State = EntityState.Modified;

            //update avg rating
            var attraction = db.Attraction.Include(c => c.Country).Include(c => c.AttractionType)
                             .Include(r => r.Reviews).Where(x => x.ID == review.AttractionID).SingleOrDefault();
            int reviewsCount = attraction.Reviews.Count();

            attraction.AvgRating = (attraction.AvgRating * reviewsCount - oldRating + review.Rating) / reviewsCount;
            //end of update

            db.SaveChanges();
            return(RedirectToAction("Details", new { id = review.AttractionID }));
        }
        public ActionResult ReviewCreate(int AttractionId, String Author, int Rating, String Text)
        {
            AttractionReview review = new AttractionReview();

            review.AttractionID = AttractionId;
            review.Author       = Author;
            review.Rating       = Rating;
            review.Text         = Text;
            review.Date         = DateTime.Now;

            var attraction = db.Attraction.Include(x => x.AttractionType).Include(x => x.Address).Include(x => x.Coordinates)
                             .Include(x => x.Country).SingleOrDefault(x => x.ID == review.AttractionID);

            int reviewsCount = db.AttractionReview.Where(a => a.AttractionID == review.AttractionID).Count();

            if (ModelState.IsValid)
            {
                db.AttractionReview.Add(review);
                attraction.AvgRating = ((attraction.AvgRating * reviewsCount) + review.Rating) / (reviewsCount + 1);
                db.SaveChanges();
            }
            //return RedirectToAction("Details", new { id = review.AttractionID });
            return(View("GetReview", review));
        }