feat: added logic to handle failure cases on SCORM courses failure (Whether to allow retake of final quiz or Reset the whole Course)

This commit is contained in:
FahidLatheef
2025-01-21 16:23:33 +05:30
parent 281e155480
commit 19e5136d64

View File

@@ -47,6 +47,12 @@ import { updateDocumentTitle } from '@/utils'
const sidebarStore = useSidebar() const sidebarStore = useSidebar()
const user = inject('$user') const user = inject('$user')
const readyToRender = ref(false) const readyToRender = ref(false)
const isSuccessfullyCompleted = ref(false)
// If courseRestartOnFailure is true, student has to restart the whole course if failed.
// Otherwise, student could retake the final quiz portion.
// Ideally, this should be configurable along with `Number of failures before course should restart`.
const courseRestartOnFailure = false
const props = defineProps({ const props = defineProps({
courseName: { courseName: {
@@ -97,12 +103,20 @@ const getDataFromLMS = (key) => {
} }
const saveDataToLMS = (key, value) => { const saveDataToLMS = (key, value) => {
if (key === 'cmi.core.lesson_status' && value === 'passed') { if (key === 'cmi.core.lesson_status') {
saveProgress({ if (value === 'passed') {
is_complete: true, isSuccessfullyCompleted.value = true
scorm_content: '', saveProgress({
}) is_complete: isSuccessfullyCompleted.value,
} else if (key === 'cmi.suspend_data') { scorm_content: '',
})
} else if (value === 'failed' && courseRestartOnFailure) {
saveProgress({
is_complete: isSuccessfullyCompleted.value,
scorm_content: '',
})
}
} else if (key === 'cmi.suspend_data' && !isSuccessfullyCompleted.value) {
saveProgress({ saveProgress({
is_complete: false, is_complete: false,
scorm_content: value, scorm_content: value,