2023-05-15 14:36:38 +03:00

90 lines
3.2 KiB
TypeScript

import { Injectable } from '@angular/core';
import { FuseMockApiService } from '@fuse/lib/mock-api/mock-api.service';
import { categories as categoriesData, courses as coursesData, demoCourseSteps as demoCourseStepsData } from 'app/mock-api/apps/academy/data';
import { cloneDeep } from 'lodash-es';
@Injectable({
providedIn: 'root',
})
export class AcademyMockApi
{
private _categories: any[] = categoriesData;
private _courses: any[] = coursesData;
private _demoCourseSteps: any[] = demoCourseStepsData;
/**
* Constructor
*/
constructor(private _fuseMockApiService: FuseMockApiService)
{
// Register Mock API handlers
this.registerHandlers();
}
// -----------------------------------------------------------------------------------------------------
// @ Public methods
// -----------------------------------------------------------------------------------------------------
/**
* Register Mock API handlers
*/
registerHandlers(): void
{
// -----------------------------------------------------------------------------------------------------
// @ Categories - GET
// -----------------------------------------------------------------------------------------------------
this._fuseMockApiService
.onGet('api/apps/academy/categories')
.reply(() =>
{
// Clone the categories
const categories = cloneDeep(this._categories);
// Sort the categories alphabetically by title
categories.sort((a, b) => a.title.localeCompare(b.title));
return [200, categories];
});
// -----------------------------------------------------------------------------------------------------
// @ Courses - GET
// -----------------------------------------------------------------------------------------------------
this._fuseMockApiService
.onGet('api/apps/academy/courses')
.reply(() =>
{
// Clone the courses
const courses = cloneDeep(this._courses);
return [200, courses];
});
// -----------------------------------------------------------------------------------------------------
// @ Course - GET
// -----------------------------------------------------------------------------------------------------
this._fuseMockApiService
.onGet('api/apps/academy/courses/course')
.reply(({request}) =>
{
// Get the id from the params
const id = request.params.get('id');
// Clone the courses and steps
const courses = cloneDeep(this._courses);
const steps = cloneDeep(this._demoCourseSteps);
// Find the course and attach steps to it
const course = courses.find(item => item.id === id);
if ( course )
{
course.steps = steps;
}
return [
200,
course,
];
});
}
}