public static void CreateScoRecordsForCourse(Enrollment enrollment, ApplicationDbContext context) { var courseTemplateId = enrollment.Course.CourseTemplateId; var courseScos = context.CourseScos.Include(c => c.Sco).Where(cm => cm.CourseTemplateId == courseTemplateId); foreach (var item in courseScos) { var scoRecord = new ScoRecord { Title = item.Title, EnrollmentId = enrollment.Id, CatalogueNumber = item.CatalogueNumber, ScoId = item.Sco.Id, ScormName = "", ScormValue = "", LessonStatus = "", LastClosed = DateTime.Parse("1900-1-1"), Stored = DateTime.Parse("1900-1-1"), TimeStamp = DateTime.Parse("1900-1-1"), CourseTemplateId = enrollment.Course.CourseTemplateId, CourseId = enrollment.CourseId, ActorId = enrollment.ApplicationUserId, //IsEnabled = item.RequiredCourseScoId == 0, IsFinalExam = item.IsFinalExam }; //var requiredRecord = context.CourseScos.Find(item.RequiredCourseScoId); //if (requiredRecord != null) // scoRecord.RequiredScoId = requiredRecord.ScoId; context.ScoRecords.Add(scoRecord); } context.SaveChanges(); }
private static bool HasJustBeenCompleted(ScoRecord scoRecord) { var previouslyCompletedSco = scoRecord.IsCompleted; var currentCompletedSco = scoRecord.LessonStatus == "passed" || scoRecord.LessonStatus == "completed" ? true : false; scoRecord.IsCompleted = scoRecord.IsCompleted ? scoRecord.IsCompleted : currentCompletedSco; var justCompletedSco = previouslyCompletedSco != currentCompletedSco; return justCompletedSco; }
private static void ExtractFieldValuesFromRawScormValue(ref ScoRecord scoRecord) { //This could be done each time the scoRecord is updated in the default or once at the end of the session - "finish" var dict = ScormServices.CreateDictionaryFromJsonScormObject(scoRecord); scoRecord.LessonStatus = dict["cmi.core.lesson_status"].ToString(); }
private void MakeNextLessonEnabled(ref ScoRecord scoRecord) { scoRecord.IsCompleted = true; //Enable Next Lesson in this course ScoRecord record = scoRecord; var nextScoRecord = _context.ScoRecords.FirstOrDefault( s => s.RequiredScoId == record.ScoId && s.CourseId == record.CourseId && s.EnrollmentId == record.EnrollmentId); if (nextScoRecord != null) { nextScoRecord.IsEnabled = true; } _context.SaveChanges(); }
private void UpdateCourseEnrollmentRecord(ScoRecord scoRecord) { try { var enrollment = _context.Enrollments.Find(scoRecord.EnrollmentId); if (enrollment != null) { enrollment.Score = scoRecord.Score; enrollment.PassedDate = scoRecord.TimeStamp; } _context.SaveChanges(); } catch (Exception ex) { Console.WriteLine(ex); } }
private ScoRecord ProcessEndOfLesson(ScoRecord scoRecord, bool justCompletedSco) { if (scoRecord.LessonStatus == "complete" || scoRecord.LessonStatus == "passed") { MakeNextLessonEnabled(ref scoRecord); } ScormServices.AddAnswersToDataBase(scoRecord, _context); return scoRecord; }
private void ProcessAnyFinalExam(ScoRecord scoRecord) { if (scoRecord.IsFinalExam) { if (scoRecord.IsCompleted) { UpdateCourseEnrollmentRecord(scoRecord); } } }