Пример #1
0
        public GenericOperationResult <StudentQuizResult> ProcessResults(Quiz takenQuiz, string studentName)
        {
            var result = OperationResult.GetGenericResultObject <StudentQuizResult>();

            try
            {
                //create a new student quiz result
                var studentQuizResult = new StudentQuizResult();

                //get the actual quiz and student that took the quiz
                var actualQuiz = _quizRepository.GetItem(takenQuiz.Id);
                var student    = _userService.GetUser(studentName);

                //compare the results
                var compareResults = CompareQuizes(actualQuiz, takenQuiz);

                // get the measurments from the compared result and the actual quiz
                var totalPoints   = actualQuiz.Questions.Sum(x => x.Points);
                var studentPoints = compareResults.StudentPoints;

                // populate the student quiz result object
                var date = DateTime.Now;
                studentQuizResult.DateUpdate       = date;
                studentQuizResult.DateOpen         = date;
                studentQuizResult.QuizId           = actualQuiz.Id;
                studentQuizResult.StudentId        = student.UserID;
                studentQuizResult.PointsTotal      = totalPoints;
                studentQuizResult.PointsStudent    = studentPoints;
                studentQuizResult.CorrectQuestions = compareResults.CorrectQuestions;
                studentQuizResult.DetailResult     =
                    DetailResultSerializer.SerializeDetailedQuizResultToXml(compareResults.QuizDetailResults);

                //store the new student quiz result object
                _studentQuizResultRepository.CreateItem(studentQuizResult);

                ProcessStudentRank(student.UserName);

                var actualStudentQuizResult =
                    _studentQuizResultRepository.GetAllItems().Where(
                        x => x.StudentId == student.UserID && x.QuizId == actualQuiz.Id && x.DateUpdate >= date).FirstOrDefault();

                result.SetSuccess();
                result.SetData(actualStudentQuizResult);
                return(result);
            }
            catch (Exception e)
            {
                result.SetException();
                result.AddMessage(e.Message);
                result.AddExceptionMessage(e.Message);
                return(result);
            }
        }
Пример #2
0
        public QuizResultViewModel(string studentName, StudentQuizResult quizResult)
        {
            if (!String.IsNullOrWhiteSpace(studentName) && quizResult != null)
            {
                StudentUserName = studentName;

                QuizName = quizResult.Quiz.Name;
                QuizId   = quizResult.Quiz.Id;

                TotalPoints      = quizResult.PointsTotal;
                StudentPoints    = quizResult.PointsStudent;
                CorrectQuestions = quizResult.CorrectQuestions == null ? 0 : (int)quizResult.CorrectQuestions;

                if (quizResult.DetailResult != null)
                {
                    DetailedResults = DetailResultSerializer.DesirializeFromXml(quizResult.DetailResult);
                }
            }
        }