import { Body, Controller, Delete, ForbiddenException, Post, Request, UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; import { Operador } from 'src/operador/entity/operador.entity'; import { EquipoProgramaService } from './equipo-programa.service'; import { CreateEquipoProgramaDto } from './dto/input/create.dto'; import { DeleteEquipoProgramaDto } from './dto/input/delete.dto'; @Controller('equipo-programa') @ApiTags('equipo-programa') export class EquipoProgramaController { constructor(private equipoProgramaService: EquipoProgramaService) {} @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea una relación entre un equipo y un programa.', }) @ApiBearerAuth('jwt') @ApiBody({ description: 'Ambas variables son obligatorios.', examples: { ejemplo: { value: { id_equipo: 1, id_programa: 1 } } }, }) create(@Request() req, @Body() body: CreateEquipoProgramaDto) { const operador: Operador = req.user.operador; if ( !operador || (operador.tipoUsuario.id_tipo_usuario != 3 && operador.tipoUsuario.id_tipo_usuario != 4) ) throw new ForbiddenException( 'No tienes los permisos necesarios para realizar esta acción.', ); return this.equipoProgramaService.create(body.id_equipo, body.id_programa); } @Delete() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que elimina una relación entre un equipo y un programa.', }) @ApiBearerAuth('jwt') @ApiBody({ description: 'La variable id_equipo_programa es obligatoria.', examples: { ejemplo: { value: { id_equipo_programa: 1 } } }, }) delete(@Request() req, @Body() body: DeleteEquipoProgramaDto) { const operador: Operador = req.user.operador; if ( !operador || (operador.tipoUsuario.id_tipo_usuario != 3 && operador.tipoUsuario.id_tipo_usuario != 4) ) throw new ForbiddenException( 'No tienes los permisos necesarios para realizar esta acción.', ); return this.equipoProgramaService.delete(operador, body.id_equipo_programa); } }