public void ModuleChanged(Lesson lesson)
        {
            Lessons = lesson.Lessons;

            // This is an utter and total hack to allow notebooks (Top) to be visually split from the survey once per course (bottom)
            SupportingDocumentsTop = lesson.Contents.OfType<VideoContent>().Where( vc => !vc.Name.Contains("survey" ) ).ToObservableCollection();
            SupportingDocumentsBottom = lesson.Contents.OfType<VideoContent>().Where(vc => vc.Name.Contains("survey")).ToObservableCollection();
        }        
        public void PrepareLesson(Lesson lesson)
        {
            CurrentLesson = lesson;
            Contents = lesson.Contents;

            Contents.ToList().ForEach(c => c.IsCompleted = false);
            Contents.ToList().ForEach(c => c.IsPassingEffort = false);
            Contents.Where(c => c is QuizContent).Cast<QuizContent>()
                .ToList().ForEach(ClearResponses);

            if (lesson.Contents.Count > 0)
            {
                PublishNextContent(null);
            }
        }
 public void NavigateToLesson(Lesson lesson)
 {
     navigator.Navigate(PageUri.LessonContent);
 }
        public void UpdateUserScores(Lesson lesson)
        {
            LessonResult result = previousScores.FirstOrDefault(
                lr => lr.LessonId == lesson.EntryId 
                && lr.UserEmail == loginService.CurrentUser.Email);

            if (result == null)
            {
                result = new LessonResult()
                {
                    LessonId = lesson.EntryId,
                    UserEmail = loginService.CurrentUser.Email,
                    IsPassingScore = lesson.IsPassingScore,
                    FinalScore = lesson.Score
                };

                previousScores.Add(result);
            }
            else
            {
                result.IsPassingScore = lesson.IsPassingScore;
                result.FinalScore = lesson.Score;
            }

            int totalLessonCount = ActiveCourse.Lessons.SelectMany( l=> l.Lessons ).Count( l => l.IsScored );
            int completedLessonCount = ActiveCourse.Lessons.SelectMany( l => l.Lessons ).Count( l => l.IsPassingScore );
            int overallPercentComplete = completedLessonCount * 100 / totalLessonCount;
            bool isPassed = totalLessonCount == completedLessonCount;

            ActiveCourse.PercentComplete = overallPercentComplete;
            ActiveCourse.IsCoursePassed = isPassed;
            ActiveCourse.DatePassed = DateTime.Now;

            CourseResult courseResult = new CourseResult()
            {
                CourseId = this.activeCourse.ID,
                UserEmail = loginService.CurrentUser.Email,
                IsPassingScore = ActiveCourse.IsCoursePassed,
                PercentComplete = ActiveCourse.PercentComplete,
                PassingDate = ActiveCourse.DatePassed
            };

            UpdateUserLessonScoreCommand command = new UpdateUserLessonScoreCommand(result, courseResult);
            command.Execute();
        }
 private void AssociatePriorResults(Lesson lesson)
 {
     LessonResult previous = previousScores.FirstOrDefault(lr => lr.LessonId == lesson.EntryId);
     if (previous != null)
     {
         lesson.IsAttempted = true;
         lesson.IsPassingScore = previous.IsPassingScore;
         lesson.Score = previous.FinalScore;
     }
 }