import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { IdResponse } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages'; import { Body, Controller, Get, Inject, Param, Put, UseFilters, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; import { Authenticated, RequireAllPermissions, } from 'src/decorators/authentication.decorator'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; import { CustomersService } from './customers.service'; import { CustomerDto, CustomerLinksResponse } from './dtos/customers'; @ApiInternalOnlyController() @ApiTags('Customers') @Controller('customers') @Authenticated() @UseFilters(GrpcToHttpExceptionFilter) export class CustomersController { logger: DadosferaLogger; constructor( @Inject(DadosferaLogger) dadosferaLogger: DadosferaLogger, private customersService: CustomersService, ) { this.logger = dadosferaLogger.logger; } @Get(':id/links') @RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN) async getCustomerLinks(@Param('id') id): Promise { this.logger.info('getCustomerLinks', { id }); const links = await this.customersService.getLinks(id); return { links }; } @Put(':id/links') @RequireAllPermissions(PERMISSIONS_GROUPS.USERS.permissions.ADMIN) setCustomerLinks( @Body() body: CustomerDto, @Param('id') id, ): Promise { const { links } = body; this.logger.info('setCustomerLinks', { id, links }); return this.customersService.setLinks(id, links); } }