154 lines
4.0 KiB
TypeScript
154 lines
4.0 KiB
TypeScript
import { Body, Controller, Get, Put, Query, 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 { EquipoService } from './equipo.service';
|
|
import { NumeroInventarioDto } from '../dto/numero-inventario.dto';
|
|
import { EquiposDto } from './dto/input/equipos.dto';
|
|
import { UpdateEquipoDto } from './dto/input/update.dto';
|
|
import { EquipoOutputDto } from './dto/output/equipo.dto';
|
|
import { EquiposOutputDto } from './dto/output/equipos.dto';
|
|
|
|
@Controller('equipo')
|
|
@ApiTags('equipo')
|
|
export class EquipoController {
|
|
constructor(private equipoService: EquipoService) {}
|
|
|
|
@Serealize(EquipoOutputDto)
|
|
@Get('equipo')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description:
|
|
'Endpoint que retorna la información de un equipo por su número de inventario de una institución.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'Id de la institución.',
|
|
name: 'id_institucion',
|
|
type: 'string',
|
|
})
|
|
@ApiQuery({
|
|
description: 'El número de inventario del equipo que se busca.',
|
|
name: 'numero_inventario',
|
|
type: 'string',
|
|
})
|
|
equipo(@Query() query: NumeroInventarioDto) {
|
|
return this.equipoService.findByNumeroInventario(
|
|
parseInt(query.id_institucion),
|
|
query.numero_inventario,
|
|
);
|
|
}
|
|
|
|
@Serealize(EquiposOutputDto)
|
|
@Get('equipos')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description:
|
|
'Endpoint que retorna 15 equipos dependiendo de la página en la que esta el usuario y sus filtros.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'Página en la que se encuentra el usuario.',
|
|
name: 'pagina',
|
|
type: 'string',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Carrito que se quiere usar como filtro.',
|
|
name: 'carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Equipo que se quiere usar como filtro.',
|
|
name: 'equipo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la institución que se quiere usar como filtro.',
|
|
name: 'id_institucion',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del módulo que se quiere usar como filtro.',
|
|
name: 'id_modulo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del programa que se quiere usar como filtro.',
|
|
name: 'id_programa',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del status que se quiere usar como filtro.',
|
|
name: 'id_status',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo de carrito que se quiere usar como filtro.',
|
|
name: 'id_tipo_carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo de entrada que se quiere usar como filtro.',
|
|
name: 'id_tipo_entrada',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
equipos(@Query() query: EquiposDto) {
|
|
return this.equipoService.findAll(query);
|
|
}
|
|
|
|
@Put()
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description: 'Endpoint que actualiza lan información de un equipo.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiBody({
|
|
description:
|
|
'Todas las variables a excepción de id_carrito son opcionales.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: {
|
|
id_equipo: 1,
|
|
_equipo: true,
|
|
_id_carrito: '',
|
|
_id_operador: 1,
|
|
_id_status: 1,
|
|
_marca: '',
|
|
_modelo: '',
|
|
_motivo: '',
|
|
_numero_serie: '',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
update(@Body() body: UpdateEquipoDto) {
|
|
const data = { ...body };
|
|
|
|
delete data.id_carrito;
|
|
delete data.id_status;
|
|
delete data.id_operador;
|
|
delete data.motivo;
|
|
return this.equipoService.update(
|
|
data,
|
|
body.id_carrito,
|
|
body.id_status,
|
|
body.id_operador,
|
|
body.motivo,
|
|
);
|
|
}
|
|
}
|