import { Body, 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 { MarcaService } from './marca.service'; import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service'; import { Operador } from '../operador/entity/operador.entity'; import { CreateMarcaDto } from './dto/input/create.dto'; import { MarcaDto } from './dto/input/marca.dto'; import { MarcaOutputDto } from './dto/output/marca.dto'; @Controller('marca') @ApiTags('marca') export class MarcaController { constructor( private marcaService: MarcaService, private validarUsuarioService: ValidarUsuarioService, ) {} @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea una nueva marca.' }) @ApiBearerAuth('jwt') @ApiBody({ description: 'Todas las variables son obligatorias.', examples: { ejemplo: { value: { marca: '', tipo: '' } } }, }) create(@Request() req, @Body() body: CreateMarcaDto) { const superAdmin: Operador = req.user.operador; this.validarUsuarioService.validarSuperAdmin(superAdmin); return this.marcaService.create(body.marca, body.tipo); } @Serealize(MarcaOutputDto) @Get() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que retorna todass las marcas.' }) @ApiBearerAuth('jwt') @ApiQuery({ description: 'Tipo de marca que se busca.', name: 'tipo', type: 'text', }) get(@Request() req, @Query() query: MarcaDto) { const operador: Operador = req.user.operador; this.validarUsuarioService.validarOperador(operador); return this.marcaService.findAll(query.tipo); } }