183 lines
4.5 KiB
TypeScript
183 lines
4.5 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
ForbiddenException,
|
|
Get,
|
|
Put,
|
|
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 { EquipoService } from './equipo.service';
|
|
import { ValidarUsuarioService } from '../validar-usuario/validar-usuario.service';
|
|
import { Operador } from '../operador/entity/operador.entity';
|
|
import { NumeroInventarioDto } from '../dto/input/numero-inventario.dto';
|
|
import { EquiposDto } from './dto/input/equipos.dto';
|
|
import { MessageOutputDto } from '../dto/output/message.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,
|
|
private validarUsuarioService: ValidarUsuarioService,
|
|
) {}
|
|
|
|
@Serealize(EquipoOutputDto)
|
|
@Get('equipo')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description: 'Información de un equipo de la institución de un operador.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'Número de inventario del equipo que se busca.',
|
|
name: 'numero_inventario',
|
|
type: 'string',
|
|
})
|
|
equipo(@Request() req, @Query() query: NumeroInventarioDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
return this.equipoService.findFullInfoByNumeroInventario(
|
|
operador,
|
|
query.numero_inventario,
|
|
);
|
|
}
|
|
|
|
@Serealize(EquiposOutputDto)
|
|
@Get('equipos')
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({
|
|
description:
|
|
'Información de 15 equipos dependiendo de los filtros enviados.',
|
|
})
|
|
@ApiBearerAuth('jwt')
|
|
@ApiQuery({
|
|
description: 'Página en la que se encuentra el operador.',
|
|
name: 'pagina',
|
|
type: 'string',
|
|
})
|
|
@ApiQuery({
|
|
description: 'Carrito que se desea buscar.',
|
|
name: 'carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Equipo que se desea buscar.',
|
|
name: 'equipo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del carrito.',
|
|
name: 'id_carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la institución.',
|
|
name: 'id_institucion',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id de la marca.',
|
|
name: 'id_marca',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del modelo.',
|
|
name: 'id_modelo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del módulo.',
|
|
name: 'id_modulo',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del programa.',
|
|
name: 'id_programa',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del status.',
|
|
name: 'id_status',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo de carrito.',
|
|
name: 'id_tipo_carrito',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
@ApiQuery({
|
|
description: 'Id del tipo de entrada.',
|
|
name: 'id_tipo_entrada',
|
|
type: 'string',
|
|
required: false,
|
|
})
|
|
equipos(@Request() req, @Query() query: EquiposDto) {
|
|
const operador: Operador = req.user.operador;
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
return this.equipoService.findAll(operador, query);
|
|
}
|
|
|
|
@Serealize(MessageOutputDto)
|
|
@Put()
|
|
@UseGuards(AuthGuard('jwt'))
|
|
@ApiOperation({ description: 'Actualiza la información de un equipo.' })
|
|
@ApiBearerAuth('jwt')
|
|
@ApiBody({
|
|
description:
|
|
'Variables que necesita el endpoint. Las variables con "_" al inicio son opcionales.',
|
|
examples: {
|
|
ejemplo: {
|
|
value: {
|
|
id_equipo: 1,
|
|
_equipo: '',
|
|
_id_carrito: 1,
|
|
_id_status: 1,
|
|
_motivo: '',
|
|
},
|
|
},
|
|
},
|
|
})
|
|
update(@Request() req, @Body() body: UpdateEquipoDto) {
|
|
const operador: Operador = req.user.operador;
|
|
const data = { ...body };
|
|
|
|
this.validarUsuarioService.validarAdminOperador(operador);
|
|
delete data.id_carrito;
|
|
delete data.id_status;
|
|
delete data.motivo;
|
|
return this.equipoService.update(
|
|
operador,
|
|
data,
|
|
body.id_carrito,
|
|
body.id_status,
|
|
body.motivo,
|
|
);
|
|
}
|
|
}
|