Files
pcpuma_unam_api/src/equipo-programa/equipo-programa.controller.ts
T

72 lines
2.2 KiB
TypeScript

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);
}
}