38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { Controller, Get, Query, UseGuards } from '@nestjs/common';
|
|
import { HqAuthGuard } from '../../common/guards/hq-auth.guard';
|
|
import {
|
|
HqPermissionGuard,
|
|
RequireHqPermissions,
|
|
} from '../../common/guards/hq-permission.guard';
|
|
import { SuperAdminGuard } from '../../common/guards/super-admin.guard';
|
|
import { CurrentUser } from '../../common/decorators/current-user.decorator';
|
|
import type { AuthUser } from '../../common/guards/jwt-auth.guard';
|
|
import { AdminDashboardService } from './admin-dashboard.service';
|
|
import { AdminDashboardAnalyticsQueryDto } from './dto/admin-query.dto';
|
|
|
|
@Controller('admin/dashboard')
|
|
@UseGuards(HqAuthGuard, HqPermissionGuard)
|
|
@RequireHqPermissions('dashboard')
|
|
export class AdminDashboardController {
|
|
constructor(private readonly dashboardService: AdminDashboardService) {}
|
|
|
|
@Get('stats')
|
|
stats(@CurrentUser() user: AuthUser) {
|
|
return this.dashboardService.getStats(user.actorId);
|
|
}
|
|
|
|
@Get('analytics')
|
|
analytics(
|
|
@CurrentUser() user: AuthUser,
|
|
@Query() query: AdminDashboardAnalyticsQueryDto,
|
|
) {
|
|
return this.dashboardService.getAnalytics(user.actorId, query);
|
|
}
|
|
|
|
@Get('version')
|
|
@UseGuards(SuperAdminGuard)
|
|
version() {
|
|
return this.dashboardService.getLatestVersion();
|
|
}
|
|
}
|