Files
classroomio/apps/dashboard/src/lib/features/org/api/dash-stats.svelte.ts
T

35 lines
1.0 KiB
TypeScript
Raw Normal View History

2025-12-02 15:27:41 +01:00
import { BaseApi, classroomio } from '$lib/utils/services/api';
import type { DashStatsSuccess } from '$lib/features/org/utils/types';
/**
* API class for organization dashboard analytics
*/
class DashStatApi extends BaseApi {
stats = $state<DashStatsSuccess['data']>({
enrollments: [],
numberOfCourses: 0,
revenue: 0,
totalStudents: 0,
topCourses: []
});
/**
* Fetches dashboard statistics for an organization
* @param orgId Optional organization ID
* @param siteName Optional site name
* @returns Organization analytics data (enrollments, courses, revenue, students, top courses)
*/
async fetchOrgStats({ orgId, siteName }: { orgId?: string; siteName?: string }) {
await this.execute<typeof classroomio.dash.stats.$get>({
requestFn: () => classroomio.dash.stats.$get({ query: { orgId, siteName } }),
2025-12-02 15:27:41 +01:00
logContext: 'fetching organization stats',
onSuccess: (response) => {
this.stats = response.data;
}
});
}
}
export const dashStatApi = new DashStatApi();