@memberjunction/actions-bizapps-lms
Version:
LMS system integration actions for MemberJunction
151 lines • 4 kB
TypeScript
import { LearnWorldsBaseAction } from '../learnworlds-base.action';
import { ActionParam, ActionResultSimple, RunActionParams } from '@memberjunction/actions-base';
/**
* Interface for user progress in a course
*/
export interface CourseProgress {
courseId: string;
courseTitle: string;
enrollmentId: string;
enrolledAt: Date;
lastAccessedAt?: Date;
progressPercentage: number;
completedUnits: number;
totalUnits: number;
completedLessons: number;
totalLessons: number;
totalTimeSpent: number;
averageSessionTime: number;
estimatedTimeToComplete?: number;
quizScoreAverage?: number;
assignmentsCompleted?: number;
assignmentsTotal?: number;
currentGrade?: number;
status: 'not_started' | 'in_progress' | 'completed' | 'expired';
completedAt?: Date;
expiresAt?: Date;
certificateEarned: boolean;
certificateUrl?: string;
unitProgress?: UnitProgress[];
}
/**
* Interface for progress within a course unit/module
*/
export interface UnitProgress {
unitId: string;
unitTitle: string;
unitType: 'section' | 'chapter' | 'module';
order: number;
progressPercentage: number;
completedLessons: number;
totalLessons: number;
timeSpent: number;
status: 'not_started' | 'in_progress' | 'completed';
startedAt?: Date;
completedAt?: Date;
lessons?: LessonProgress[];
}
/**
* Interface for individual lesson progress
*/
export interface LessonProgress {
lessonId: string;
lessonTitle: string;
lessonType: 'video' | 'text' | 'quiz' | 'assignment' | 'scorm' | 'interactive';
order: number;
completed: boolean;
progressPercentage: number;
timeSpent: number;
startedAt?: Date;
completedAt?: Date;
lastAccessedAt?: Date;
videoWatchTime?: number;
videoTotalTime?: number;
quizScore?: number;
quizMaxScore?: number;
quizAttempts?: number;
assignmentSubmitted?: boolean;
assignmentGrade?: number;
}
/**
* Interface for overall user learning progress
*/
export interface UserLearningProgress {
userId: string;
userEmail: string;
totalCourses: number;
coursesCompleted: number;
coursesInProgress: number;
coursesNotStarted: number;
overallProgressPercentage: number;
totalTimeSpent: number;
totalCertificatesEarned: number;
averageQuizScore?: number;
courses: CourseProgress[];
learningStreak?: number;
lastLearningDate?: Date;
mostActiveDay?: string;
preferredLearningTime?: string;
}
/**
* Action to retrieve detailed progress information for a LearnWorlds user
*/
export declare class GetLearnWorldsUserProgressAction extends LearnWorldsBaseAction {
/**
* Description of the action
*/
get Description(): string;
/**
* Main execution method
*/
protected InternalRunAction(params: RunActionParams): Promise<ActionResultSimple>;
/**
* Get progress for a specific course
*/
private getCourseProgress;
/**
* Get progress for all user courses
*/
private getAllCoursesProgress;
/**
* Map course progress data
*/
private mapCourseProgress;
/**
* Map unit progress data
*/
private mapUnitProgress;
/**
* Map lesson progress data
*/
private mapLessonProgress;
/**
* Determine course status from data
*/
private determineCourseStatus;
/**
* Determine unit status
*/
private determineUnitStatus;
/**
* Map lesson type
*/
private mapLessonType;
/**
* Calculate estimated time to complete
*/
private calculateEstimatedTimeToComplete;
/**
* Calculate learning analytics
*/
private calculateLearningAnalytics;
/**
* Create progress summary
*/
private createProgressSummary;
/**
* Define the parameters for this action
*/
get Params(): ActionParam[];
}
//# sourceMappingURL=get-user-progress.action.d.ts.map