public void SetScormData(string userId, string lessonId, string enrollmentId, string param, string value) { var enrollment = unitOfWork.EnrollmentRepository.GetById(enrollmentId); if (enrollment.UserId == userId) { var scormData = enrollment.ScormData.SingleOrDefault(x => x.LessonId == lessonId); if (scormData != null) { JObject jsonData = null; if (scormData.DataResult == ScormDataResultEnum.NotStarted) { scormData.DataResult = ScormDataResultEnum.Started; } if (scormData.TemporaryData != null) { jsonData = JObject.Parse(scormData.TemporaryData); if (jsonData[param] == null) { jsonData.Add(new JProperty(param, value)); } else { jsonData[param] = value; } scormData.TemporaryData = jsonData.ToString(); } else { jsonData = new JObject(new JProperty(param, value)); scormData.TemporaryData = jsonData.ToString(); } unitOfWork.EnrollmentRepository.Update(enrollment); unitOfWork.SaveChanges(); } else { scormData = new ScormData(); JObject jsonData = new JObject(); scormData.DataResult = ScormDataResultEnum.Started; jsonData.Add(new JProperty(param, value)); scormData.TemporaryData = jsonData.ToString(); enrollment.ScormData.Add(scormData); unitOfWork.EnrollmentRepository.Update(enrollment); unitOfWork.SaveChanges(); } } }
private void CheckScormCompletion(ScormData scormData) { logger.Trace("Inside CheckLessonCompletion"); var jsonData = JObject.Parse(scormData.PersistentData); var lessonStatus = jsonData["cmi.core.lesson_status"]; var successStatus = jsonData["cmi.success_status"]; logger.Info("id: {0}, lessonStatus: {1}, successStatus: {2}", scormData.Id, lessonStatus, successStatus); if ((lessonStatus != null && lessonStatus.ToString() == "passed") || (successStatus != null && successStatus.ToString() == "passed")) { scormData.IsCompleted = true; scormData.DataResult = ScormDataResultEnum.Passed; logger.Debug("Passed... lessonData.DataResult: " + scormData.DataResult); } if ((lessonStatus != null && lessonStatus.ToString() == "failed") || (successStatus != null && successStatus.ToString() == "failed")) { scormData.IsCompleted = true; scormData.DataResult = ScormDataResultEnum.Faild; } }