import { Controller, Get, Query, Param, UseGuards, ParseUUIDPipe } from '@nestjs/common';
import { PermissionsService } from './permissions.service';
import { PermissionsGuard } from '../auth/guards/permissions.guard';
import { RequirePermissions } from '@common/decorators/permissions.decorator';

@Controller('permissions')
export class PermissionsController {
  constructor(private readonly permissionsService: PermissionsService) {}

  /**
   * Get all permissions
   * Scope: organization - 查看权限列表需要角色管理权限
   */
  @Get()
  @RequirePermissions('role:read')
  async findAll(@Query('module') module?: string) {
    return this.permissionsService.findAll(module);
  }

  /**
   * Get grouped permissions
   * Scope: organization - 查看分组权限需要角色管理权限
   */
  @Get('grouped')
  @RequirePermissions('role:read')
  async findGrouped() {
    return this.permissionsService.findGrouped();
  }

  /**
   * Search permissions
   * Scope: organization - 搜索权限需要角色管理权限
   */
  @Get('search')
  @RequirePermissions('role:read')
  async search(@Query('query') query: string) {
    return this.permissionsService.search(query || '');
  }

  /**
   * Get permission by ID
   * Scope: organization - 查看权限详情需要角色管理权限
   */
  @Get(':id')
  @RequirePermissions('role:read')
  async findOne(@Param('id', ParseUUIDPipe) id: string) {
    return this.permissionsService.findOne(id);
  }
}
