knowledge-group.controller.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import {
  2. Controller,
  3. Get,
  4. Post,
  5. Put,
  6. Delete,
  7. Body,
  8. Param,
  9. UseGuards,
  10. Request,
  11. Query,
  12. } from '@nestjs/common';
  13. import { CombinedAuthGuard } from '../auth/combined-auth.guard';
  14. import { RolesGuard } from '../auth/roles.guard';
  15. import { Roles } from '../auth/roles.decorator';
  16. import { UserRole } from '../user/user-role.enum';
  17. import { KnowledgeGroupService, CreateGroupDto, UpdateGroupDto } from './knowledge-group.service';
  18. import { I18nService } from '../i18n/i18n.service';
  19. @Controller('knowledge-groups')
  20. @UseGuards(CombinedAuthGuard, RolesGuard)
  21. export class KnowledgeGroupController {
  22. constructor(
  23. private readonly groupService: KnowledgeGroupService,
  24. private readonly i18nService: I18nService,
  25. ) { }
  26. @Get()
  27. async findAll(@Request() req) {
  28. // All users can see all groups for their tenant (returns tree structure)
  29. return await this.groupService.findAll(req.user.id, req.user.tenantId);
  30. }
  31. @Get(':id')
  32. async findOne(@Param('id') id: string, @Request() req) {
  33. return await this.groupService.findOne(id, req.user.id, req.user.tenantId);
  34. }
  35. @Post()
  36. @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
  37. async create(@Body() createGroupDto: CreateGroupDto, @Request() req) {
  38. return await this.groupService.create(req.user.id, req.user.tenantId, createGroupDto);
  39. }
  40. @Put(':id')
  41. @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
  42. async update(
  43. @Param('id') id: string,
  44. @Body() updateGroupDto: UpdateGroupDto,
  45. @Request() req,
  46. ) {
  47. return await this.groupService.update(id, req.user.id, req.user.tenantId, updateGroupDto);
  48. }
  49. @Delete(':id')
  50. @Roles(UserRole.TENANT_ADMIN, UserRole.SUPER_ADMIN)
  51. async remove(@Param('id') id: string, @Request() req) {
  52. await this.groupService.remove(id, req.user.id, req.user.tenantId);
  53. return { message: this.i18nService.getMessage('groupDeleted') };
  54. }
  55. @Get(':id/files')
  56. async getGroupFiles(@Param('id') id: string, @Request() req) {
  57. const files = await this.groupService.getGroupFiles(id, req.user.id, req.user.tenantId);
  58. return { files };
  59. }
  60. }