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); }
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); }
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); }
private static int GetDelta(QuestionStateData curStateData, QuestionStateData newStateData) { return(Convert.ToInt32(newStateData.Passed) - Convert.ToInt32(curStateData.Passed)); }