import EducationRoute from "../routes/EducationRoute"; import Requests from "../util/Requests"; import Response from "../util/Response"; import { AxiosPromise } from "axios"; class Education { // --- 1. CATEGORIES --- public static listCategories(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listCategories, undefined, undefined, params); } public static viewCategory(uuid: string, params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewCategory, undefined, { uuid }, params); } public static createCategory(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createCategory, data); } public static updateCategory(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateCategory, data, { uuid }); } public static deleteCategory(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteCategory, undefined, { uuid }); } // --- 2. TRACKS --- public static listTracks(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listTracks, undefined, undefined, params); } public static viewTrack(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewTrack, undefined, { uuid }); } public static createTrack(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createTrack, data); } public static updateTrack(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateTrack, data, { uuid }); } public static deleteTrack(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteTrack, undefined, { uuid }); } public static registerForTrack(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.registerTrack, {}, { uuid }); } public static myTracks(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.myTracks); } public static getTrackAnalytics(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.trackAnalytics, undefined, { uuid }); } // --- 3. CONTENT --- public static listContent(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listContent, undefined, undefined, params); } public static viewContent(uuid: string, params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewContent, undefined, { uuid }, params); } public static createContent(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createContent, data); } public static updateContent(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateContent, data, { uuid }); } public static deleteContent(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteContent, undefined, { uuid }); } public static heartbeat(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.contentHeartbeat, data, { uuid }); } public static getSecureVideo(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.getSecureVideo, undefined, { uuid }); } public static getPreviewSecureVideo(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.getPreviewSecureVideo, undefined, { uuid }); } public static listAllProgress(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listAllProgress, undefined, undefined, params); } // --- 4. TRACK CONTENT (PIVOT) --- public static listTrackContent(track_id: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listTrackContent, undefined, { track_id }); } public static addContentToTrack(track_id: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.addContentToTrack, data, { track_id }); } public static removeContentFromTrack(track_id: string, content_id: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.removeContentFromTrack, undefined, { track_id, content_id }); } public static reorderTrackContent(track_id: string, content_ids: string[]): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reorderTrackContent, { content_ids }, { track_id }); } // --- 5. QUIZZES --- public static listQuizzes(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listQuizzes, undefined, undefined, params); } public static viewQuiz(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewQuiz, undefined, { uuid }); } public static submitQuiz(uuid: string, answers: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.submitQuiz, { answers }, { uuid }); } public static myQuizAttempts(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.myQuizAttempts, undefined, { uuid }); } public static viewQuizAttempt(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewQuizAttempt, undefined, { uuid }); } public static createQuiz(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createQuiz, data); } public static updateQuiz(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateQuiz, data, { uuid }); } public static deleteQuiz(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteQuiz, undefined, { uuid }); } // --- 6. QUIZ QUESTIONS & OPTIONS --- public static listQuizQuestions(quiz_id: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listQuizQuestions, undefined, { quiz_id }); } public static createQuizQuestion(quiz_id: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createQuizQuestion, data, { quiz_id }); } public static reorderQuizQuestions(quiz_id: string, question_ids: string[]): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reorderQuizQuestions, { question_ids }, { quiz_id }); } public static listQuizOptions(question_id: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listQuizOptions, undefined, { question_id }); } public static createQuizOption(question_id: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createQuizOption, data, { question_id }); } public static viewQuizQuestion(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewQuizQuestion, undefined, { uuid }); } public static updateQuizQuestion(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateQuizQuestion, data, { uuid }); } public static deleteQuizQuestion(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteQuizQuestion, undefined, { uuid }); } // --- QUIZ OPTIONS (CRUD) --- public static viewQuizOption(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewQuizOption, undefined, { uuid }); } public static updateQuizOption(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateQuizOption, data, { uuid }); } public static deleteQuizOption(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteQuizOption, undefined, { uuid }); } // --- 7. PROGRESS & REGISTRATIONS --- public static syncProgress(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.syncProgress, data); } public static getMyProgressByContent(content_id: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.myProgressByContent, undefined, { content_id }); } public static listRegistrations(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listRegistrations, undefined, undefined, params); } public static refreshUserTrack(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.refreshUserTrack, {}, { uuid }); } // --- 8. ANALYTICS & MODULE DATA --- public static logView(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.logView, data); } public static saveModuleData(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.saveModuleData, data); } public static getModuleData(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewModuleData, undefined, { uuid }); } public static getConversionReport(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reportConversion); } public static getAdoptionReport(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reportAdoption); } public static getQuestionPerformanceReport(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reportQuestionPerformance, undefined, undefined, params); } public static getRetentionReport(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.reportRetention); } /** * List raw engagement logs. * @param params Filter by user_id, content_id, or is_paid */ public static listViews(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listViews, undefined, undefined, params); } // --- 9. ACHIEVEMENTS (BADGES & CERTIFICATES) --- public static myBadges(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.myBadges); } public static awardBadge(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.awardBadge, data); } public static myCertificates(): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.myCertificates); } public static downloadCertificate(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.downloadCertificate, undefined, { uuid }); } // --- 10. TEMPLATES & UPLOADS --- public static listTemplates(params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.listTemplates, undefined, undefined, params); } public static createTemplate(data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.createTemplate, data); } public static viewTemplate(uuid: string, params?: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.viewTemplate, undefined, { uuid }, params); } public static updateTemplate(uuid: string, data: object): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.updateTemplate, data, { uuid }); } public static deleteTemplate(uuid: string): AxiosPromise> { return Requests.processRoute(EducationRoute.routes.deleteTemplate, undefined, { uuid }); } public static uploadTemplateSignature(uuid: string, file: File): AxiosPromise> { const url = EducationRoute.routes.uploadTemplateSignature.url.replace('{uuid}', uuid); return Requests.uploadFile(url, 'image', file); } public static uploadTemplateBackground(uuid: string, file: File): AxiosPromise> { const url = EducationRoute.routes.uploadTemplateBackground.url.replace('{uuid}', uuid); return Requests.uploadFile(url, 'image', file); } } export default Education;