public ActionResult PreTest(TestModel myModel, IFormCollection form, string id)
        {
            CookieOptions option = new CookieOptions();

            option.Expires     = DateTime.Now.AddMinutes(1200);
            option.IsEssential = true;
            Response.Cookies.Append("CaseId", id, option);
            Response.Cookies.Append("lastVisited", "PreTest", option);
            var check = User.Identity.IsAuthenticated;

            if (!check)
            {
                return(RedirectToAction("Account", "Identity", new { id = "Login" }));
            }
            TestModel myTestModel = myModel;
            int       userID      = int.Parse(Request.Cookies["uID"]);
            int       caseID      = int.Parse(id);

            if (id != null)
            {
                caseID = int.Parse(id);
            }
            using (var db = new ModelDbContext())
            {
                int checkTaken = (from c in db.DataCollectionTable
                                  where c.Case_Id == caseID &&
                                  c.User_Id == userID &&
                                  c.Pre_Test == 1
                                  select c.Answer_Id).Count();
                if (checkTaken == 0)
                {
                    int?myAttempt = (from a in db.AttemptTable
                                     where a.Case_Id == caseID &&
                                     a.User_Id == userID &&
                                     a.Pre_Test == 0
                                     select a.Attempt_Id).Count();
                    Attempt_Table newAttempt = new Attempt_Table()
                    {
                        Attempt   = 1,
                        User_Id   = userID,
                        Case_Id   = caseID,
                        Date_Time = DateTime.Now,
                        Pre_Test  = 1
                    };
                    db.Add(newAttempt);
                    db.SaveChanges();
                    foreach (var answerID in myTestModel.SelectedPreTestAnswer)
                    {
                        int questionID = myTestModel.getQuestionID(answerID);

                        Data_Collection_Table collectAnswer = new Data_Collection_Table
                        {
                            User_Id     = userID,
                            Answer_Id   = answerID,
                            Pre_Test    = 1,
                            Attempt     = null,
                            Question_Id = questionID,
                            Case_Id     = caseID
                        };
                        db.Add(collectAnswer);
                    }
                    db.SaveChanges();
                }
                return(RedirectToAction("Activity", "CME", new { id = caseID, q = 0 }));
            }
        }
        public ActionResult Results(string id)
        {
            CookieOptions option = new CookieOptions();

            option.Expires     = DateTime.Now.AddMinutes(1200);
            option.IsEssential = true;
            Response.Cookies.Append("CaseId", id, option);
            Response.Cookies.Append("lastVisited", "Result", option);
            var check = User.Identity.IsAuthenticated;

            if (!check)
            {
                return(RedirectToAction("Account", "Identity", new { id = "Login" }));
            }
            int userID = int.Parse(Request.Cookies["uID"]);
            int caseID = 0;

            if (id != null)
            {
                caseID = int.Parse(id);
            }
            TestModel myTestModel = new TestModel();

            myTestModel.UserId = userID.ToString();
            float rounded = myTestModel.getGrade(userID, caseID);

            using (var db = new ModelDbContext())
            {
                if (myTestModel.IsEarned(userID, caseID) == true)
                {
                    return(RedirectToAction("Evaluation", "CME", new { id = caseID.ToString() }));
                }
                else
                {
                    int?myAttempt = (from a in db.AttemptTable
                                     where a.Case_Id == caseID &&
                                     a.User_Id == userID &&
                                     a.Pre_Test == 0
                                     select a.Attempt_Id).Count();
                    Attempt_Table newAttempt = new Attempt_Table()
                    {
                        Attempt   = myAttempt + 1,
                        User_Id   = userID,
                        Case_Id   = caseID,
                        Date_Time = DateTime.Now,
                        Pre_Test  = 0
                    };
                    db.Add(newAttempt);
                    db.SaveChanges();
                }
                if (rounded >= 75)
                {
                    Earned_CE_Table earnedRecord = new Earned_CE_Table()
                    {
                        Case_Id = caseID,
                        User_Id = userID,
                        Date    = DateTime.Now.ToShortDateString(),
                        Pass    = 1
                    };
                    db.Add(earnedRecord);
                    db.SaveChanges();
                }
            }
            return(View(myTestModel));
        }