diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index f5764a8..56e36f8 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -1,19 +1,19 @@ import { Controller, Get, Post, Put } from '@nestjs/common'; +import { ApiTags } from '@nestjs/swagger'; import { PrestamoService } from './prestamo.service'; -import {ApiTags} from '@nestjs/swagger' @Controller('prestamo') -// @ApiTags('prestamo') +@ApiTags('prestamo') export class PrestamoController { constructor(private prestamoService: PrestamoService) {} @Get('activos') activos() {} - @Put('cancelar_operador') + @Put('cancelar-operador') cancelarOperador() {} - @Put('cancelar_usuario') + @Put('cancelar-usuario') cancelarUsuario() {} @Put('entregar') @@ -22,27 +22,27 @@ export class PrestamoController { @Get('historial') historial() {} - @Get('historial_equipo') + @Get('historial-equipo') historialEquipo() {} - @Get('historial_usuario') + @Get('historial-usuario') historialUsuario() {} @Post() pedir() {} - @Get('prestamo_id_prestamo') + @Get('prestamo-id-prestamo') prestamoIdPrestamo() {} - @Get('prestamo_id_usuario') + @Get('prestamo-id-usuario') prestamoIdUsuario() {} - @Get('prestamo_numero_inventario') + @Get('prestamo-numero-inventario') prestamoNumeroInventario() {} @Put('regresar') regresar() {} - @Get('reporte') - reporte() {} + // @Get('reporte') + // reporte() {} } diff --git a/src/prestamo/prestamo.module.ts b/src/prestamo/prestamo.module.ts index d7f9253..ae1e354 100644 --- a/src/prestamo/prestamo.module.ts +++ b/src/prestamo/prestamo.module.ts @@ -6,12 +6,23 @@ import { Prestamo } from './entity/prestamo.entity'; import { CarritoModule } from '../carrito/carrito.module'; import { EquipoModule } from '../equipo/equipo.module'; import { InstitucionModule } from '../institucion/institucion.module'; +import { InstitucionCarreraModule } from '../institucion-carrera/institucion-carrera.module'; import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module'; import { ModuloModule } from '../modulo/modulo.module'; import { TipoUsuarioModule } from '../tipo-usuario/tipo-usuario.module'; import { UsuarioModule } from '../usuario/usuario.module'; @Module({ - imports: [TypeOrmModule.forFeature([Prestamo])], + imports: [ + CarritoModule, + EquipoModule, + InstitucionModule, + InstitucionCarreraModule, + InstitucionTipoCarritoModule, + ModuloModule, + TypeOrmModule.forFeature([Prestamo]), + TipoUsuarioModule, + UsuarioModule, + ], controllers: [PrestamoController], providers: [PrestamoService], exports: [PrestamoService], diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 817fb56..67d5a76 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -1,59 +1,98 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { Repository } from 'typeorm'; +import { FindOperator, Like, Repository } from 'typeorm'; import { Carrera } from '../institucion-carrera/entity/carrera.entity'; -import { Carrito } from '../carrito/entity/carrito.entity'; -import { Equipo } from '../equipo/entity/equipo.entity'; -import { Institucion } from '../institucion/entity/institucion.entity'; import { Modulo } from '../modulo/entity/modulo.entity'; import { Prestamo } from './entity/prestamo.entity'; import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity'; import { TipoUsuario } from '../tipo-usuario/entity/tipo-usuario.entity'; -import { Usuario } from '../usuario/entity/usuario.entity'; -// import { CarritoService } from '../carrito/carrito.service'; -// import { EquipoService } from '../equipo/equipo.service'; -// import { InstitucionService } from '../institucion/institucion.service'; -// import { ModuloService } from '../modulo/modulo.service'; -// import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service'; -// import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service'; -// import { UsuarioService } from '../usuario/usuario.service'; +import { CarritoService } from '../carrito/carrito.service'; +import { EquipoService } from '../equipo/equipo.service'; +import { InstitucionService } from '../institucion/institucion.service'; +import { ModuloService } from '../modulo/modulo.service'; +import { InstitucionCarreraService } from '../institucion-carrera/institucion-carrera.service'; +import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service'; +import { TipoUsuarioService } from '../tipo-usuario/tipo-usuario.service'; +import { UsuarioService } from '../usuario/usuario.service'; @Injectable() export class PrestamoService { constructor( - @InjectRepository(Prestamo) private repository: Repository, // private carreraService: CarreraService, // private carritoService: CarritoService, // private equipoService: EquipoService, // private institucionService: InstitucionService, // private institucionTipoCarritoService: InstitucionTipoCarritoService, // private moduloService: ModuloService, // private tipoUsuarioService: TipoUsuarioService, // private usuarioService: UsuarioService, + @InjectRepository(Prestamo) private repository: Repository, + private carritoService: CarritoService, + private equipoService: EquipoService, + private institucionService: InstitucionService, + private institucionTipoCarritoService: InstitucionTipoCarritoService, + private moduloService: ModuloService, + private institucionCarreraService: InstitucionCarreraService, + private tipoUsuarioService: TipoUsuarioService, + private usuarioService: UsuarioService, ) {} - findAll(filtros: { + async findAll(filtros: { + pagina: string; carrito?: string; equipo?: string; - id_carrera?: number; - id_institucion?: number; - id_modulo?: number; - id_tipo_carrito?: number; - id_tipo_usuario?: number; - // id_prestamo?: number; - pagina: number; + id_carrera?: string; + id_institucion?: string; + id_modulo?: string; + id_tipo_carrito?: string; + id_tipo_usuario?: string; + id_prestamo?: string; usuario?: string; }) { const busqueda: { - carrera?: Carrera; - carrito?: Carrito; - equipo?: Equipo; - institucion?: Institucion; - modulo?: Modulo; - tipoCarrito?: TipoCarrito; - tipoUsuario?: TipoUsuario; - usuario?: Usuario; - } = {}; - // const carrera = this.carreraService.findBy(); - // const carrito = this.carritoService.find(); - // const equipo = this.equipoService.find(); - // const institucion = this.institucionService.find(); - // const modulo = this.moduloService.find(); - // const tipoCarrito = this.institucionTipoCarritoService.find(); - // const tipoUsuario = this.tipoUsuarioService.find(); - // const usuario = this.usuarioService.find(); + equipo: { + equipo?: FindOperator; + carrito: { + carrito?: FindOperator; + modulo?: Modulo; + tipoCarrito?: TipoCarrito; + }; + }; + usuario: { + usuario?: FindOperator; + tipoUsuario?: TipoUsuario; + institucionCarrera: { carrera?: Carrera }; + }; + } = { equipo: { carrito: {} }, usuario: { institucionCarrera: {} } }; + const carrera = filtros.id_carrera + ? await this.institucionCarreraService.findCarreraByIdCarrera( + parseInt(filtros.id_carrera), + ) + : null; + const institucion = filtros.id_institucion + ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + : null; + const modulo = filtros.id_modulo + ? await this.moduloService.findById(parseInt(filtros.id_modulo)) + : null; + const tipoCarrito = filtros.id_tipo_carrito + ? await this.institucionTipoCarritoService.findTipoCaritoById( + parseInt(filtros.id_tipo_carrito), + ) + : null; + const tipoUsuario = filtros.id_tipo_usuario + ? await this.tipoUsuarioService.findById( + parseInt(filtros.id_tipo_usuario), + ) + : null; + + if (filtros.usuario) + busqueda.usuario.usuario = Like(`%${filtros.usuario}%`); + if (filtros.equipo) busqueda.equipo.equipo = Like(`%${filtros.equipo}%`); + if (filtros.carrito) + busqueda.equipo.carrito.carrito = Like(`%${filtros.carrito}%`); + if (carrera) busqueda.usuario.institucionCarrera.carrera = carrera; + if (modulo) busqueda.equipo.carrito.modulo = modulo; + if (institucion) busqueda.equipo.carrito.modulo.institucion = institucion; + if (tipoCarrito) busqueda.equipo.carrito.tipoCarrito = tipoCarrito; + if (tipoUsuario) busqueda.usuario.tipoUsuario = tipoUsuario; + return this.repository.findAndCount({ + where: busqueda, + skip: (parseInt(filtros.pagina) - 1) * 25, + take: 25, + }); } findById(id_prestamo: number) { diff --git a/src/usuario/entity/usuario.entity.ts b/src/usuario/entity/usuario.entity.ts index 01b40fd..3dc324f 100644 --- a/src/usuario/entity/usuario.entity.ts +++ b/src/usuario/entity/usuario.entity.ts @@ -42,7 +42,7 @@ export class Usuario { { eager: true }, ) @JoinColumn({ name: 'id_institucion_carrera' }) - institucionCarrera?: InstitucionCarrera; + institucionCarrera: InstitucionCarrera; @ManyToOne(() => TipoUsuario, (tipoUsuario) => tipoUsuario.usuarios, { eager: true,