예제 #1
0
        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());
            }
        }
예제 #2
0
        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());
            }
        }