Ejemplo n.º 1
0
        public static CourseProgressData Update(
            this CourseProgressData courseProgressData,
            int lessonId,
            int stepId,
            int questionId,
            QuestionStateData questionStateData)
        {
            if (courseProgressData == null)
            {
                throw new ArgumentNullException(nameof(courseProgressData));
            }

            if (questionStateData == null)
            {
                throw new ArgumentNullException(nameof(questionStateData));
            }

            var lessonProgress = courseProgressData.LessonProgresses[lessonId];
            var stepProgress   = lessonProgress.StepProgresses[stepId];
            var questionStates = stepProgress.QuestionStates;

            courseProgressData.StatisticsData.PassedQuestionsCount += GetDelta(questionStates[questionId], questionStateData);

            questionStates[questionId] = questionStateData;

            stepProgress.Passed       = stepProgress.QuestionStates.TrueForAll(x => x.Passed);
            lessonProgress.Passed     = lessonProgress.StepProgresses.TrueForAll(x => x.Passed);
            courseProgressData.Passed = courseProgressData.LessonProgresses.TrueForAll(x => x.Passed);

            return(courseProgressData);
        }
Ejemplo n.º 2
0
        public static QuestionState ToApiModel(this QuestionStateData questionStateData)
        {
            var result = new QuestionState
            {
                ProgressId               = questionStateData.ProgressId,
                CourseId                 = questionStateData.CourseId,
                LessonId                 = questionStateData.LessonId,
                StepId                   = questionStateData.StepId,
                QuestionId               = questionStateData.QuestionId,
                CurrentAttemptsCount     = questionStateData.CurrentAttemptsCount,
                Passed                   = questionStateData.Passed,
                CorrectlySelectedAnswers = new List <int>(questionStateData.CorrectlySelectedAnswers),
                SelectedAnswers          = new List <int>(questionStateData.SelectedAnswers)
            };

            return(result);
        }
        public static QuestionStateData GetQuestionState(this QuestionData questionData)
        {
            if (questionData == null)
            {
                throw new ArgumentNullException(nameof(questionData));
            }

            var result = new QuestionStateData
            {
                QuestionId               = questionData.Id,
                CourseId                 = questionData.CourseId,
                LessonId                 = questionData.LessonId,
                StepId                   = questionData.StepId,
                SelectedAnswers          = new List <int>(),
                CorrectlySelectedAnswers = new List <int>()
            };

            return(result);
        }
Ejemplo n.º 4
0
        public static QuestionStateData Update(this QuestionStateData stateData, QuestionData questionData, List <int> selected)
        {
            if (stateData == null)
            {
                throw new ArgumentNullException(nameof(stateData));
            }

            if (questionData == null)
            {
                throw new ArgumentNullException(nameof(questionData));
            }

            if (selected == null)
            {
                throw new ArgumentNullException(nameof(selected));
            }

            stateData.SelectedAnswers          = new List <int>(selected);
            stateData.CorrectlySelectedAnswers = selected.Where(x => questionData.CorrectAnswers.Contains(x)).ToList();
            stateData.Passed = stateData.SelectedAnswers.Count == stateData.CorrectlySelectedAnswers.Count;
            stateData.CurrentAttemptsCount++;
            return(stateData);
        }
Ejemplo n.º 5
0
 private static int GetDelta(QuestionStateData curStateData, QuestionStateData newStateData)
 {
     return(Convert.ToInt32(newStateData.Passed) - Convert.ToInt32(curStateData.Passed));
 }