diff --git a/frontend/src/controllers/controllers.ts b/frontend/src/controllers/controllers.ts index ad526276..b9f10233 100644 --- a/frontend/src/controllers/controllers.ts +++ b/frontend/src/controllers/controllers.ts @@ -1,4 +1,6 @@ import { ThemeController } from "@/controllers/themes.ts"; +import {LearningObjectController} from "@/controllers/learning-objects.ts"; +import {LearningPathController} from "@/controllers/learning-paths.ts"; export function controllerGetter(Factory: new () => T): () => T { let instance: T | undefined; @@ -12,3 +14,5 @@ export function controllerGetter(Factory: new () => T): () => T { } export const getThemeController = controllerGetter(ThemeController); +export const getLearningObjectController = controllerGetter(LearningObjectController); +export const getLearningPathController = controllerGetter(LearningPathController); diff --git a/frontend/src/controllers/learning-paths.ts b/frontend/src/controllers/learning-paths.ts new file mode 100644 index 00000000..8859902e --- /dev/null +++ b/frontend/src/controllers/learning-paths.ts @@ -0,0 +1,23 @@ +import {BaseController} from "@/controllers/base-controller.ts"; +import {LearningPath} from "@/data-objects/learning-path.ts"; +import type {LearningPathDTO} from "@/data-objects/learning-path.ts"; +import type {Language} from "@/data-objects/language.ts"; + +export class LearningPathController extends BaseController { + constructor() { + super("learningPath"); + } + async search(query: string) { + let dtos = await this.get("/", {search: query}); + return dtos.map(dto => LearningPath.fromDTO(dto)); + } + async getBy(hruid: string, language: Language, options?: {forGroup?: string, forStudent?: string}) { + let dtos = await this.get("/", { + hruid, + language, + forGroup: options?.forGroup, + forStudent: options?.forStudent + }); + return dtos.map(dto => LearningPath.fromDTO(dto)) + } +} diff --git a/frontend/src/services/learning-content/language.ts b/frontend/src/data-objects/language.ts similarity index 100% rename from frontend/src/services/learning-content/language.ts rename to frontend/src/data-objects/language.ts diff --git a/frontend/src/services/learning-content/learning-object.ts b/frontend/src/data-objects/learning-object.ts similarity index 90% rename from frontend/src/services/learning-content/learning-object.ts rename to frontend/src/data-objects/learning-object.ts index ff660420..9599d44f 100644 --- a/frontend/src/services/learning-content/learning-object.ts +++ b/frontend/src/data-objects/learning-object.ts @@ -1,4 +1,4 @@ -import type {Language} from "@/services/learning-content/language.ts"; +import type {Language} from "@/data-objects/language.ts"; export interface EducationalGoal { source: string;