From f1499c76c28f7fc5968b2409635401b310b0c882 Mon Sep 17 00:00:00 2001 From: lemuel Date: Sun, 12 Jun 2022 13:35:47 -0500 Subject: [PATCH] todos los gets --- src/carrito/carrito.controller.ts | 2 +- .../equipo-programa.controller.ts | 3 +- src/equipo/equipo.controller.ts | 14 +- src/operador/operador.controller.ts | 6 +- .../dto/prestamo-historial-equipo.dto.ts | 9 + .../dto/prestamo-historial-usuario.dto.ts | 9 + src/prestamo/dto/prestamo-historial.dto.ts | 2 + src/prestamo/prestamo.controller.ts | 186 +++++++++++++++++- src/prestamo/prestamo.service.ts | 30 ++- src/usuario/usuario.controller.ts | 10 +- 10 files changed, 247 insertions(+), 24 deletions(-) create mode 100644 src/prestamo/dto/prestamo-historial-equipo.dto.ts create mode 100644 src/prestamo/dto/prestamo-historial-usuario.dto.ts diff --git a/src/carrito/carrito.controller.ts b/src/carrito/carrito.controller.ts index bd5274c..a75b308 100644 --- a/src/carrito/carrito.controller.ts +++ b/src/carrito/carrito.controller.ts @@ -40,7 +40,7 @@ export class CarritoController { type: 'string', }) @ApiQuery({ - description: 'Id del tipo carrito que se queire usar como filtro.', + description: 'Id del tipo carrito que se quiere usar como filtro.', name: 'id_tipo_carrito', type: 'string', required: false, diff --git a/src/equipo-programa/equipo-programa.controller.ts b/src/equipo-programa/equipo-programa.controller.ts index ab67f6b..62fcaae 100644 --- a/src/equipo-programa/equipo-programa.controller.ts +++ b/src/equipo-programa/equipo-programa.controller.ts @@ -1,9 +1,10 @@ import { Body, Controller, Delete, Post } from '@nestjs/common'; -import { ApiBody, ApiOperation } from '@nestjs/swagger'; +import { ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; import { EquipoProgramaService } from './equipo-programa.service'; import { EquipoProgramaCreateDto } from './dto/equipo-programa-create.dto'; import { EquipoProgramaDeleteDto } from './dto/equipo-programa-delete.dto'; @Controller('equipo-programa') +@ApiTags('equipo-programa') export class EquipoProgramaController { constructor(private equipoProgramaService: EquipoProgramaService) {} diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index 56fc2a6..1d176d3 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -42,37 +42,37 @@ export class EquipoController { type: 'string', }) @ApiQuery({ - description: 'Carrito que se queire usar como filtro.', + description: 'Carrito que se quiere usar como filtro.', name: 'carrito', type: 'string', }) @ApiQuery({ - description: 'Equipo que se queire usar como filtro.', + description: 'Equipo que se quiere usar como filtro.', name: 'equipo', type: 'string', }) @ApiQuery({ - description: 'Id del tipo de carrito que se queire usar como filtro.', + description: 'Id del tipo de carrito que se quiere usar como filtro.', name: 'id_tipo_carrito', type: 'string', }) @ApiQuery({ - description: 'Id del status que se queire usar como filtro.', + description: 'Id del status que se quiere usar como filtro.', name: 'id_status', type: 'string', }) @ApiQuery({ - description: 'Id del programa que se queire usar como filtro.', + description: 'Id del programa que se quiere usar como filtro.', name: 'id_programa', type: 'string', }) @ApiQuery({ - description: 'Id del módulo que se queire usar como filtro.', + description: 'Id del módulo que se quiere usar como filtro.', name: 'id_modulo', type: 'string', }) // @ApiQuery({ - // description: 'Id del tipo de entrada que se queire usar como filtro.', + // description: 'Id del tipo de entrada que se quiere usar como filtro.', // name: 'id_tipo_entrada', // type: 'string', // }) diff --git a/src/operador/operador.controller.ts b/src/operador/operador.controller.ts index 4422570..5a76301 100644 --- a/src/operador/operador.controller.ts +++ b/src/operador/operador.controller.ts @@ -71,19 +71,19 @@ export class OperadorController { type: 'string', }) @ApiQuery({ - description: 'Id de la institución que se queire usar como filtro.', + description: 'Id de la institución que se quiere usar como filtro.', name: 'id_institucion', type: 'string', required: false, }) @ApiQuery({ - description: 'Id del tipo usuario que se queire usar como filtro.', + description: 'Id del tipo usuario que se quiere usar como filtro.', name: 'id_tipo_usuario', type: 'string', required: false, }) @ApiQuery({ - description: 'Operador que se queire buscar.', + description: 'Operador que se quiere buscar.', name: 'operador', type: 'string', required: false, diff --git a/src/prestamo/dto/prestamo-historial-equipo.dto.ts b/src/prestamo/dto/prestamo-historial-equipo.dto.ts new file mode 100644 index 0000000..26e7c61 --- /dev/null +++ b/src/prestamo/dto/prestamo-historial-equipo.dto.ts @@ -0,0 +1,9 @@ +import { IsNumberString } from 'class-validator'; + +export class PrestamoHistorialEquipoDto { + @IsNumberString() + id_equipo: string; + + @IsNumberString() + pagina: string; +} diff --git a/src/prestamo/dto/prestamo-historial-usuario.dto.ts b/src/prestamo/dto/prestamo-historial-usuario.dto.ts new file mode 100644 index 0000000..a6819c8 --- /dev/null +++ b/src/prestamo/dto/prestamo-historial-usuario.dto.ts @@ -0,0 +1,9 @@ +import { IsNumberString } from 'class-validator'; + +export class PrestamoHistorialUsuarioDto { + @IsNumberString() + pagina: string; + + @IsNumberString() + id_usuario: string; +} diff --git a/src/prestamo/dto/prestamo-historial.dto.ts b/src/prestamo/dto/prestamo-historial.dto.ts index 900e588..b691f4f 100644 --- a/src/prestamo/dto/prestamo-historial.dto.ts +++ b/src/prestamo/dto/prestamo-historial.dto.ts @@ -18,9 +18,11 @@ export class PrestamoHistorialDto { equipo?: string; @IsDateString() + @IsOptional() fechaFin?: string; @IsDateString() + @IsOptional() fechaInicio?: string; @IsNumberString() diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index dbbb885..d5f6e53 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -6,6 +6,9 @@ import { PrestamoActivosDto } from './dto/prestamo-activos.dto'; import { PrestamoIdUsuarioDto } from './dto/prestamo-id-usuario.dto'; import { PrestamoIdPrestamoDto } from './dto/prestamo-id-prestamo.dto'; import { PrestamoNumeroInventarioDto } from './dto/prestamo-numero-inventario.dto'; +import { PrestamoHistorialEquipoDto } from './dto/prestamo-historial-equipo.dto'; +import { PrestamoHistorialUsuarioDto } from './dto/prestamo-historial-usuario.dto'; +import { PrestamoHistorialDto } from './dto/prestamo-historial.dto'; @Controller('prestamo') @ApiTags('prestamo') @@ -13,29 +16,205 @@ export class PrestamoController { constructor(private prestamoService: PrestamoService) {} @Get('activos') + @ApiOperation({ + description: + 'Endpoint que retorna 25 prestamos activos dependiendo de la página en la que se encuentra el operador y sus filtros.', + }) + @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 modulo que se quiere usar como filtro.', + name: 'id_modulo', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Id del préstamo que se quiere usar como filtro.', + name: 'id_prestamo', + 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 usuario que se quiere usar como filtro.', + name: 'id_tipo_usuario', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Usuario que se quiere usar como filtro.', + name: 'usuario', + type: 'string', + required: false, + }) activos(@Query() query: PrestamoActivosDto) { return this.prestamoService.findAll(query); } @Put('cancelar-operador') + @ApiOperation({ + description: 'Endpoint que cancela un prestamo por parte del operador.', + }) cancelarOperador() {} @Put('cancelar-usuario') + @ApiOperation({ + description: 'Endpoint que cancela el prestamo del usuario.', + }) cancelarUsuario() {} @Put('entregar') + @ApiOperation({ + description: 'Endpoint que actualiza el status del equipo a "En uso".', + }) entregar() {} @Get('historial') - historial() {} + @ApiOperation({ + description: + 'Endpoint que retorna 25 prestamos dependiendo de la página en la que se encuentra el operador y sus filtros.', + }) + @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: 'Fecha inicio que se quiere usar como filtro.', + name: 'fechaInicio', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Fecha fin se quiere usar como filtro.', + name: 'fechaFin', + 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 modulo que se quiere usar como filtro.', + name: 'id_modulo', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Id del préstamo que se quiere usar como filtro.', + name: 'id_prestamo', + 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 usuario que se quiere usar como filtro.', + name: 'id_tipo_usuario', + type: 'string', + required: false, + }) + @ApiQuery({ + description: 'Usuario que se quiere usar como filtro.', + name: 'usuario', + type: 'string', + required: false, + }) + historial(@Query() query: PrestamoHistorialDto) { + return this.prestamoService.findAll(query); + } @Get('historial-equipo') - historialEquipo() {} + @ApiOperation({ + description: + 'Endpoint que retorna 25 prestamos de un usuario dependiendo de la página en la que se encuentra el operador y sus filtros.', + }) + @ApiQuery({ + description: 'Página en la que se encuentra el usuario.', + name: 'pagina', + type: 'string', + }) + @ApiQuery({ + description: 'Id del equipo.', + name: 'id_equipo', + type: 'string', + }) + historialEquipo(@Query() query: PrestamoHistorialEquipoDto) { + return this.prestamoService.findAllByIdEquipo( + parseInt(query.id_equipo), + parseInt(query.pagina), + ); + } @Get('historial-usuario') - historialUsuario() {} + @ApiOperation({ + description: + 'Endpoint que retorna 25 prestamos de un equipo dependiendo de la página en la que se encuentra el operador y sus filtros.', + }) + @ApiQuery({ + description: 'Página en la que se encuentra el usuario.', + name: 'pagina', + type: 'string', + }) + @ApiQuery({ + description: 'Id del usuario.', + name: 'id_usuario', + type: 'string', + }) + historialUsuario(@Query() query: PrestamoHistorialUsuarioDto) { + return this.prestamoService.findAllByIdUsuario( + parseInt(query.id_usuario), + parseInt(query.pagina), + ); + } @Post() + @ApiOperation({ description: 'Endpoint .' }) pedir(@Body() body: PrestamoPedirDto) { return this.prestamoService.create( body.id_usuario, @@ -90,6 +269,7 @@ export class PrestamoController { } @Put('regresar') + @ApiOperation({ description: 'Endpoint .' }) regresar() {} // @Get('reporte') diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index d34e49c..fa89607 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -144,7 +144,7 @@ export class PrestamoService { activo?: boolean; fechaInicio?: Date; fechaFin?: Date; - id_prestamo?: number; + id_prestamo?: FindOperator; equipo: { equipo?: FindOperator; carrito: { @@ -202,13 +202,13 @@ export class PrestamoService { if (typeof filtros.activo === 'boolean') busqueda.activo = filtros.activo; else busqueda.activo = filtros.activo === 'true'; } else { - join.oe = 'p.operadorEntrega'; - join.or = 'p.operadorRegreso'; + // join.oe = 'p.operadorEntrega'; + // join.or = 'p.operadorRegreso'; } if (filtros.carrito) busqueda.equipo.carrito.carrito = Like(`%${filtros.carrito}%`); if (filtros.equipo) busqueda.equipo.equipo = Like(`%${filtros.equipo}%`); - if (filtros.equipo) busqueda.id_prestamo = parseInt(filtros.id_prestamo); + if (filtros.id_prestamo) busqueda.id_prestamo = Like(filtros.id_prestamo); if (filtros.usuario) busqueda.usuario.usuario = Like(`%${filtros.usuario}%`); // if (carrera) busqueda.usuario.institucionCarrera.carrera = carrera; @@ -229,6 +229,28 @@ export class PrestamoService { }); } + findAllByIdUsuario(id_usuario: number, pagina: number) { + return this.usuarioService + .findById(id_usuario, true, true) + .then((usuario) => + this.repository.find({ + where: { usuario }, + skip: (pagina - 1) * 25, + take: 25, + }), + ); + } + + async findAllByIdEquipo(id_equipo: number, pagina: number) { + return this.equipoService.findById(id_equipo).then((equipo) => + this.repository.find({ + where: { equipo }, + skip: (pagina - 1) * 25, + take: 25, + }), + ); + } + findById(id_prestamo: number) { return this.repository.findOne({ id_prestamo }).then((prestamo) => { if (!prestamo) throw new NotFoundException('No existe este préstamo.'); diff --git a/src/usuario/usuario.controller.ts b/src/usuario/usuario.controller.ts index 2e4119e..8ebce1d 100644 --- a/src/usuario/usuario.controller.ts +++ b/src/usuario/usuario.controller.ts @@ -139,31 +139,31 @@ export class UsuarioController { type: 'string', }) @ApiQuery({ - description: 'Id de la institución que se queire usar como filtro.', + description: 'Id de la institución que se quiere usar como filtro.', name: 'id_institucion', type: 'string', required: false, }) @ApiQuery({ - description: 'Id de la carrera que se queire usar como filtro.', + description: 'Id de la carrera que se quiere usar como filtro.', name: 'id_carrera', type: 'string', required: false, }) @ApiQuery({ - description: 'Id del tipo usuario que se queire usar como filtro.', + description: 'Id del tipo usuario que se quiere usar como filtro.', name: 'id_tipo_usuario', type: 'string', required: false, }) @ApiQuery({ - description: 'Nombre del usuario que se queire buscar.', + description: 'Nombre del usuario que se quiere buscar.', name: 'nombre', type: 'string', required: false, }) @ApiQuery({ - description: 'Usuario que se queire buscar.', + description: 'Usuario que se quiere buscar.', name: 'usuario', type: 'string', required: false,