public IActionResult SetOpenedQuestionsAnswers(IFormCollection AnswersForm) { try { var QuestionUserAnswer = new Dictionary <string, string>(); foreach (var key in AnswersForm) { if (!key.Equals(AnswersForm.Last())) { QuestionUserAnswer.Add(key.Key, key.Value); } } var exID = HttpContext.Session.GetInt32("ExamID"); using (var context = new ExamPlatformDbContext()) { List <ExamOpenedQuestions> UserAnswers = SetUserAnswers(context, QuestionUserAnswer, exID); UserAnswers.ForEach(x => context.ExamOpenedQuestions.Update(x)); context.SaveChanges(); return(View("ExamFinished")); } } catch (Exception ex) { logger.Error("ExamsController - SetOpenedQuestionsAnswers " + ex.Message); return(View()); } }
public IActionResult SetClosedQuestionsAnswers(IFormCollection AnswersForm) { try { var QuestionAnswer = new Dictionary <string, string>(); foreach (var key in AnswersForm) { if (!key.Equals(AnswersForm.Last())) { QuestionAnswer.Add(key.Key, key.Value); } } var exID = HttpContext.Session.GetInt32("ExamID"); using (var context = new ExamPlatformDbContext()) { var examCQuestions = (from ex in context.ExamClosedQuestions where ex.ExamsID == exID select ex.ClosedQuestions).ToList(); Results examResults = (from ex in context.Results where ex.ExamID == exID select ex).Single(); examResults = SetExamScoreFromClosedQuestionAnswers(examCQuestions, QuestionAnswer, examResults); context.Results.Update(examResults); context.SaveChanges(); var examQuestions = context.OpenedQuestion .Where(q => q.ExamOpenedQuestions.All(x => x.ExamsID == exID)) .Select(q => q).ToList(); return(RedirectToAction("ShowOpenedQuestions")); } } catch (Exception ex) { logger.Error("ExamsController - SetClosedQuestionsAnswers " + ex.Message); return(View()); } }
public ActionResult SetPointsForOpenedQuestionsToStudent(IFormCollection AnswerPoint) { try { var StudentExamModel = new Dictionary <string, List <string> >(); var Results = new Dictionary <int, double>(); foreach (var x in AnswerPoint) { List <String> valueList = new List <string>(); if (!x.Equals(AnswerPoint.Last())) { foreach (var value in x.Value) { if (x.Key == "AnswerPoints" && value.Length == 0) { TempData["Message"] = "Nie wszystkie odpowiedzi studenta otrzymały odpowiednią punktację"; return(RedirectToAction("ShowStudentExamsToCheck")); } valueList.Add(value); } StudentExamModel.Add(x.Key, valueList); } } List <int> ExamOpenedQuestionIDList = new List <int>(); List <double> ResultsList = new List <double>(); List <int> ExamsID = new List <int>(); StudentExamModel.ElementAt(1).Value.ForEach(x => ExamOpenedQuestionIDList.Add(Int32.Parse(x))); StudentExamModel.ElementAt(4).Value.ForEach( x => ResultsList.Add(double.Parse(x.Replace(".", ",")))); StudentExamModel.ElementAt(0).Value.ForEach(x => ExamsID.Add(Int32.Parse(x))); ExamsID = ExamsID.Distinct().ToList(); for (int i = 0; i < ResultsList.Count(); i++) { Results.Add(ExamOpenedQuestionIDList[i], ResultsList[i]); } using (var context = new ExamPlatformDbContext()) { List <ExamOpenedQuestions> ExamOQuestionList = new List <ExamOpenedQuestions>(); foreach (var x in Results) { var ExamOpenedQuestionModel = (from z in context.ExamOpenedQuestions where z.ExamOpenedQuestionsID == x.Key select z).Single(); ExamOpenedQuestionModel.AnswerPoints = x.Value; ExamOQuestionList.Add(ExamOpenedQuestionModel); } context.ExamOpenedQuestions.UpdateRange(ExamOQuestionList); context.SaveChanges(); foreach (var examID in ExamsID) { var score = (from x in context.ExamOpenedQuestions where x.ExamsID == examID select x.AnswerPoints).ToList(); var result = (from r in context.Results where r.ExamID == examID select r).Single(); score.ForEach(x => result.Score += x.Value); result.Grade = SetExamGrade(result.Score, result.MaxExamPoints); context.Results.Update(result); context.SaveChanges(); } } return(RedirectToAction("ShowStudentExamsToCheck")); } catch (Exception ex) { logger.Error("StudentExamsController - SetPointsForOpenedQuestionsToStudent " + ex.Message); return(View()); } }