public ActionResult DeleteConfirmed(int id)
        {
            CrossExamination crossExamination = db.CrossExaminations.Find(id);

            db.CrossExaminations.Remove(crossExamination);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public ActionResult Edit([Bind(Include = "CrossExaminationID,ArgumentID,Body,Score")] CrossExamination crossExamination)
 {
     if (ModelState.IsValid)
     {
         db.Entry(crossExamination).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.ArgumentID = new SelectList(db.Arguments, "ArgumentID", "Body", crossExamination.ArgumentID);
     return(View(crossExamination));
 }
        public ActionResult Create([Bind(Include = "CrossExaminationID,ArgumentID,Body,Score")] CrossExamination crossExamination)
        {
            if (ModelState.IsValid)
            {
                db.CrossExaminations.Add(crossExamination);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ArgumentID = new SelectList(db.Arguments, "ArgumentID", "Body", crossExamination.ArgumentID);
            return(View(crossExamination));
        }
        // GET: CrossExaminations/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CrossExamination crossExamination = db.CrossExaminations.Find(id);

            if (crossExamination == null)
            {
                return(HttpNotFound());
            }
            return(View(crossExamination));
        }
        // GET: CrossExaminations/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            CrossExamination crossExamination = db.CrossExaminations.Find(id);

            if (crossExamination == null)
            {
                return(HttpNotFound());
            }
            ViewBag.ArgumentID = new SelectList(db.Arguments, "ArgumentID", "Body", crossExamination.ArgumentID);
            return(View(crossExamination));
        }
        public PartialViewResult Vote(int id, string upOrDown)
        {
            CrossExamination crossExamination = db.CrossExaminations.Find(id);
            var userID   = User.Identity.GetUserId();
            var userVote = new UserVote();

            //If an exception is thrown, it means the user has not voted on this thing yet, so go ahead and cast their vote
            try
            {
                userVote = db.UserVotes.Where(i => i.CrossExaminationID == crossExamination.CrossExaminationID).Where(i => i.UserID == userID).First();
            }
            catch
            {
                //Log vote in database
                var newUserVote = new UserVote();
                newUserVote.Vote = upOrDown;
                newUserVote.CrossExaminationID = crossExamination.CrossExaminationID;
                newUserVote.UserID             = userID;
                db.UserVotes.Add(newUserVote);
                db.SaveChanges();

                //Update score
                if (upOrDown == "Up")
                {
                    crossExamination.Score++;
                }
                else
                {
                    crossExamination.Score--;
                }
            }

            if (userVote.CrossExaminationID == crossExamination.CrossExaminationID)
            {
                //They have already voted
                if (userVote.Vote == upOrDown)
                {
                    //They are not allowed to duplicate their vote
                    ViewBag.Score = crossExamination.Score.ToString() + "<br>Only one vote.";
                    return(PartialView("_ScorePartial"));
                }

                //However, they can change their vote
                userVote.Vote = upOrDown;
                db.UserVotes.Attach(userVote);
                var voteEntry = db.Entry(userVote);
                voteEntry.Property(v => v.Vote).IsModified = true;
                db.SaveChanges();

                //If they have already voted, we need to increment/decrement by two to correct it
                if (upOrDown == "Up")
                {
                    crossExamination.Score = crossExamination.Score + 2;
                }
                else
                {
                    crossExamination.Score = crossExamination.Score - 2;
                }
            }

            //Send the changes in
            var entry = db.Entry(crossExamination);

            entry.Property(e => e.Score).IsModified = true;
            db.SaveChanges();

            ViewBag.Score = crossExamination.Score;
            return(PartialView("_ScorePartial"));
        }