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)); } } }
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)); } } }
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")); } } }