This commit is contained in:
2026-02-22 13:06:44 +03:30
parent 6cd55454e8
commit eee5de8d00
2 changed files with 59 additions and 55 deletions
@@ -12,18 +12,20 @@ import { PermissionEnum } from '../../common/enums/permission.enum';
@ApiTags('Criticism') @ApiTags('Criticism')
@ApiBearerAuth() @ApiBearerAuth()
@Controller('criticisms') @Controller()
export class CriticismController { export class CriticismController {
constructor(private readonly criticismService: CriticismsService) {} constructor(private readonly criticismService: CriticismsService) {}
@Post() @Post('public/criticisms')
@UseGuards(AuthGuard) @UseGuards(AuthGuard)
@ApiOperation({ summary: 'Create a new criticism' }) @ApiOperation({ summary: 'Create a new criticism' })
create(@Body() createDto: CreateCriticismDto, @UserId() userId: string) { create(@Body() createDto: CreateCriticismDto, @UserId() userId: string) {
return this.criticismService.create(createDto, userId); return this.criticismService.create(createDto, userId);
} }
@Get() //------------- Admin Routes ------------------
@Get('admin/criticisms')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_CRITICISMS) @Permissions(PermissionEnum.MANAGE_CRITICISMS)
@ApiOperation({ summary: 'Get all criticisms (admin only)' }) @ApiOperation({ summary: 'Get all criticisms (admin only)' })
@@ -31,7 +33,7 @@ export class CriticismController {
return this.criticismService.findAll(queryDto); return this.criticismService.findAll(queryDto);
} }
@Get(':id') @Get('admin/criticisms/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_CRITICISMS) @Permissions(PermissionEnum.MANAGE_CRITICISMS)
@ApiOperation({ summary: 'Get one criticism by id (admin only)' }) @ApiOperation({ summary: 'Get one criticism by id (admin only)' })
@@ -39,7 +41,7 @@ export class CriticismController {
return this.criticismService.findOneAndMarkAsRead(id); return this.criticismService.findOneAndMarkAsRead(id);
} }
@Delete(':id') @Delete('admin/criticisms/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_CRITICISMS) @Permissions(PermissionEnum.MANAGE_CRITICISMS)
@ApiOperation({ summary: 'Delete one criticism by id (admin only)' }) @ApiOperation({ summary: 'Delete one criticism by id (admin only)' })
+52 -50
View File
@@ -14,13 +14,57 @@ import { PermissionEnum } from 'src/common/enums/permission.enum';
@ApiTags('Learning') @ApiTags('Learning')
@ApiBearerAuth() @ApiBearerAuth()
@Controller('learnings') @Controller()
export class LearningController { export class LearningController {
constructor(private readonly learningService: LearningService) {} constructor(private readonly learningService: LearningService) {}
// ----------------- Public / User routes -----------------
@Get('public/learnings')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learnings video' })
findAllLearnings() {
return this.learningService.findLearningsVideos();
}
@Get('public/learnings/category')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learning categories' })
findCategories() {
return this.learningService.findCategories();
}
@Get('public/learnings/category/:id')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find one learning category by id' })
findCategoryById(@Param('id') id: string) {
return this.learningService.findCategoryById(id);
}
@Get('public/learnings/progress')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Get current user learning progress' })
getUserProgress(@UserId() userId: string) {
return this.learningService.getUserProgress(userId);
}
@Post('public/learnings/:learningId/progress')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Track learning progress' })
trackProgress(@UserId() userId: string, @Param('learningId') learningId: string) {
return this.learningService.trackProgress(userId, learningId);
}
@Get('public/learnings/:id')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learning video by id' })
findLearningVideoById(@Param('id') id: string) {
return this.learningService.findLearningVideoById(id);
}
// ----------------- Admin routes ----------------- // ----------------- Admin routes -----------------
@Post() @Post('admin/learnings')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Create learning video' }) @ApiOperation({ summary: 'Create learning video' })
@@ -28,7 +72,7 @@ export class LearningController {
return this.learningService.createLearningVideo(createDto); return this.learningService.createLearningVideo(createDto);
} }
@Delete(':id') @Delete('admin/learnings/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Delete learning video by id' }) @ApiOperation({ summary: 'Delete learning video by id' })
@@ -36,7 +80,7 @@ export class LearningController {
return this.learningService.deleteLearningVideoById(id); return this.learningService.deleteLearningVideoById(id);
} }
@Patch(':id') @Patch('admin/learnings/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Update learning video by id' }) @ApiOperation({ summary: 'Update learning video by id' })
@@ -44,7 +88,7 @@ export class LearningController {
return this.learningService.updateLearningVideo(id, updateDto); return this.learningService.updateLearningVideo(id, updateDto);
} }
@Post('category') @Post('admin/learnings/category')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Create learning category' }) @ApiOperation({ summary: 'Create learning category' })
@@ -52,7 +96,7 @@ export class LearningController {
return this.learningService.createLearningCategory(createDto); return this.learningService.createLearningCategory(createDto);
} }
@Patch('category/:id') @Patch('admin/learnings/category/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Update learning category' }) @ApiOperation({ summary: 'Update learning category' })
@@ -60,7 +104,7 @@ export class LearningController {
return this.learningService.updateLearningCategory(id, updateDto); return this.learningService.updateLearningCategory(id, updateDto);
} }
@Delete('category/:id') @Delete('admin/learnings/category/:id')
@UseGuards(AdminAuthGuard) @UseGuards(AdminAuthGuard)
@Permissions(PermissionEnum.MANAGE_LEARNINGS) @Permissions(PermissionEnum.MANAGE_LEARNINGS)
@ApiOperation({ summary: 'Delete category by id' }) @ApiOperation({ summary: 'Delete category by id' })
@@ -68,47 +112,5 @@ export class LearningController {
return this.learningService.deleteCategoryById(id); return this.learningService.deleteCategoryById(id);
} }
// ----------------- Public / User routes -----------------
@Get()
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learnings video' })
findAllLearnings() {
return this.learningService.findLearningsVideos();
}
@Get('category')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learning categories' })
findCategories() {
return this.learningService.findCategories();
}
@Get('category/:id')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find one learning category by id' })
findCategoryById(@Param('id') id: string) {
return this.learningService.findCategoryById(id);
}
@Get('progress')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Get current user learning progress' })
getUserProgress(@UserId() userId: string) {
return this.learningService.getUserProgress(userId);
}
@Post(':learningId/progress')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Track learning progress' })
trackProgress(@UserId() userId: string, @Param('learningId') learningId: string) {
return this.learningService.trackProgress(userId, learningId);
}
@Get(':id')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Find learning video by id' })
findLearningVideoById(@Param('id') id: string) {
return this.learningService.findLearningVideoById(id);
}
} }