edtech / apps /api /src /services /analytics-service.ts
CognxSafeTrack
feat: backlog P0→P3 — toast system, payments, tenant isolation, feedback handler, i18n parity
6dd9bad
raw
history blame
879 Bytes
import { prisma } from './prisma';
export class AnalyticsService {
static async getDashboardStats(organizationId: string) {
const [totalUsers, activeEnrollments, completedEnrollments, totalTracks, totalRevenue] = await Promise.all([
prisma.user.count({ where: { organizationId } }),
prisma.enrollment.count({ where: { status: 'ACTIVE', organizationId } }),
prisma.enrollment.count({ where: { status: 'COMPLETED', organizationId } }),
prisma.track.count({ where: { organizationId } }),
prisma.payment.aggregate({ where: { status: 'COMPLETED', organizationId }, _sum: { amount: true } }),
]);
return {
totalUsers,
activeEnrollments,
completedEnrollments,
totalTracks,
totalRevenue: totalRevenue._sum.amount || 0
};
}
}