143 lines
3.6 KiB
TypeScript
143 lines
3.6 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Get,
|
|
Post,
|
|
Put,
|
|
Query,
|
|
UseGuards,
|
|
} from '@nestjs/common';
|
|
import { AuthGuard } from '@nestjs/passport';
|
|
import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger';
|
|
import { Serealize } from '../interceptors/serialize.interceptor';
|
|
import { CarritoService } from './carrito.service';
|
|
import { CarritoDto } from './dto/input/carrito.dto';
|
|
import { CarritosDto } from './dto/input/carritos.dto';
|
|
import { CreateCarritoDto } from './dto/input/create.dto';
|
|
import { UpdateCarritoDto } from './dto/input/update.dto';
|
|
import { CarritoOutputDto } from './dto/output/carrito.dto';
|
|
import { CarritosOutputDto } from './dto/output/carritos.dto';
|
|
|
|
@Controller('carrito')
|
|
@ApiTags('carrito')
|
|
export class CarritoController {
|
|
constructor(private carritoService: CarritoService) {}
|
|
|
|
@Serealize(CarritoOutputDto)
|
|
@Get('carrito')
|
|
// @UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description: 'Endpoint que retorna la información de un carrito.',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del carrito.',
|
|
name: 'id_carrito',
|
|
type: 'string',
|
|
})
|
|
carrito(@Query() query: CarritoDto) {
|
|
return this.carritoService.findById(parseInt(query.id_carrito));
|
|
}
|
|
|
|
@Serealize(CarritosOutputDto)
|
|
@Get('carritos')
|
|
// @UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description:
|
|
'Endpoint que retorna 25 carritos de un módulo dependiendo de la página en la que se encuentra el usuario y sus filtros.',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Página en la que se encuentra el usuario.',
|
|
name: 'pagina',
|
|
type: 'string',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Booleano en forma de string que se usará como filtro.',
|
|
name: 'activo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Carrito que se esta buscando.',
|
|
name: 'carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la institución.',
|
|
name: 'id_institucion',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del módulo.',
|
|
name: 'id_modulo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo carrito que se quiere usar como filtro.',
|
|
name: 'id_tipo_carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
carritos(@Query() query: CarritosDto) {
|
|
return this.carritoService.findAll(query);
|
|
}
|
|
|
|
@Post()
|
|
// @UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description: 'Endpoint que crea un carrito nuevo en un módulo.',
|
|
})
|
|
@ApiBody({
|
|
description: 'Todas las variables son obligatorias.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: { id_modulo: 1, id_tipo_carrito: 1, marca: '', modelo: '' },
|
|
},
|
|
},
|
|
})
|
|
create(@Body() body: CreateCarritoDto) {
|
|
return this.carritoService.create(
|
|
body.id_modulo,
|
|
body.id_tipo_carrito,
|
|
body.marca,
|
|
body.modelo,
|
|
);
|
|
}
|
|
|
|
@Put()
|
|
// @UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description: 'Endpoint que actualiza la información de un carrito.',
|
|
})
|
|
@ApiBody({
|
|
description:
|
|
'Todas las variables a excepción de id_carrito son opcionales.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: {
|
|
id_carrito: 1,
|
|
_activo: true,
|
|
_carrito: '',
|
|
_id_modulo: 1,
|
|
_id_tipo_carrito: 1,
|
|
_marca: '',
|
|
_modelo: '',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
update(@Body() body: UpdateCarritoDto) {
|
|
const data = { ...body };
|
|
|
|
delete data.id_modulo;
|
|
delete data.id_tipo_carrito;
|
|
return this.carritoService.update(
|
|
data,
|
|
body.id_modulo,
|
|
body.id_tipo_carrito,
|
|
);
|
|
}
|
|
}
|