Esempio n. 1
0
        public JsonResult CaptureResult(SelectOption optionSelected)
        {
            if (Session["usercookie"] == null)
            {
                return(Json(new { success = false, responseText = "Session Expired. Please Users!!." }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                if (optionSelected.QId != 0)
                {
                    using (DBEntities dbContext = new DBEntities())
                    {
                        try
                        {
                            Users   usercookie     = Session["usercookie"] as Users;
                            Courses SelectedCourse = Session["SelectedCourse"] as Courses;
                            Papers  SelectedPaper  = Session["SelectedPaper"] as Papers;
                            Levels  SelectedLevel  = Session["SelectedLevel"] as Levels;
                            Guid    TestId         = new Guid(Session["TestId"].ToString());

                            var UpdateAnswers = dbContext.StudentTestLog.Where(s => s.UserId == usercookie.Id && s.TestId == TestId && s.QId == optionSelected.QId).ToList();
                            foreach (StudentTestLog deletelog in UpdateAnswers)
                            {
                                dbContext.StudentTestLog.Remove(deletelog);
                                dbContext.SaveChanges();
                            }
                            StudentTestLog log = new StudentTestLog();
                            log.TestId          = TestId;
                            log.CourseId        = SelectedCourse.CourseId;
                            log.PaperId         = SelectedPaper.PaperId;
                            log.UserId          = usercookie.Id;
                            log.QId             = optionSelected.QId;
                            log.Level           = SelectedLevel.Level;
                            log.SelectedOption  = optionSelected.SelectedOption;
                            log.MultiLineAnswer = optionSelected.Comprehensive;
                            log.isCorrected     = false;

                            dbContext.StudentTestLog.Add(log);
                            dbContext.SaveChanges();
                            ModelState.Clear();
                            return(Json(new { success = true, responseText = "Result Captured. Please Continue with next questions." }, JsonRequestBehavior.AllowGet));
                        }
                        catch (Exception ex)
                        {
                            return(Json(new { success = false, responseText = "Error Occured. Please re-attempt the same question again or contact administrator. Error: " + ex.Message }, JsonRequestBehavior.AllowGet));
                        }
                    }
                }
                else
                {
                    return(Json(new { success = false, responseText = "Please Select option." }, JsonRequestBehavior.AllowGet));
                }
            }
        }
Esempio n. 2
0
        public JsonResult Validate(ValidateTest score)
        {
            if (Session["usercookie"] == null)
            {
                return(Json(new { success = false, responseText = "Please Login again" }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                using (DBEntities dbcontext = new DBEntities())
                {
                    var duplicate = dbcontext.Scores.Where(s => s.TestId == score.TestId && s.QId == score.QId).ToList();
                    if (duplicate.Count > 0)
                    {
                        foreach (Scores delete in duplicate)
                        {
                            dbcontext.Scores.Remove(delete);
                            dbcontext.SaveChanges();
                        }
                    }
                    Scores log = new Scores();
                    log.UserId          = score.UserId;
                    log.TestId          = score.TestId;
                    log.QId             = score.QId;
                    log.Score           = score.Score;
                    log.LastUpdatedDate = DateTime.UtcNow;
                    dbcontext.Scores.Add(log);
                    dbcontext.SaveChanges();

                    StudentTestLog updateLog = dbcontext.StudentTestLog.Where(s => s.TestId == score.TestId && s.QId == score.QId).FirstOrDefault();
                    updateLog.isCorrected = true;
                    dbcontext.SaveChanges();

                    return(Json(new { success = true, responseText = "Updated Score for User Id " + log.UserId + " with score " + log.Score + " for QId " + log.QId }, JsonRequestBehavior.AllowGet));
                }
            }
        }
Esempio n. 3
0
        public ActionResult CalculateScore()
        {
            if (Session["usercookie"] == null)
            {
                return(RedirectToAction("Authenticate", "Users"));
            }
            else
            {
                try
                {
                    using (DBEntities dbContext = new DBEntities())
                    {
                        Users   usercookie     = Session["usercookie"] as Users;
                        Courses SelectedCourse = Session["SelectedCourse"] as Courses;
                        Papers  SelectedPaper  = Session["SelectedPaper"] as Papers;
                        Levels  SelectedLevel  = Session["SelectedLevel"] as Levels;
                        Guid    TestId         = new Guid(Session["TestId"].ToString());
                        Scores  scoreCard      = new Scores();

                        var testType = dbContext.AllocateCourse.Where(a => a.UserId == usercookie.Id && a.CourseId == SelectedCourse.CourseId).FirstOrDefault();

                        StudentTestLog checkIfAlreadyTaken = dbContext.StudentTestLog.Where(s => s.UserId == usercookie.Id && s.CourseId == SelectedCourse.CourseId &&
                                                                                            s.PaperId == SelectedPaper.PaperId && s.Level == SelectedLevel.Level).FirstOrDefault();

                        var questions   = dbContext.GetQuestions(SelectedCourse.CourseId, SelectedPaper.PaperId, usercookie.Id, SelectedLevel.Level).ToList();
                        var isCorrected = dbContext.Scores.Where(s => s.TestId == checkIfAlreadyTaken.TestId).FirstOrDefault();

                        scoreCard.CourseName = dbContext.Courses.Where(c => c.CourseId == checkIfAlreadyTaken.CourseId).Select(s => s.CourseName).FirstOrDefault().ToString();
                        scoreCard.paperName  = dbContext.Papers.Where(c => c.PaperId == checkIfAlreadyTaken.PaperId).Select(s => s.PaperName).FirstOrDefault().ToString();
                        scoreCard.LevelName  = dbContext.Levels.Where(c => c.Level == checkIfAlreadyTaken.Level).Select(s => s.LevelName).FirstOrDefault().ToString();
                        scoreCard.userName   = dbContext.Users.Where(c => c.Id == usercookie.Id).Select(s => s.UserName).FirstOrDefault().ToString();

                        if (testType.TestType == 1 && isCorrected == null)
                        {
                            List <StudentTestLog> result = dbContext.StudentTestLog.Where(q => q.CourseId == SelectedCourse.CourseId &&
                                                                                          q.PaperId == SelectedPaper.PaperId &&
                                                                                          q.Level == SelectedLevel.Level &&
                                                                                          q.isCorrected == false &&
                                                                                          q.TestId == TestId).ToList();
                            int score = 0;
                            foreach (StudentTestLog answer in result)
                            {
                                Scores captureScore = new Scores();
                                var    isCorrect    = dbContext.Answers.Where(a => a.QId == answer.QId && a.CorrectOption == answer.SelectedOption).FirstOrDefault();
                                if (isCorrect != null)
                                {
                                    score++;
                                    captureScore.Score = 1;
                                }
                                else
                                {
                                    captureScore.Score = 0;
                                }

                                answer.isCorrected = true;
                                dbContext.SaveChanges();

                                //Delete existing duplicate test id if already present
                                var DuplicateScoreList = dbContext.Scores.Where(s => s.TestId == TestId && s.QId == answer.QId).ToList();
                                if (DuplicateScoreList.Count >= 1)
                                {
                                    foreach (Scores deletescore in DuplicateScoreList)
                                    {
                                        dbContext.Scores.Remove(deletescore);
                                        dbContext.SaveChanges();
                                    }
                                }
                                //Add fresh score to the board
                                captureScore.QId             = answer.QId;
                                captureScore.TestId          = TestId;
                                captureScore.UserId          = answer.UserId;
                                captureScore.LastUpdatedDate = DateTime.UtcNow;
                                dbContext.Scores.Add(captureScore);
                                dbContext.SaveChanges();
                            }

                            //Delete existing duplicate test id if already present
                            var DuplicateCardList = dbContext.ReportCard.Where(s => s.TestId == TestId).ToList();
                            if (DuplicateCardList.Count >= 1)
                            {
                                foreach (ReportCard deleteCard in DuplicateCardList)
                                {
                                    dbContext.ReportCard.Remove(deleteCard);
                                    dbContext.SaveChanges();
                                }
                            }

                            //Add fresh report card to the board
                            ReportCard card = new ReportCard();
                            card.TestId      = TestId;
                            card.UserId      = usercookie.Id;
                            card.CourseId    = SelectedCourse.CourseId;
                            card.Paperid     = SelectedPaper.PaperId;
                            card.LevelId     = SelectedLevel.Level;
                            card.LastUpdated = DateTime.UtcNow;
                            card.IsRevaluate = false;
                            card.TotalScore  = dbContext.Scores.Where(s => s.TestId == TestId).Select(s => s.Score).Sum();
                            dbContext.ReportCard.Add(card);
                            dbContext.SaveChanges();

                            scoreCard.Score   = card.TotalScore;
                            Session["TestId"] = null;
                            return(View(scoreCard));
                        }
                        else if (checkIfAlreadyTaken.TestId != TestId)
                        {
                            Session["TestId"]  = null;
                            scoreCard.Score    = -1;
                            ViewData["msg"]    = "Already Taken. Please contact admin if you did not attempted this paper.";
                            ViewData["testId"] = checkIfAlreadyTaken.TestId;
                            return(View(scoreCard));
                        }
                        else
                        {
                            Session["TestId"] = null;
                            scoreCard.Score   = -1;
                            ViewData["msg"]   = "Review Under Progress. You will be notified soon!!.";
                            return(View(scoreCard));
                        }
                    }
                }
                catch
                {
                    return(RedirectToAction("GetCourse"));
                }
            }
        }