public PartialViewResult UserQuestionAnswer(StudentAnswer objStudentAnswer)
        {
            bool IsLast = false;

            if (objStudentAnswer.AnswerText != null)
            {
                List <StudentAnswer> objstudentAnswers = Session["StdQuestionAnswer"] as List <StudentAnswer>;
                if (objstudentAnswers == null)
                {
                    objstudentAnswers = new List <StudentAnswer>();
                }
                objstudentAnswers.Add(objStudentAnswer);
                Session["StdQuestionAnswer"] = objstudentAnswers;
            }

            //  int pageSize = 1;
            pageNumber = 0;
            int CategoryId = Convert.ToInt32(Session["StuCategoryId"]);

            if (Session["StdQuestionAnswer"] == null)
            {
                pageNumber = pageNumber + 1;
            }
            else
            {
                List <StudentAnswer> canAnswer = Session["StdQuestionAnswer"] as List <StudentAnswer>;
                pageNumber = canAnswer.Count + 1;
            }
            List <Question> listOfQuestion = new List <Question>();

            listOfQuestion = db.Questions.Where(model => model.QuesCategoryId == CategoryId).ToList();
            //System.Diagnostics.Debug.WriteLine(listOfQuestion.Count);
            if (pageNumber == listOfQuestion.Count)
            {
                IsLast = true;
            }

            QuizAnswerViewModel objAnsViewModel = new QuizAnswerViewModel();
            Question            objQuestion     = new Question();

            System.Diagnostics.Debug.WriteLine("pagenumber = " + pageNumber);
            if (listOfQuestion.Count < pageNumber)
            {
                return(PartialView("asdasd"));
            }
            objQuestion = listOfQuestion[pageNumber - 1];



            objAnsViewModel.IsLast        = IsLast;
            objAnsViewModel.QuestionID    = objQuestion.QuestionID;
            objAnsViewModel.Question_Text = objQuestion.Question_Text;



            objAnsViewModel.ListOfQuizOption = (from obj in db.Options
                                                where obj.OptQuesId == objQuestion.QuestionID
                                                select new QuizOption()
            {
                OptionName = obj.OptionName,
                OptionID = obj.OptionID
            }).ToList();


            bool isOK = true;
            int  sID  = Convert.ToInt32(Session["StudentId"]);

            Category qus = db.Categories.Find(CategoryId);

            if (qus.available == 0)
            {
                isOK = false;

                int CatCount = db.Resultshows.Where(u => u.QuesCategoryId == qus.CategoryId && u.studentID == sID).Count();

                if (CatCount == 0)
                {
                    Resultshow showresult = new Resultshow();
                    showresult.studentID      = sID;
                    showresult.QuesCategoryId = qus.CategoryId;
                    showresult.totalmarks     = 0;
                    db.Resultshows.Add(showresult);
                    db.SaveChanges();
                }
            }

            ViewBag.isAvabil = isOK;

            //System.Diagnostics.Debug.WriteLine(objAnsViewModel.QuestionID + "");
            return(PartialView("QuizQuestionOption", objAnsViewModel));
        }
        public ActionResult GetFinalResult()
        {
            List <StudentAnswer> listOfQuestionAnswers;

            listOfQuestionAnswers = Session["StdQuestionAnswer"] as List <StudentAnswer>;

            var UserResult = (from objResult in listOfQuestionAnswers
                              join objAnswer in db.Answers on objResult.QuestionID equals objAnswer.AnsQuesId
                              join objQuestion in db.Questions on objResult.QuestionID equals objQuestion.QuestionID
                              select new ResultModel()
            {
                Question = objQuestion.Question_Text,
                Answer = objAnswer.AnswerText,
                AnswerByStudent = objResult.AnswerText,
                Status = objAnswer.AnswerText == objResult.AnswerText ? "Correct" : "Wrong",
            }).ToList();



            //start



            int studnetId = Convert.ToInt32(Session["StudentId"]);
            int quizCatId = Convert.ToInt32(Session["StuCategoryId"]);



            if (studnetId == 0 || quizCatId == 0)
            {
                return(RedirectToAction("SLogin", "StudentLogin"));
            }
            IEnumerable <Category> cat = db.Categories.ToList();
            int count = 0;

            foreach (var allCat in cat)
            {
                if (allCat.CategoryId == quizCatId)
                {
                    IEnumerable <Question> catQues = db.Questions.Where(q => q.QuesCategoryId == allCat.CategoryId);

                    List <Result> results = new List <Result>();
                    foreach (var data in catQues)
                    {
                        IEnumerable <Result> resultAll = db.Results
                                                         .Where(u => u.ResQuesId == data.QuestionID && u.ResStudent == studnetId);

                        if (resultAll.Count() >= 2)
                        {
                            return(RedirectToAction("GetFinalResult", "Quiz"));
                        }
                        Result resultSingle = resultAll.First();

                        if (resultSingle != null)
                        {
                            results.Add(resultSingle);
                        }
                    }

                    if (results.Count <= 0)
                    {
                        return(RedirectToAction("GetFinalResult", "Quiz"));
                    }

                    //System.Diagnostics.Debug.WriteLine(results.Count);
                    foreach (var data in results)
                    {
                        int      a       = (int)data.ResQuesId;
                        Question ResQues = db.Questions.Where(q => q.QuestionID == a).Single();
                        //System.Diagnostics.Debug.WriteLine("ResultID = " + ResQues.QuestionID);
                        Answer QuesAns = db.Answers.Where(q => q.AnsQuesId == ResQues.QuestionID).Single();

                        //System.Diagnostics.Debug.WriteLine("Student AnswerText = " + data.AnswerText);
                        //System.Diagnostics.Debug.WriteLine("Corrent ResultID = " + QuesAns.AnswerText);
                        //System.Diagnostics.Debug.WriteLine(data.AnswerText + "  " + QuesAns.AnswerText);
                        if (data.AnswerText == QuesAns.AnswerText)
                        {
                            count++;
                        }
                    }
                    //System.Diagnostics.Debug.WriteLine(count);
                    break;
                }
            }
            ViewBag.studentId = studnetId;
            ViewBag.quizCatId = quizCatId;

            ViewBag.student = db.Students.Find(studnetId);
            Category category = db.Categories.Find(quizCatId);

            if (category == null)
            {
                return(RedirectToAction("GetFinalResult", "Quiz"));
            }
            ViewBag.category = category;
            ViewBag.Count    = count;



            int CatCount = db.Resultshows.Where(u => u.QuesCategoryId == quizCatId && u.studentID == studnetId).Count();

            if (CatCount == 0)
            {
                Resultshow showresult = new Resultshow();
                showresult.studentID      = studnetId;
                showresult.QuesCategoryId = quizCatId;
                showresult.totalmarks     = count;
                db.Resultshows.Add(showresult);
                db.SaveChanges();
            }



            //end

            return(View(UserResult));
        }