import { Controller, Post, Get, Put, Delete, Param, Body, UseGuards, Query, } from '@nestjs/common'; import { AdminService } from './admin.service'; import { CreateCourseDto } from './dto/create-course.dto'; import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard'; import { RolesGuard } from '../auth/guards/roles.guard'; import { Roles } from '../auth/decorators/roles.decorator'; import { UserRole } from '../entities/user.entity'; @Controller('api/admin') @UseGuards(JwtAuthGuard, RolesGuard) @Roles(UserRole.ADMIN) export class AdminController { constructor(private readonly adminService: AdminService) {} @Post('courses') async createCourse(@Body() createCourseDto: CreateCourseDto) { const data = await this.adminService.createCourse(createCourseDto); return { success: true, data }; } @Put('courses/:id') async updateCourse( @Param('id') id: string, @Body() updateData: Partial, ) { const data = await this.adminService.updateCourse(Number(id), updateData); return { success: true, data }; } @Delete('courses/:id') async deleteCourse(@Param('id') id: string) { await this.adminService.deleteCourse(Number(id)); return { success: true }; } @Get('orders') async getOrders() { const data = await this.adminService.getOrders(); return { success: true, data }; } @Get('statistics') async getStatistics( @Query('startDate') startDate?: string, @Query('endDate') endDate?: string, ) { const data = await this.adminService.getStatistics(startDate, endDate); return { success: true, data }; } @Get('statistics/details') async getStatisticsDetails( @Query('type') type: string, @Query('startDate') startDate?: string, @Query('endDate') endDate?: string, ) { const data = await this.adminService.getStatisticsDetails(type, startDate, endDate); return { success: true, data }; } }