import { Controller, Get, UseGuards } from '@nestjs/common';
import { JwtAuthGuard } from '../auth/guards/jwt-auth.guard';
import { PermissionsGuard } from '../auth/guards/permissions.guard';
import { Permissions } from '../auth/permissions.decorator';
import { PermissionsService } from './permissions.service';

/**
 * Permissions are defined by the platform (seeded) and are read-only at
 * runtime - roles are the unit administrators compose.
 */
@Controller('api/v1/admin/permissions')
@UseGuards(JwtAuthGuard, PermissionsGuard)
export class PermissionsController {
  constructor(private readonly permissionsService: PermissionsService) {}

  @Get()
  @Permissions('role.view')
  async findAll() {
    const data = await this.permissionsService.findAll();
    return { success: true, message: 'Success', data };
  }

  @Get('grouped')
  @Permissions('role.view')
  async grouped() {
    const data = await this.permissionsService.findGrouped();
    return { success: true, message: 'Success', data };
  }
}
