import { Body, ConflictException, Controller, Get, Post, Query, Request, UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, ApiBody, ApiOperation, ApiQuery, ApiTags, } from '@nestjs/swagger'; import { Serealize } from '../interceptors/serialize.interceptor'; import { ModeloService } from './modelo.service'; import { Operador } from 'src/operador/entity/operador.entity'; import { CreateModeloDto } from './dto/input/create.dto'; import { ModeloDto } from './dto/input/modelo.dto'; import { ModeloOutputDto } from './dto/output/modelo.dto'; @Controller('modelo') @ApiTags('modelo') export class ModeloController { constructor(private modeloService: ModeloService) {} @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea un nuevo modelo.' }) @ApiBearerAuth('jwt') @ApiBody({ description: 'Todas las variables son obligatorias.', examples: { ejemplo: { value: { modelo: '', tipo: '' } } }, }) create(@Request() req, @Body() body: CreateModeloDto) { const superAdmin: Operador = req.user.operador; if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2) throw new ConflictException( 'No tienes los permisos necesarios para realizar esta acción.', ); return this.modeloService.create(body.modelo, body.tipo); } @Serealize(ModeloOutputDto) @Get() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que retorna todos los modelos.' }) @ApiBearerAuth('jwt') @ApiQuery({ description: 'Tipo de marca que se busca.', name: 'tipo', type: 'text', }) get(@Query() query: ModeloDto) { return this.modeloService.findAll(query.tipo); } }