//Calculates progress for all exercises under this lesson for the current user private ProgressLessonModel CalculateLessonProgress(string id) { ProgressLessonModel progressLessonModel = new ProgressLessonModel(); using (var db = new TeachMeBackendContext()) { var exercises = db.Exercises.Where(ex => ex.LessonId == id).Include(ex => ex.ExerciseStudents); progressLessonModel.ExercisesNumber = exercises.Count(); if (User is ClaimsPrincipal claimsPrincipal) { var userId = claimsPrincipal.FindFirst(ClaimTypes.PrimarySid).Value; progressLessonModel.ExercisesDone = exercises.Count(ex => ex.ExerciseStudents.Any(c => c.UserId == userId && c.IsDone)); var lessonProgress = db.LessonProgresses.FirstOrDefault(p => p.UserId == userId && p.LessonId == id); if (lessonProgress != null) { progressLessonModel.IsDone = lessonProgress.IsDone; progressLessonModel.IsStarted = lessonProgress.IsDone; } } } return(progressLessonModel); }
public IHttpActionResult GetLessonProgress(string id) { Lesson lesson = _db.Lessons.Find(id); if (lesson == null) { return(NotFound()); } //Calculates progress for all exercises under this lesson for the current user ProgressLessonModel progress = CalculateLessonProgress(id); return(Ok(progress)); }
public IHttpActionResult GetLessonProgress(string id) { using (var db = new TeachMeBackendContext()) { Lesson lesson = db.Lessons.Find(id); if (lesson == null) { return(NotFound()); } } //Calculates progress for all exercises under this lesson for the current user ProgressLessonModel progress = CalculateLessonProgress(id); return(Ok(progress)); }