From 254504f7a9ed0dea538fb31228b0f78f9d63c2ab Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 24 Jul 2022 22:35:00 -0500 Subject: [PATCH] is not empty --- src/auth/auth.controller.ts | 2 +- src/auth/auth.module.ts | 12 +- src/auth/auth.service.ts | 7 ++ src/auth/dto/input/login-admin.dto.ts | 5 +- src/auth/dto/input/login-operador.dto.ts | 5 +- src/auth/dto/input/login-usuario.dto.ts | 4 +- src/auth/dto/jwt-payload.ts | 4 +- src/auth/dto/output/operador.dto.ts | 6 +- src/bcrypt/bcrypt.service.ts | 3 +- .../carrera-programa.service.ts | 5 +- src/carrito/carrito.controller.ts | 26 +++-- src/carrito/carrito.module.ts | 2 + src/carrito/carrito.service.ts | 105 +++++++----------- src/carrito/dto/input/carritos.dto.ts | 10 ++ src/carrito/dto/input/create.dto.ts | 12 +- src/carrito/dto/input/update.dto.ts | 16 +-- src/carrito/dto/output/carrito-min.dto.ts | 4 +- src/carrito/dto/output/carrito.dto.ts | 10 +- src/carrito/dto/output/carritos.dto.ts | 4 +- src/carrito/entity/carrito.entity.ts | 9 +- .../equipo-programa.service.ts | 46 ++++---- .../equipo-tipo-entrada.service.ts | 24 ++-- src/equipo/dto/input/equipos.dto.ts | 17 ++- src/equipo/dto/input/update.dto.ts | 17 ++- src/equipo/dto/output/equipo.dto.ts | 4 + src/equipo/entity/equipo.entity.ts | 16 ++- src/equipo/equipo.controller.ts | 23 +++- src/equipo/equipo.module.ts | 4 + src/equipo/equipo.service.ts | 72 ++++++++---- .../institucion-dia.service.ts | 4 +- .../dto/input/create.dto.ts | 4 +- .../entity/infraccion.entity.ts | 2 +- .../institucion-infraccion.controller.ts | 2 +- .../dto/input/create.dto.ts | 4 +- .../entity/programa.entity.ts | 2 +- .../dto/input/create.dto.ts | 6 +- .../entity/tipo-carrito.entity.ts | 4 +- .../institucion-tipo-carrito.controller.ts | 2 +- .../institucion-tipo-carrito.service.ts | 1 - .../dto/input/create.dto.ts | 4 +- .../entity/tipo-entrada.entity.ts | 2 +- src/institucion/dto/input/update.dto.ts | 7 +- src/institucion/entity/institucion.entity.ts | 8 +- src/institucion/institucion.controller.ts | 8 +- src/marca/dto/input/create.dto.ts | 6 +- src/marca/dto/input/marca.dto.ts | 4 +- src/marca/entity/marca.entity.ts | 2 +- src/modelo/dto/input/create.dto.ts | 6 +- src/modelo/dto/input/modelo.dto.ts | 4 +- src/modelo/entity/modelo.entity.ts | 2 +- src/modulo/dto/input/create.dto.ts | 4 +- src/modulo/dto/input/update.dto.ts | 11 +- src/modulo/entity/modulo.entity.ts | 2 +- src/multa/dto/input/multar.dto.ts | 4 +- src/multa/dto/input/multas.dto.ts | 8 +- src/multa/entity/multa.entity.ts | 2 +- src/multa/multa.service.ts | 6 +- src/operador/dto/input/create.dto.ts | 12 +- src/operador/dto/input/operadores.dto.ts | 8 +- src/operador/dto/input/update.dto.ts | 9 +- src/operador/entity/operador.entity.ts | 4 +- src/operador/operador.controller.ts | 2 +- src/prestamo/dto/input/activos.dto.ts | 4 + .../dto/input/cancelar-operador.dto.ts | 4 +- src/prestamo/dto/input/historial.dto.ts | 4 + .../dto/input/regresar-id-prestamo.dto.ts | 10 +- .../input/regresar-numero-inventario.dto.ts | 18 ++- src/prestamo/prestamo.service.ts | 63 +++++------ src/tipo-usuario/dto/input/create.dto.ts | 4 +- .../entity/tipo-usuario.entity.ts | 2 +- src/upload-file/upload-file.service.ts | 4 +- src/usuario/dto/input/dgae.dto.ts | 3 +- src/usuario/dto/input/dgp.dto.ts | 4 +- src/usuario/dto/input/usuario.dto.ts | 3 +- src/usuario/dto/input/usuarios.dto.ts | 9 +- src/usuario/entity/usuario.entity.ts | 8 +- src/usuario/usuario.service.ts | 42 +++---- 77 files changed, 511 insertions(+), 301 deletions(-) diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index d9fb47c..e124f86 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -65,7 +65,7 @@ export class AuthController { }) @ApiBody({ description: 'Todas las variables son obligatorias.', - examples: { ejemplo: { value: { usuario: '', password: '' } } }, + examples: { ejemplo: { value: { password: '', usuario: '' } } }, }) loginUsuario(@Body() body: LoginUsuarioDto) { return this.authService.loginUsuario(body.usuario, body.password); diff --git a/src/auth/auth.module.ts b/src/auth/auth.module.ts index 7a26434..758fedd 100644 --- a/src/auth/auth.module.ts +++ b/src/auth/auth.module.ts @@ -1,5 +1,5 @@ -import { ConfigService } from '@nestjs/config'; import { Module } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { AuthController } from './auth.controller'; @@ -15,12 +15,10 @@ import { UsuarioModule } from '../usuario/usuario.module'; BcryptModule, JwtModule.registerAsync({ inject: [ConfigService], - useFactory: (configService: ConfigService) => { - return { - secret: configService.get('AUTH_SECRETKEY'), - signOptions: { expiresIn: '2h' }, - }; - }, + useFactory: (configService: ConfigService) => ({ + secret: configService.get('AUTH_SECRETKEY'), + signOptions: { expiresIn: '2h' }, + }), }), ModuloModule, OperadorModule, diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index 41ad57d..9a0c42f 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -44,6 +44,13 @@ export class AuthService { .findByOperador(modulo.institucion, operador, false) .then((operador) => { this.validarLogin(operador, password); + if ( + operador.institucion.id_institucion !== + modulo.institucion.id_institucion + ) + throw new ConflictException( + 'Este módulo no pertenece a tu institución, selecciona uno válido.', + ); const payload: JwtPayload = { id_modulo: modulo.id_modulo, diff --git a/src/auth/dto/input/login-admin.dto.ts b/src/auth/dto/input/login-admin.dto.ts index 7229a12..7c04f56 100644 --- a/src/auth/dto/input/login-admin.dto.ts +++ b/src/auth/dto/input/login-admin.dto.ts @@ -1,9 +1,12 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class LoginAdminDto { @IsString() + @IsNotEmpty() + @MaxLength(40) operador: string; @IsString() + @IsNotEmpty() password: string; } diff --git a/src/auth/dto/input/login-operador.dto.ts b/src/auth/dto/input/login-operador.dto.ts index c60c0cd..37517f0 100644 --- a/src/auth/dto/input/login-operador.dto.ts +++ b/src/auth/dto/input/login-operador.dto.ts @@ -1,12 +1,15 @@ -import { IsInt, IsString } from 'class-validator'; +import { IsInt, IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class LoginOperadorDto { @IsInt() id_modulo: number; @IsString() + @IsNotEmpty() + @MaxLength(40) operador: string; @IsString() + @IsNotEmpty() password: string; } diff --git a/src/auth/dto/input/login-usuario.dto.ts b/src/auth/dto/input/login-usuario.dto.ts index 2fc3377..a7f2047 100644 --- a/src/auth/dto/input/login-usuario.dto.ts +++ b/src/auth/dto/input/login-usuario.dto.ts @@ -1,9 +1,11 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class LoginUsuarioDto { @IsString() password: string; @IsString() + @IsNotEmpty() + @MaxLength(10) usuario: string; } diff --git a/src/auth/dto/jwt-payload.ts b/src/auth/dto/jwt-payload.ts index 2a1494a..7399899 100644 --- a/src/auth/dto/jwt-payload.ts +++ b/src/auth/dto/jwt-payload.ts @@ -1,9 +1,9 @@ export class JwtPayload { + id_tipo_usuario: number; + id_modulo?: number; id_operador?: number; - id_tipo_usuario: number; - id_usuario?: number; } diff --git a/src/auth/dto/output/operador.dto.ts b/src/auth/dto/output/operador.dto.ts index c0ce54b..fba3ebb 100644 --- a/src/auth/dto/output/operador.dto.ts +++ b/src/auth/dto/output/operador.dto.ts @@ -2,10 +2,10 @@ import { Expose, Type } from 'class-transformer'; import { OperadorOutputDto } from '../../../operador/dto/output/operador.dto'; export class AuthOperadorOutputDto { - @Expose() - token; - @Expose() @Type(() => OperadorOutputDto) operador; + + @Expose() + token; } diff --git a/src/bcrypt/bcrypt.service.ts b/src/bcrypt/bcrypt.service.ts index 54ba173..8775cdb 100644 --- a/src/bcrypt/bcrypt.service.ts +++ b/src/bcrypt/bcrypt.service.ts @@ -22,11 +22,10 @@ export class BcryptService { const length = 8; const charset = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - const n = charset.length; let password = ''; for (let i = 0; i < length; i++) - password += charset.charAt(Math.floor(Math.random() * n)); + password += charset.charAt(Math.floor(Math.random() * charset.length)); return password; }; } diff --git a/src/carrera-programa/carrera-programa.service.ts b/src/carrera-programa/carrera-programa.service.ts index 8fd4dc0..3e3363e 100644 --- a/src/carrera-programa/carrera-programa.service.ts +++ b/src/carrera-programa/carrera-programa.service.ts @@ -33,7 +33,7 @@ export class CarreraProgramaService { .then((existeCarretaPrograma) => { if (existeCarretaPrograma) throw new ConflictException( - 'Los alumnos de esta carrera ya tienen acceso a este programa.', + 'Ya se asignó este programa a esta carrera.', ); return this.repository.save( this.repository.create({ @@ -81,8 +81,7 @@ export class CarreraProgramaService { return this.findById(id_carrera_programa) .then((carreraPrograma) => this.repository.delete(carreraPrograma)) .then((_) => ({ - message: - 'Se eliminó correctamente la asignación del programa de la carrera.', + message: 'Se eliminó correctamente la asignación del programa.', })); } } diff --git a/src/carrito/carrito.controller.ts b/src/carrito/carrito.controller.ts index fe511c6..1f89670 100644 --- a/src/carrito/carrito.controller.ts +++ b/src/carrito/carrito.controller.ts @@ -76,6 +76,18 @@ export class CarritoController { 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', @@ -130,8 +142,8 @@ export class CarritoController { id_carrito: 1, _activo: true, _carrito: '', - _id_modulo: 1, - _id_tipo_carrito: 1, + // _id_marca: '', + // _id_modelo: '', _marca: '', _modelo: '', }, @@ -141,12 +153,8 @@ export class CarritoController { 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, - ); + // delete data.id_marca; + // delete data.id_modelo; + return this.carritoService.update(data); } } diff --git a/src/carrito/carrito.module.ts b/src/carrito/carrito.module.ts index 573ca6f..e73cced 100644 --- a/src/carrito/carrito.module.ts +++ b/src/carrito/carrito.module.ts @@ -6,6 +6,7 @@ import { CarritoService } from './carrito.service'; import { Carrito } from './entity/carrito.entity'; import { InstitucionModule } from '../institucion/institucion.module'; import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module'; +import { MarcaModule } from '../marca/marca.module'; import { ModeloModule } from '../modelo/modelo.module'; import { ModuloModule } from '../modulo/modulo.module'; @@ -13,6 +14,7 @@ import { ModuloModule } from '../modulo/modulo.module'; imports: [ InstitucionModule, InstitucionTipoCarritoModule, + MarcaModule, ModeloModule, ModuloModule, PassportModule.register({ defaultStrategy: 'jwt' }), diff --git a/src/carrito/carrito.service.ts b/src/carrito/carrito.service.ts index 37befeb..fd6d4cb 100644 --- a/src/carrito/carrito.service.ts +++ b/src/carrito/carrito.service.ts @@ -10,6 +10,8 @@ import { Modulo } from '../modulo/entity/modulo.entity'; import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity'; import { InstitucionService } from '../institucion/institucion.service'; import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service'; +import { MarcaService } from '../marca/marca.service'; +import { ModeloService } from '../modelo/modelo.service'; import { ModuloService } from '../modulo/modulo.service'; @Injectable() @@ -18,6 +20,8 @@ export class CarritoService { @InjectRepository(Carrito) private repository: Repository, private institucionService: InstitucionService, private institucionTipoCarritoService: InstitucionTipoCarritoService, + private marcaService: MarcaService, + private modeloService: ModeloService, private moduloService: ModuloService, ) {} @@ -26,24 +30,23 @@ export class CarritoService { id_tipo_carrito: number, marca: string, modelo: string, + // id_marca: number, + // id_modelo: number, ) { + // const marca = await this.marcaService.findById(id_marca); + // const modelo = await this.modeloService.findById(id_modelo); const modulo = await this.moduloService.findById(id_modulo); const tipoCarrito = await this.institucionTipoCarritoService.findTipoCarritoById( id_tipo_carrito, ); - let carrito = ''; return this.repository .count({ modulo, tipoCarrito }) - .then((carritos) => { - carrito = `C${carritos >= 9 ? '' : '0'}${carritos + 1}`; - return this.existeCarrito(modulo, tipoCarrito, carrito); - }) - .then(() => + .then((carritos) => this.repository.save( this.repository.create({ - carrito, + carrito: `C${carritos >= 9 ? '' : '0'}${carritos + 1}`, marca, modelo, modulo, @@ -56,40 +59,33 @@ export class CarritoService { })); } - async existeCarrito( - id_modulo: number | Modulo, - id_tipo_carrito: number | TipoCarrito, - carrito: string, - ) { - const modulo = - typeof id_modulo === 'number' - ? await this.moduloService.findById(id_modulo) - : id_modulo; - const tipoCarrito = - typeof id_tipo_carrito === 'number' - ? await this.institucionTipoCarritoService.findTipoCarritoById( - id_tipo_carrito, - ) - : id_tipo_carrito; - - return this.repository - .findOne({ modulo, tipoCarrito, carrito }) - .then((existeCarrito) => { - if (existeCarrito) - throw new ConflictException( - 'Ya existe un carrito con este nombre, intenta con otro.', - ); - }); - } - async findAll(filtros: { pagina: string; activo?: string; carrito?: string; id_institucion?: string; + id_marca?: string; + id_modelo?: string; id_modulo?: string; id_tipo_carrito?: string; }) { + const institucion = filtros.id_institucion + ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + : null; + // const marca = filtros.id_marca + // ? await this.marcaService.findById(parseInt(filtros.id_marca)) + // : null; + // const modelo = filtros.id_modelo + // ? await this.modeloService.findById(parseInt(filtros.id_modelo)) + // : null; + const modulo = filtros.id_modulo + ? await this.moduloService.findById(parseInt(filtros.id_modulo)) + : null; + const tipoCarrito = filtros.id_tipo_carrito + ? await this.institucionTipoCarritoService.findTipoCarritoById( + parseInt(filtros.id_tipo_carrito), + ) + : null; const query = this.repository .createQueryBuilder('c') .innerJoinAndSelect('c.modulo', 'm') @@ -101,17 +97,6 @@ export class CarritoService { .addOrderBy('c.carrito') .skip((parseInt(filtros.pagina) - 1) * 25) .take(25); - 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.findTipoCarritoById( - parseInt(filtros.id_tipo_carrito), - ) - : null; if (filtros.activo === 'true') query.andWhere('c.activo = 1'); if (filtros.activo === 'false') query.andWhere('c.activo = 0'); @@ -169,29 +154,25 @@ export class CarritoService { async update( attrs: Partial, - id_modulo?: number, - id_tipo_carrito?: number, + // id_marca?: number, + // id_modelo?: number, ) { - const modulo = id_modulo - ? await this.moduloService.findById(id_modulo) - : null; - const tipoCarrito = id_modulo - ? await this.institucionTipoCarritoService.findTipoCarritoById( - id_tipo_carrito, - ) - : null; + // const marca = id_marca + // ? typeof id_marca === 'number' + // ? await this.marcaService.findById(id_marca) + // : id_marca + // : null; + // const operador = id_operador + // ? typeof id_operador === 'number' + // ? await this.operadorService.findById(id_operador) + // : id_operador + // : null; return this.findById(attrs.id_carrito) .then(async (carrito) => { - if (attrs.carrito || modulo || tipoCarrito) - await this.existeCarrito( - modulo ? modulo : carrito.modulo, - tipoCarrito ? tipoCarrito : carrito.tipoCarrito, - attrs.carrito ? attrs.carrito : carrito.carrito, - ); Object.assign(carrito, attrs); - if (modulo) carrito.modulo = modulo; - if (tipoCarrito) carrito.tipoCarrito = tipoCarrito; + // if (marca) carrito.marca = marca; + // if (modelo) carrito.modelo = modelo; return this.repository.save(carrito); }) .then((_) => ({ diff --git a/src/carrito/dto/input/carritos.dto.ts b/src/carrito/dto/input/carritos.dto.ts index 35a8b80..d0d5a83 100644 --- a/src/carrito/dto/input/carritos.dto.ts +++ b/src/carrito/dto/input/carritos.dto.ts @@ -1,5 +1,6 @@ import { IsBooleanString, + IsNotEmpty, IsNumberString, IsOptional, IsString, @@ -14,6 +15,7 @@ export class CarritosDto { activo?: string; @IsString() + @IsNotEmpty() @IsOptional() carrito?: string; @@ -21,6 +23,14 @@ export class CarritosDto { @IsOptional() id_institucion?: string; + // @IsNumberString() + // @IsOptional() + // id_marca?: string; + + // @IsNumberString() + // @IsOptional() + // id_modelo?: string; + @IsNumberString() @IsOptional() id_modulo?: string; diff --git a/src/carrito/dto/input/create.dto.ts b/src/carrito/dto/input/create.dto.ts index 0c559ce..9ce4083 100644 --- a/src/carrito/dto/input/create.dto.ts +++ b/src/carrito/dto/input/create.dto.ts @@ -1,12 +1,18 @@ -import { IsNumber, IsString } from 'class-validator'; +import { IsInt, IsString } from 'class-validator'; export class CreateCarritoDto { - @IsNumber() + @IsInt() id_modulo: number; - @IsNumber() + @IsInt() id_tipo_carrito: number; + // @IsInt() + // id_marca: number; + + // @IsInt() + // id_modulo: number; + @IsString() marca: string; diff --git a/src/carrito/dto/input/update.dto.ts b/src/carrito/dto/input/update.dto.ts index 565bdb4..70fbd92 100644 --- a/src/carrito/dto/input/update.dto.ts +++ b/src/carrito/dto/input/update.dto.ts @@ -8,17 +8,13 @@ export class UpdateCarritoDto { @IsOptional() activo?: boolean; - @IsString() - @IsOptional() - carrito?: string; + // @IsInt() + // @IsOptional() + // id_marca?: number; - @IsInt() - @IsOptional() - id_modulo?: number; - - @IsInt() - @IsOptional() - id_tipo_carrito?: number; + // @IsInt() + // @IsOptional() + // id_modelo?: number; @IsString() @IsOptional() diff --git a/src/carrito/dto/output/carrito-min.dto.ts b/src/carrito/dto/output/carrito-min.dto.ts index a6e0d72..f7afb8b 100644 --- a/src/carrito/dto/output/carrito-min.dto.ts +++ b/src/carrito/dto/output/carrito-min.dto.ts @@ -9,11 +9,11 @@ export class CarritoMinOutputDto { @Expose() carrito; - @Type(() => ModuloMinOutputDto) @Expose() + @Type(() => ModuloMinOutputDto) modulo; - @Type(() => TipoCarritoOutputDto) @Expose() + @Type(() => TipoCarritoOutputDto) tipoCarrito; } diff --git a/src/carrito/dto/output/carrito.dto.ts b/src/carrito/dto/output/carrito.dto.ts index db2430d..412c08f 100644 --- a/src/carrito/dto/output/carrito.dto.ts +++ b/src/carrito/dto/output/carrito.dto.ts @@ -1,7 +1,8 @@ import { Expose, Type } from 'class-transformer'; import { TipoCarritoOutputDto } from '../../../institucion-tipo-carrito/dto/output/tipo-carrito.dto'; -import { ModuloMinOutputDto } from '../../../modulo/dto/output/modulo-min.dto'; +import { MarcaOutputDto } from '../../../marca/dto/output/marca.dto'; import { ModeloOutputDto } from '../../../modelo/dto/output/modelo.dto'; +import { ModuloMinOutputDto } from '../../../modulo/dto/output/modulo-min.dto'; export class CarritoOutputDto { @Expose() @@ -14,17 +15,18 @@ export class CarritoOutputDto { carrito; @Expose() + // @Type(() => MarcaOutputDto) marca; - // @Type(() => ModeloOutputDto) @Expose() + // @Type(() => ModeloOutputDto) modelo; - @Type(() => ModuloMinOutputDto) @Expose() + @Type(() => ModuloMinOutputDto) modulo; - @Type(() => TipoCarritoOutputDto) @Expose() + @Type(() => TipoCarritoOutputDto) tipoCarrito; } diff --git a/src/carrito/dto/output/carritos.dto.ts b/src/carrito/dto/output/carritos.dto.ts index 1a1f0bc..c8b164f 100644 --- a/src/carrito/dto/output/carritos.dto.ts +++ b/src/carrito/dto/output/carritos.dto.ts @@ -12,11 +12,11 @@ export class CarritosOutputDto { @Expose() carrito; - @Type(() => ModuloMinOutputDto) @Expose() + @Type(() => ModuloMinOutputDto) modulo; - @Type(() => TipoCarritoOutputDto) @Expose() + @Type(() => TipoCarritoOutputDto) tipoCarrito; } diff --git a/src/carrito/entity/carrito.entity.ts b/src/carrito/entity/carrito.entity.ts index c68f634..cabe0d5 100644 --- a/src/carrito/entity/carrito.entity.ts +++ b/src/carrito/entity/carrito.entity.ts @@ -7,6 +7,7 @@ import { PrimaryGeneratedColumn, } from 'typeorm'; import { Equipo } from '../../equipo/entity/equipo.entity'; +import { Marca } from '../../marca/entity/marca.entity'; import { Modelo } from '../../modelo/entity/modelo.entity'; import { Modulo } from '../../modulo/entity/modulo.entity'; import { TipoCarrito } from '../../institucion-tipo-carrito/entity/tipo-carrito.entity'; @@ -22,14 +23,16 @@ export class Carrito { @Column({ type: String, nullable: false, length: 4 }) carrito: string; + // @ManyToOne(() => Marca, (marca) => marca.carritos, { eager: true }) + // @JoinColumn({ name: 'id_marca' }) @Column({ type: String, nullable: false, length: 30 }) marca: string; - - @Column({ type: String, nullable: false, length: 30 }) - modelo: string; + // marca: Marca; // @ManyToOne(() => Modelo, (modelo) => modelo.carritos, { eager: true }) // @JoinColumn({ name: 'id_modelo' }) + @Column({ type: String, nullable: false, length: 30 }) + modelo: string; // modelo: Modelo; @ManyToOne(() => Modulo, (modulo) => modulo.carritos, { eager: true }) diff --git a/src/equipo-programa/equipo-programa.service.ts b/src/equipo-programa/equipo-programa.service.ts index d951a81..022efc5 100644 --- a/src/equipo-programa/equipo-programa.service.ts +++ b/src/equipo-programa/equipo-programa.service.ts @@ -36,7 +36,7 @@ export class EquipoProgramaService { ? await this.institucionProgramaService.findProgramaById(id_programa) : id_programa; - return this.existeEquipoPrograma(equipo, programa) + return this.findEquipoProgramaByEquipoPrograma(equipo, programa) .then((_) => this.repository.save(this.repository.create({ equipo, programa })), ) @@ -60,38 +60,22 @@ export class EquipoProgramaService { return this.create(equipoPrograma.equipo, 1); } }); - return this.repository - .remove(equipoPrograma) - .then((_) => ({ - message: 'Se eliminó correctamente el programa de este equipo.', - })); + return this.repository.remove(equipoPrograma).then((_) => ({ + message: 'Se eliminó correctamente el programa de este equipo.', + })); } eliminarEquipoSinPrograma(equipo: Equipo) { return this.institucionProgramaService .findProgramaById(1) - .then((programa) => this.repository.findOne({ equipo, programa })) + .then((programa) => + this.findEquipoProgramaByEquipoPrograma(equipo, programa, false), + ) .then((equipoPrograma) => { if (equipoPrograma) return this.delete(equipoPrograma); }); } - existeEquipoPrograma( - equipo: Equipo, - programa: Programa, - validarExistencia = true, - ) { - return this.repository - .findOne({ equipo, programa }) - .then((equipoPrograma) => { - if (validarExistencia && equipoPrograma) - throw new ConflictException( - 'Este programa ya fue asignado a este equipo.', - ); - return equipoPrograma; - }); - } - findById(id_equipo_programa: number) { return this.repository .findOne({ @@ -104,4 +88,20 @@ export class EquipoProgramaService { return equipoPrograma; }); } + + findEquipoProgramaByEquipoPrograma( + equipo: Equipo, + programa: Programa, + validarExistencia = true, + ) { + return this.repository + .findOne({ equipo, programa }) + .then((equipoPrograma) => { + if (validarExistencia && equipoPrograma) + throw new ConflictException( + 'Este programa ya fue asignado a este equipo.', + ); + return equipoPrograma; + }); + } } diff --git a/src/equipo-tipo-entrada/equipo-tipo-entrada.service.ts b/src/equipo-tipo-entrada/equipo-tipo-entrada.service.ts index a1f10e7..3a2977e 100644 --- a/src/equipo-tipo-entrada/equipo-tipo-entrada.service.ts +++ b/src/equipo-tipo-entrada/equipo-tipo-entrada.service.ts @@ -31,7 +31,7 @@ export class EquipoTipoEntradaService { ) : id_tipo_entrada; - return this.existeEquipoTipoEntrada(equipo, tipoEntrada) + return this.findEquipoTipoEntradaByEquipoTipoEntrada(equipo, tipoEntrada) .then((_) => this.repository.save(this.repository.create({ equipo, tipoEntrada })), ) @@ -49,7 +49,17 @@ export class EquipoTipoEntradaService { })); } - existeEquipoTipoEntrada( + findById(id_equipo_tipo_entrada: number) { + return this.repository + .findOne({ id_equipo_tipo_entrada }) + .then((equipoTipoEntrada) => { + if (!equipoTipoEntrada) + throw new ConflictException('No existe este id equipo tipo entrada.'); + return equipoTipoEntrada; + }); + } + + findEquipoTipoEntradaByEquipoTipoEntrada( equipo: Equipo, tipoEntrada: TipoEntrada, validarExistencia = true, @@ -64,14 +74,4 @@ export class EquipoTipoEntradaService { return equipoTipoEntrada; }); } - - findById(id_equipo_tipo_entrada: number) { - return this.repository - .findOne({ id_equipo_tipo_entrada }) - .then((equipoTipoEntrada) => { - if (!equipoTipoEntrada) - throw new ConflictException('No existe este id equipo tipo entrada.'); - return equipoTipoEntrada; - }); - } } diff --git a/src/equipo/dto/input/equipos.dto.ts b/src/equipo/dto/input/equipos.dto.ts index 3d5a0ef..1a02f62 100644 --- a/src/equipo/dto/input/equipos.dto.ts +++ b/src/equipo/dto/input/equipos.dto.ts @@ -1,14 +1,21 @@ -import { IsNumberString, IsOptional, IsString } from 'class-validator'; +import { + IsNotEmpty, + IsNumberString, + IsOptional, + IsString, +} from 'class-validator'; export class EquiposDto { @IsNumberString() pagina: string; @IsString() + @IsNotEmpty() @IsOptional() carrito?: string; @IsString() + @IsNotEmpty() @IsOptional() equipo?: string; @@ -20,6 +27,14 @@ export class EquiposDto { @IsOptional() id_institucion?: string; + // @IsInt() + // @IsOptional() + // id_marca?: number; + + // @IsInt() + // @IsOptional() + // id_modelo?: number; + @IsNumberString() @IsOptional() id_modulo?: string; diff --git a/src/equipo/dto/input/update.dto.ts b/src/equipo/dto/input/update.dto.ts index dd4cb0c..e253c1c 100644 --- a/src/equipo/dto/input/update.dto.ts +++ b/src/equipo/dto/input/update.dto.ts @@ -1,10 +1,11 @@ -import { IsInt, IsOptional, IsString } from 'class-validator'; +import { IsInt, IsNotEmpty, IsOptional, IsString, MaxLength } from 'class-validator'; export class UpdateEquipoDto { @IsInt() id_equipo: number; @IsString() + @IsNotEmpty() @IsOptional() equipo?: string; @@ -12,6 +13,14 @@ export class UpdateEquipoDto { @IsOptional() id_carrito?: number; + // @IsInt() + // @IsOptional() + // id_marca?: number; + + // @IsInt() + // @IsOptional() + // id_modelo?: number; + @IsInt() @IsOptional() id_operador?: number; @@ -29,10 +38,8 @@ export class UpdateEquipoDto { modelo?: string; @IsString() + @IsNotEmpty() + @MaxLength(250) @IsOptional() motivo?: string; - - @IsString() - @IsOptional() - numero_serie?: string; } diff --git a/src/equipo/dto/output/equipo.dto.ts b/src/equipo/dto/output/equipo.dto.ts index f31f986..95f8187 100644 --- a/src/equipo/dto/output/equipo.dto.ts +++ b/src/equipo/dto/output/equipo.dto.ts @@ -1,6 +1,8 @@ import { Expose, Type } from 'class-transformer'; import { CarritoMinOutputDto } from '../../../carrito/dto/output/carrito-min.dto'; import { EquipoProgramaOutputDto } from '../../../equipo-programa/dto/output/equipo-programa.dto'; +import { MarcaOutputDto } from '../../../marca/dto/output/marca.dto'; +import { ModeloOutputDto } from '../../../modelo/dto/output/modelo.dto'; import { EquipoTipoEntradaOutputDto } from '../../../equipo-tipo-entrada/dto/output/equipo-tipo-entrada.dto'; import { StatusOutputDto } from '../../../status/dto/output/status.dto'; @@ -12,9 +14,11 @@ export class EquipoOutputDto { equipo; @Expose() + // @Type(() => MarcaOutputDto) marca; @Expose() + // @Type(() => ModeloOutputDto) modelo; @Expose() diff --git a/src/equipo/entity/equipo.entity.ts b/src/equipo/entity/equipo.entity.ts index 7e1c2b0..b21c0e2 100644 --- a/src/equipo/entity/equipo.entity.ts +++ b/src/equipo/entity/equipo.entity.ts @@ -9,6 +9,8 @@ import { import { Carrito } from '../../carrito/entity/carrito.entity'; import { EquipoPrograma } from '../../equipo-programa/entity/equipo-programa.entity'; import { EquipoTipoEntrada } from '../../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity'; +import { Marca } from '../../marca/entity/marca.entity'; +import { Modelo } from '../../modelo/entity/modelo.entity'; import { Motivo } from '../../motivo/entity/motivo.entity'; import { Prestamo } from '../../prestamo/entity/prestamo.entity'; import { Status } from '../../status/entity/status.entity'; @@ -18,7 +20,7 @@ export class Equipo { @PrimaryGeneratedColumn() id_equipo: number; - @Column({ type: String, nullable: false, length: 3 }) + @Column({ type: String, nullable: false, length: 4 }) equipo: string; @Column({ type: String, nullable: false, length: 30 }) @@ -27,10 +29,10 @@ export class Equipo { @Column({ type: String, nullable: false, length: 30 }) modelo: string; - @Column({ type: String, nullable: false, length: 25 }) + @Column({ type: String, nullable: false, length: 30 }) numero_inventario: string; - @Column({ type: String, nullable: false, length: 25 }) + @Column({ type: String, nullable: false, length: 30 }) numero_serie: string; @Column({ type: Boolean, nullable: false, default: false }) @@ -40,6 +42,14 @@ export class Equipo { @JoinColumn({ name: 'id_carrito' }) carrito: Carrito; + // @ManyToOne(() => Marca, (marca) => marca.equipos, { eager: true }) + // @JoinColumn({ name: 'id_marca' }) + // marca: Marca; + + // @ManyToOne(() => Modelo, (modelo) => modelo.equipos, { eager: true }) + // @JoinColumn({ name: 'id_modelo' }) + // modelo: Modelo; + @ManyToOne(() => Status, (status) => status.equipos, { eager: true }) @JoinColumn({ name: 'id_status' }) status: Status; diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index 100294b..7084765 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -70,12 +70,30 @@ export class EquipoController { type: 'string', required: false, }) + @ApiQuery({ + description: 'Id del carrito que se quiere usar como filtro.', + name: 'id_carrito', + 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 de la marca que se quiere usar como filtro.', + // name: 'id_marca', + // type: 'string', + // required: false, + // }) + // @ApiQuery({ + // description: 'Id del modelo que se quiere usar como filtro.', + // name: 'id_modelo', + // type: 'string', + // required: false, + // }) @ApiQuery({ description: 'Id del módulo que se quiere usar como filtro.', name: 'id_modulo', @@ -113,7 +131,7 @@ export class EquipoController { @Put() @UseGuards(AuthGuard('jwt')) @ApiOperation({ - description: 'Endpoint que actualiza lan información de un equipo.', + description: 'Endpoint que actualiza la información de un equipo.', }) @ApiBearerAuth('jwt') @ApiBody({ @@ -125,12 +143,13 @@ export class EquipoController { id_equipo: 1, _equipo: true, _id_carrito: '', + // _id_marca: '', + // _id_modelo: '', _id_operador: 1, _id_status: 1, _marca: '', _modelo: '', _motivo: '', - _numero_serie: '', }, }, }, diff --git a/src/equipo/equipo.module.ts b/src/equipo/equipo.module.ts index abe602a..a9fcc15 100644 --- a/src/equipo/equipo.module.ts +++ b/src/equipo/equipo.module.ts @@ -10,6 +10,8 @@ import { InstitucionModule } from '../institucion/institucion.module'; import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module'; import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module'; import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module'; +import { MarcaModule } from '../marca/marca.module'; +import { ModeloModule } from '../modelo/modelo.module'; import { ModuloModule } from '../modulo/modulo.module'; import { MotivoModule } from '../motivo/motivo.module'; import { OperadorModule } from '../operador/operador.module'; @@ -23,6 +25,8 @@ import { StatusModule } from '../status/status.module'; InstitucionProgramaModule, InstitucionTipoCarritoModule, InstitucionTipoEntradaModule, + MarcaModule, + ModeloModule, ModuloModule, forwardRef(() => MotivoModule), OperadorModule, diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 38c0292..2b50b6c 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -10,6 +10,8 @@ import { Repository } from 'typeorm'; import { Carrito } from '../carrito/entity/carrito.entity'; import { Equipo } from './entity/equipo.entity'; import { Institucion } from '../institucion/entity/institucion.entity'; +// import { Marca } from '../marca/entity/marca.entity'; +// import { Modelo } from '../modelo/entity/modelo.entity'; import { Modulo } from '../modulo/entity/modulo.entity'; import { Operador } from '../operador/entity/operador.entity'; import { Programa } from '../institucion-programa/entity/programa.entity'; @@ -21,6 +23,8 @@ import { InstitucionService } from '../institucion/institucion.service'; import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service'; import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service'; import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service'; +import { MarcaService } from '../marca/marca.service'; +import { ModeloService } from '../modelo/modelo.service'; import { ModuloService } from '../modulo/modulo.service'; import { MotivoService } from '../motivo/motivo.service'; import { OperadorService } from '../operador/operador.service'; @@ -37,6 +41,8 @@ export class EquipoService { private institucionProgramaService: InstitucionProgramaService, private institucionTipoCarritoService: InstitucionTipoCarritoService, private institucionTipoEntradaService: InstitucionTipoEntradaService, + private marcaService: MarcaService, + private modeloService: ModeloService, private moduloService: ModuloService, @Inject(forwardRef(() => MotivoService)) private motivoService: MotivoService, @@ -49,8 +55,8 @@ export class EquipoService { equipo: string, numero_inventario: string, numero_serie: string, - marca: string, - modelo: string, + marca: string, // Marca, + modelo: string, // Modelo, ) { const activo = await this.statusService.findById(1); const equipoNuevo = await this.repository.save( @@ -70,26 +76,14 @@ export class EquipoService { .then((_) => equipoNuevo); } - async existeEquipo(id_carrito: number | Carrito, equipo: string) { - const carrito = - typeof id_carrito === 'number' - ? await this.carritoService.findById(id_carrito) - : id_carrito; - - return this.repository.findOne({ carrito, equipo }).then((existeEquipo) => { - if (existeEquipo) - throw new ConflictException( - 'Ya existe un equipo en este carrito con este nombre, intenta con otro.', - ); - }); - } - async findAll(filtros: { pagina: string; carrito?: string; equipo?: string; id_carrito?: string; id_institucion?: string; + id_marca?: string; + id_modelo?: string; id_modulo?: string; id_programa?: string; id_status?: string; @@ -102,6 +96,12 @@ export class EquipoService { const institucion = filtros.id_institucion ? await this.institucionService.findById(parseInt(filtros.id_institucion)) : null; + // const marca = filtros.id_marca + // ? await this.marcaService.findById(parseInt(filtros.id_marca)) + // : null; + // const modelo = filtros.id_modelo + // ? await this.modeloService.findById(parseInt(filtros.id_modelo)) + // : null; const modulo = filtros.id_modulo ? await this.moduloService.findById(parseInt(filtros.id_modulo)) : null; @@ -150,18 +150,26 @@ export class EquipoService { query.andWhere('e.equipo LIKE :equipo', { equipo: `%${filtros.equipo}%`, }); - if (carrito) - query.andWhere('c.id_carrito = :id_carrito', { - id_carrito: carrito.id_carrito, - }); if (institucion) query.andWhere('m.id_institucion = :id_institucion', { id_institucion: institucion.id_institucion, }); + // if (marca) + // query.andWhere('m.id_marca = :id_marca', { + // id_marca: marca.id_marca, + // }); + // if (modelo) + // query.andWhere('m.id_modelo = :id_modelo', { + // id_modelo: modelo.id_modelo, + // }); if (modulo) query.andWhere('m.id_modulo = :id_modulo', { id_modulo: modulo.id_modulo, }); + if (carrito) + query.andWhere('c.id_carrito = :id_carrito', { + id_carrito: carrito.id_carrito, + }); if (programa) query.andWhere('ps.id_programa = :id_programa', { id_programa: programa.id_programa, @@ -330,6 +338,8 @@ export class EquipoService { attrs: Partial, id_carrito?: number, id_status?: number, + // id_marca?: number, + // id_modelo?: number, id_operador?: number | Operador, motivo?: string, ) { @@ -341,6 +351,16 @@ export class EquipoService { ? await this.operadorService.findById(id_operador) : id_operador : null; + // const marca = id_marca + // ? typeof id_marca === 'number' + // ? await this.marcaService.findById(id_marca) + // : id_marca + // : null; + // const operador = id_operador + // ? typeof id_operador === 'number' + // ? await this.operadorService.findById(id_operador) + // : id_operador + // : null; const status = id_status ? await this.statusService.findById(id_status) : null; @@ -348,10 +368,16 @@ export class EquipoService { return this.findById(attrs.id_equipo) .then(async (equipo) => { if ((attrs.equipo && attrs.equipo != equipo.equipo) || carrito) - await this.existeEquipo( + await this.findEquipoByEquipo( carrito ? carrito : equipo.carrito, attrs.equipo ? attrs.equipo : equipo.equipo, - ); + false, + ).then((existeEquipo) => { + if (existeEquipo) + throw new ConflictException( + 'Ya existe un equipo en este carrito con este nombre, intenta con otro.', + ); + }); if ( status && (status.id_status >= 4 || @@ -374,6 +400,8 @@ export class EquipoService { equipo.status = status; } if (carrito) equipo.carrito = carrito; + // if (marca) equipo.marca = marca; + // if (modelo) equipo.modelo = modelo; return this.repository.save(equipo); }) .then((equipo) => ({ diff --git a/src/institucion-dia/institucion-dia.service.ts b/src/institucion-dia/institucion-dia.service.ts index fc906bd..4c8356c 100644 --- a/src/institucion-dia/institucion-dia.service.ts +++ b/src/institucion-dia/institucion-dia.service.ts @@ -36,7 +36,7 @@ export class InstitucionDiaService { }); } - findInstitucionDia(institucion: Institucion, id_dia: number) { + findByInstitucionDia(institucion: Institucion, id_dia: number) { return this.repository.findOne({ institucion, dia: { id_dia } }); } @@ -50,7 +50,7 @@ export class InstitucionDiaService { return this.institucionService .findById(id_institucion) .then((institucion) => - this.findInstitucionDia(institucion, ahora.weekday()), + this.findByInstitucionDia(institucion, ahora.weekday()), ); } diff --git a/src/institucion-infraccion/dto/input/create.dto.ts b/src/institucion-infraccion/dto/input/create.dto.ts index 3f87ea0..78cf7bd 100644 --- a/src/institucion-infraccion/dto/input/create.dto.ts +++ b/src/institucion-infraccion/dto/input/create.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateInstitucionInfraccionDto { @IsString() + @IsNotEmpty() + @MaxLength(50) infraccion: string; } diff --git a/src/institucion-infraccion/entity/infraccion.entity.ts b/src/institucion-infraccion/entity/infraccion.entity.ts index 8fc06d8..7aba1a3 100644 --- a/src/institucion-infraccion/entity/infraccion.entity.ts +++ b/src/institucion-infraccion/entity/infraccion.entity.ts @@ -6,7 +6,7 @@ export class Infraccion { @PrimaryGeneratedColumn() id_infraccion: number; - @Column({ type: String, nullable: false, length: 100 }) + @Column({ type: String, nullable: false, length: 50 }) infraccion: string; @OneToMany( diff --git a/src/institucion-infraccion/institucion-infraccion.controller.ts b/src/institucion-infraccion/institucion-infraccion.controller.ts index 247cada..c461a75 100644 --- a/src/institucion-infraccion/institucion-infraccion.controller.ts +++ b/src/institucion-infraccion/institucion-infraccion.controller.ts @@ -35,7 +35,7 @@ export class InstitucionInfraccionController { @ApiOperation({ description: 'Endpoint que crea una infracción.' }) @ApiBearerAuth('jwt') @ApiBody({ - description: 'Es obligatorio mandar la variable infraccion.', + description: 'Es obligatorio mandar la variable infracción.', examples: { ejemplo: { value: { infraccion: '' } } }, }) create(@Body() body: CreateInstitucionInfraccionDto) { diff --git a/src/institucion-programa/dto/input/create.dto.ts b/src/institucion-programa/dto/input/create.dto.ts index 1f8d436..a971281 100644 --- a/src/institucion-programa/dto/input/create.dto.ts +++ b/src/institucion-programa/dto/input/create.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateProgramaDto { @IsString() + @IsNotEmpty() + @MaxLength(40) programa: string; } diff --git a/src/institucion-programa/entity/programa.entity.ts b/src/institucion-programa/entity/programa.entity.ts index 5ffb09a..4652e4e 100644 --- a/src/institucion-programa/entity/programa.entity.ts +++ b/src/institucion-programa/entity/programa.entity.ts @@ -8,7 +8,7 @@ export class Programa { @PrimaryGeneratedColumn() id_programa: number; - @Column({ type: String, nullable: false, length: 100 }) + @Column({ type: String, nullable: false, length: 40 }) programa: string; @OneToMany( diff --git a/src/institucion-tipo-carrito/dto/input/create.dto.ts b/src/institucion-tipo-carrito/dto/input/create.dto.ts index a1d49b4..faa1f77 100644 --- a/src/institucion-tipo-carrito/dto/input/create.dto.ts +++ b/src/institucion-tipo-carrito/dto/input/create.dto.ts @@ -1,9 +1,13 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateInstitucionTipoCarritoDto { @IsString() + @IsNotEmpty() + @MaxLength(2) letra: string; @IsString() + @IsNotEmpty() + @MaxLength(30) tipo_carrito: string; } diff --git a/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts b/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts index d28deb8..afcb01c 100644 --- a/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts +++ b/src/institucion-tipo-carrito/entity/tipo-carrito.entity.ts @@ -7,10 +7,10 @@ export class TipoCarrito { @PrimaryGeneratedColumn() id_tipo_carrito: number; - @Column({ type: String, nullable: false, length: 1 }) + @Column({ type: String, nullable: false, length: 2 }) letra: string; - @Column({ type: String, nullable: false, length: 20 }) + @Column({ type: String, nullable: false, length: 30 }) tipo_carrito: string; @OneToMany(() => Carrito, (carrito) => carrito.tipoCarrito) diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts index b21c81a..995551e 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts @@ -20,9 +20,9 @@ import { InstitucionTipoCarritoService } from './institucion-tipo-carrito.servic import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { CreateInstitucionTipoCarritoDto } from './dto/input/create.dto'; import { UpdateInstitucionTipoCarritoDto } from './dto/input/update.dto'; -import { TipoCarritoOutputDto } from './dto/output/tipo-carrito.dto'; import { InstitucionTiposCarritoOutputDto } from './dto/output/institucion-tipos-carrito.dto'; import { InstitucionTiposCarritoMostarOutputDto } from './dto/output/institucion-tipos-carrito-mostar.dto'; +import { TipoCarritoOutputDto } from './dto/output/tipo-carrito.dto'; @Controller('institucion-tipo-carrito') @ApiTags('institucion-tipo-carrito') diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts index 7a1ae1f..4c9784a 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts @@ -5,7 +5,6 @@ import { } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { Institucion } from '../institucion/entity/institucion.entity'; import { InstitucionTipoCarrito } from './entity/institucion-tipo-carrito.entity'; import { TipoCarrito } from './entity/tipo-carrito.entity'; import { InstitucionService } from '../institucion/institucion.service'; diff --git a/src/institucion-tipo-entrada/dto/input/create.dto.ts b/src/institucion-tipo-entrada/dto/input/create.dto.ts index 090ce75..e0a7950 100644 --- a/src/institucion-tipo-entrada/dto/input/create.dto.ts +++ b/src/institucion-tipo-entrada/dto/input/create.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateInstitucionTipoEntradaDto { @IsString() + @IsNotEmpty() + @MaxLength(30) tipo_entrada: string; } diff --git a/src/institucion-tipo-entrada/entity/tipo-entrada.entity.ts b/src/institucion-tipo-entrada/entity/tipo-entrada.entity.ts index ec8e08f..f6af23f 100644 --- a/src/institucion-tipo-entrada/entity/tipo-entrada.entity.ts +++ b/src/institucion-tipo-entrada/entity/tipo-entrada.entity.ts @@ -7,7 +7,7 @@ export class TipoEntrada { @PrimaryGeneratedColumn() id_tipo_entrada: number; - @Column({ type: String, nullable: false, length: 20 }) + @Column({ type: String, nullable: false, length: 30 }) tipo_entrada: string; @OneToMany( diff --git a/src/institucion/dto/input/update.dto.ts b/src/institucion/dto/input/update.dto.ts index 8f2bfdc..b599345 100644 --- a/src/institucion/dto/input/update.dto.ts +++ b/src/institucion/dto/input/update.dto.ts @@ -2,8 +2,10 @@ import { IsBoolean, IsEmail, IsInt, + IsNotEmpty, IsNumber, IsOptional, + IsPhoneNumber, IsString, } from 'class-validator'; @@ -24,6 +26,7 @@ export class UpdateInstitucionDto { dias_multa_retraso?: number; @IsString() + @IsNotEmpty() @IsOptional() dominio?: string; @@ -32,10 +35,11 @@ export class UpdateInstitucionDto { email_institucional?: boolean; @IsString() + @IsNotEmpty() @IsOptional() responsable?: string; - @IsString() + @IsPhoneNumber('MX') @IsOptional() telefono?: string; @@ -52,6 +56,7 @@ export class UpdateInstitucionDto { tiempo_recoger?: number; @IsString() + @IsNotEmpty() @IsOptional() ubicacion?: string; } diff --git a/src/institucion/entity/institucion.entity.ts b/src/institucion/entity/institucion.entity.ts index 77a67b1..a5658c3 100644 --- a/src/institucion/entity/institucion.entity.ts +++ b/src/institucion/entity/institucion.entity.ts @@ -13,13 +13,13 @@ export class Institucion { @PrimaryGeneratedColumn() id_institucion: number; - @Column({ type: Boolean, nullable: true, default: false }) + @Column({ type: Boolean, nullable: false, default: false }) activo: boolean; - @Column({ type: String, nullable: true, length: 4 }) + @Column({ type: String, nullable: false, length: 4 }) clave: string; - @Column({ type: String, nullable: true, length: 60, default: '' }) + @Column({ type: String, nullable: true, length: 60 }) correo: string; @Column({ type: Number, nullable: false, default: 7 }) @@ -28,7 +28,7 @@ export class Institucion { @Column({ type: String, nullable: true, length: 40 }) dominio: string; - @Column({ type: Boolean, nullable: true, default: false }) + @Column({ type: Boolean, nullable: false, default: false }) email_institucional: boolean; @Column({ type: String, nullable: false, length: 150 }) diff --git a/src/institucion/institucion.controller.ts b/src/institucion/institucion.controller.ts index 86fd008..f31c39c 100644 --- a/src/institucion/institucion.controller.ts +++ b/src/institucion/institucion.controller.ts @@ -12,9 +12,9 @@ import { InstitucionService } from './institucion.service'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { UpdateInstitucionDto } from './dto/input/update.dto'; import { InstitucionOutputDto } from './dto/output/institucion.dto'; +import { InstitucionMinOutputDto } from './dto/output/institucion-min.dto'; import { InstitucionesOutputDto } from './dto/output/instituciones.dto'; import { InstitucionesMinOutputDto } from './dto/output/instituciones-min.dto'; -import { InstitucionMinOutputDto } from './dto/output/institucion-min.dto'; @Controller('institucion') @ApiTags('institucion') @@ -87,9 +87,9 @@ export class InstitucionController { _email_institucional: true, _responsable: '', _telefono: '', - _tiempo_entrega: 7, - _tiempo_prestamo: 7, - _tiempo_recoger: 7, + _tiempo_entrega: 15, + _tiempo_prestamo: 120, + _tiempo_recoger: 10, _ubicacion: '', }, }, diff --git a/src/marca/dto/input/create.dto.ts b/src/marca/dto/input/create.dto.ts index bc19cbb..2d2d3b7 100644 --- a/src/marca/dto/input/create.dto.ts +++ b/src/marca/dto/input/create.dto.ts @@ -1,9 +1,13 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateMarcaDto { @IsString() + @IsNotEmpty() + @MaxLength(30) marca; @IsString() + @IsNotEmpty() + @MaxLength(1) tipo; } diff --git a/src/marca/dto/input/marca.dto.ts b/src/marca/dto/input/marca.dto.ts index 53e1d3b..cc2964f 100644 --- a/src/marca/dto/input/marca.dto.ts +++ b/src/marca/dto/input/marca.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class MarcaDto { @IsString() + @IsNotEmpty() + @MaxLength(1) tipo; } diff --git a/src/marca/entity/marca.entity.ts b/src/marca/entity/marca.entity.ts index 7f2bdd9..3ce543e 100644 --- a/src/marca/entity/marca.entity.ts +++ b/src/marca/entity/marca.entity.ts @@ -7,7 +7,7 @@ export class Marca { @PrimaryGeneratedColumn() id_marca: number; - @Column({ type: String, nullable: false, length: 20 }) + @Column({ type: String, nullable: false, length: 30 }) marca: string; @Column({ type: String, nullable: false, length: 1 }) diff --git a/src/modelo/dto/input/create.dto.ts b/src/modelo/dto/input/create.dto.ts index 07f7a0e..47b95fa 100644 --- a/src/modelo/dto/input/create.dto.ts +++ b/src/modelo/dto/input/create.dto.ts @@ -1,9 +1,13 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateModeloDto { @IsString() + @IsNotEmpty() + @MaxLength(30) modelo; @IsString() + @IsNotEmpty() + @MaxLength(1) tipo; } diff --git a/src/modelo/dto/input/modelo.dto.ts b/src/modelo/dto/input/modelo.dto.ts index fa79763..7d966a1 100644 --- a/src/modelo/dto/input/modelo.dto.ts +++ b/src/modelo/dto/input/modelo.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class ModeloDto { @IsString() + @IsNotEmpty() + @MaxLength(1) tipo; } diff --git a/src/modelo/entity/modelo.entity.ts b/src/modelo/entity/modelo.entity.ts index fadb8a4..ddde7e1 100644 --- a/src/modelo/entity/modelo.entity.ts +++ b/src/modelo/entity/modelo.entity.ts @@ -7,7 +7,7 @@ export class Modelo { @PrimaryGeneratedColumn() id_modelo: number; - @Column({ type: String, nullable: false, length: 20 }) + @Column({ type: String, nullable: false, length: 30 }) modelo: string; @Column({ type: String, nullable: false, length: 1 }) diff --git a/src/modulo/dto/input/create.dto.ts b/src/modulo/dto/input/create.dto.ts index fc9ef6f..6064e5b 100644 --- a/src/modulo/dto/input/create.dto.ts +++ b/src/modulo/dto/input/create.dto.ts @@ -1,9 +1,11 @@ -import { IsInt, IsString } from 'class-validator'; +import { IsInt, IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateModuloDto { @IsInt() id_institucion: number; @IsString() + @IsNotEmpty() + @MaxLength(30) modulo: string; } diff --git a/src/modulo/dto/input/update.dto.ts b/src/modulo/dto/input/update.dto.ts index 9937a5f..1a79510 100644 --- a/src/modulo/dto/input/update.dto.ts +++ b/src/modulo/dto/input/update.dto.ts @@ -1,4 +1,11 @@ -import { IsBoolean, IsInt, IsOptional, IsString } from 'class-validator'; +import { + IsBoolean, + IsInt, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from 'class-validator'; export class UpdateModuloDto { @IsInt() @@ -9,6 +16,8 @@ export class UpdateModuloDto { activo?: boolean; @IsString() + @IsNotEmpty() + @MaxLength(30) @IsOptional() modulo?: string; } diff --git a/src/modulo/entity/modulo.entity.ts b/src/modulo/entity/modulo.entity.ts index 2b3d2f3..75f0cb9 100644 --- a/src/modulo/entity/modulo.entity.ts +++ b/src/modulo/entity/modulo.entity.ts @@ -17,7 +17,7 @@ export class Modulo { @Column({ type: Boolean, nullable: false, default: false }) activo: boolean; - @Column({ type: String, nullable: false, length: 50 }) + @Column({ type: String, nullable: false, length: 30 }) modulo: string; @ManyToOne(() => Institucion, (institucion) => institucion.modulos, { diff --git a/src/multa/dto/input/multar.dto.ts b/src/multa/dto/input/multar.dto.ts index bcfe4a0..3d04da5 100644 --- a/src/multa/dto/input/multar.dto.ts +++ b/src/multa/dto/input/multar.dto.ts @@ -1,7 +1,9 @@ -import { IsInt, IsString } from 'class-validator'; +import { IsInt, IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class MultarDto { @IsString() + @IsNotEmpty() + @MaxLength(250) descripcion: string; @IsInt() diff --git a/src/multa/dto/input/multas.dto.ts b/src/multa/dto/input/multas.dto.ts index b6598ab..2d97657 100644 --- a/src/multa/dto/input/multas.dto.ts +++ b/src/multa/dto/input/multas.dto.ts @@ -1,4 +1,9 @@ -import { IsNumberString, IsOptional, IsString } from 'class-validator'; +import { + IsNotEmpty, + IsNumberString, + IsOptional, + IsString, +} from 'class-validator'; export class MultasDto { @IsNumberString() @@ -9,6 +14,7 @@ export class MultasDto { id_institucion?: string; @IsString() + @IsNotEmpty() @IsOptional() usuario?: string; } diff --git a/src/multa/entity/multa.entity.ts b/src/multa/entity/multa.entity.ts index f2a5596..4adfe6f 100644 --- a/src/multa/entity/multa.entity.ts +++ b/src/multa/entity/multa.entity.ts @@ -17,7 +17,7 @@ export class Multa { @Column({ type: Boolean, nullable: false, default: true }) activo: boolean; - @Column({ type: String, nullable: false }) + @Column({ type: String, nullable: false, length: 250 }) descripcion: string; @Column({ type: Date, nullable: false }) diff --git a/src/multa/multa.service.ts b/src/multa/multa.service.ts index 71ac062..97f5e73 100644 --- a/src/multa/multa.service.ts +++ b/src/multa/multa.service.ts @@ -135,6 +135,9 @@ export class MultaService { id_institucion?: string; usuario?: string; }) { + const institucion = filtros.id_institucion + ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + : null; const query = this.repository .createQueryBuilder('mu') .innerJoinAndSelect('mu.institucionInfraccion', 'ii') @@ -158,9 +161,6 @@ export class MultaService { .addOrderBy('mu.id_multa', 'DESC') .skip((parseInt(filtros.pagina) - 1) * 25) .take(25); - const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) - : null; if (filtros.usuario) query.andWhere('u.usuario LIKE :usuario', { diff --git a/src/operador/dto/input/create.dto.ts b/src/operador/dto/input/create.dto.ts index a7d4817..e19f8e1 100644 --- a/src/operador/dto/input/create.dto.ts +++ b/src/operador/dto/input/create.dto.ts @@ -1,4 +1,11 @@ -import { IsEmail, IsInt, IsOptional, IsString } from 'class-validator'; +import { + IsEmail, + IsInt, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from 'class-validator'; export class CreateOperadorDto { @IsEmail() @@ -11,12 +18,15 @@ export class CreateOperadorDto { id_tipo_usuario: number; @IsString() + @IsNotEmpty() + @MaxLength(40) nombre: string; @IsString() operador: string; @IsString() + @IsNotEmpty() @IsOptional() password?: string; } diff --git a/src/operador/dto/input/operadores.dto.ts b/src/operador/dto/input/operadores.dto.ts index 150271a..98a787e 100644 --- a/src/operador/dto/input/operadores.dto.ts +++ b/src/operador/dto/input/operadores.dto.ts @@ -1,4 +1,9 @@ -import { IsNumberString, IsOptional, IsString } from 'class-validator'; +import { + IsNotEmpty, + IsNumberString, + IsOptional, + IsString, +} from 'class-validator'; export class OperadoresDto { @IsNumberString() @@ -13,6 +18,7 @@ export class OperadoresDto { id_tipo_usuario?: string; @IsString() + @IsNotEmpty() @IsOptional() operador?: string; } diff --git a/src/operador/dto/input/update.dto.ts b/src/operador/dto/input/update.dto.ts index 88d5345..dffbc2f 100644 --- a/src/operador/dto/input/update.dto.ts +++ b/src/operador/dto/input/update.dto.ts @@ -1,4 +1,10 @@ -import { IsBoolean, IsInt, IsOptional, IsString } from 'class-validator'; +import { + IsBoolean, + IsInt, + IsNotEmpty, + IsOptional, + IsString, +} from 'class-validator'; export class UpdateOperadorDto { @IsInt() @@ -9,6 +15,7 @@ export class UpdateOperadorDto { activo?: boolean; @IsString() + @IsNotEmpty() @IsOptional() password?: string; } diff --git a/src/operador/entity/operador.entity.ts b/src/operador/entity/operador.entity.ts index 4f66780..1213269 100644 --- a/src/operador/entity/operador.entity.ts +++ b/src/operador/entity/operador.entity.ts @@ -20,13 +20,13 @@ export class Operador { @Column({ type: Boolean, nullable: false, default: false }) activo: boolean; - @Column({ type: String, nullable: true, length: 60 }) + @Column({ type: String, nullable: true, length: 80 }) correo: string; @Column({ type: String, nullable: true, length: 100 }) nombre: string; - @Column({ type: String, nullable: false, length: 50 }) + @Column({ type: String, nullable: false, length: 40 }) operador: string; @Column({ type: String, nullable: false, length: 60 }) diff --git a/src/operador/operador.controller.ts b/src/operador/operador.controller.ts index 8bcb521..e98f602 100644 --- a/src/operador/operador.controller.ts +++ b/src/operador/operador.controller.ts @@ -18,9 +18,9 @@ import { import { Serealize } from '../interceptors/serialize.interceptor'; import { OperadorService } from './operador.service'; import { CreateOperadorDto } from './dto/input/create.dto'; +import { OperadorDto } from './dto/input/operador.dto'; import { OperadoresDto } from './dto/input/operadores.dto'; import { UpdateOperadorDto } from './dto/input/update.dto'; -import { OperadorDto } from './dto/input/operador.dto'; import { OperadorOutputDto } from './dto/output/operador.dto'; @Controller('operador') diff --git a/src/prestamo/dto/input/activos.dto.ts b/src/prestamo/dto/input/activos.dto.ts index cab0705..586ba40 100644 --- a/src/prestamo/dto/input/activos.dto.ts +++ b/src/prestamo/dto/input/activos.dto.ts @@ -1,5 +1,6 @@ import { IsBoolean, + IsNotEmpty, IsNumberString, IsOptional, IsString, @@ -13,10 +14,12 @@ export class ActivosDto { pagina: string; @IsString() + @IsNotEmpty() @IsOptional() carrito?: string; @IsString() + @IsNotEmpty() @IsOptional() equipo?: string; @@ -41,6 +44,7 @@ export class ActivosDto { id_tipo_usuario?: string; @IsString() + @IsNotEmpty() @IsOptional() usuario?: string; } diff --git a/src/prestamo/dto/input/cancelar-operador.dto.ts b/src/prestamo/dto/input/cancelar-operador.dto.ts index 07d1214..3fd69fc 100644 --- a/src/prestamo/dto/input/cancelar-operador.dto.ts +++ b/src/prestamo/dto/input/cancelar-operador.dto.ts @@ -1,4 +1,4 @@ -import { IsInt, IsString } from 'class-validator'; +import { IsInt, IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CancelarOperadorDto { @IsInt() @@ -8,5 +8,7 @@ export class CancelarOperadorDto { id_prestamo: number; @IsString() + @IsNotEmpty() + @MaxLength(250) motivo: string; } diff --git a/src/prestamo/dto/input/historial.dto.ts b/src/prestamo/dto/input/historial.dto.ts index 81df036..e9a815f 100644 --- a/src/prestamo/dto/input/historial.dto.ts +++ b/src/prestamo/dto/input/historial.dto.ts @@ -1,5 +1,6 @@ import { IsDateString, + IsNotEmpty, IsNumberString, IsOptional, IsString, @@ -10,10 +11,12 @@ export class HistorialDto { pagina: string; @IsString() + @IsNotEmpty() @IsOptional() carrito?: string; @IsString() + @IsNotEmpty() @IsOptional() equipo?: string; @@ -46,6 +49,7 @@ export class HistorialDto { id_tipo_usuario?: string; @IsString() + @IsNotEmpty() @IsOptional() usuario?: string; } diff --git a/src/prestamo/dto/input/regresar-id-prestamo.dto.ts b/src/prestamo/dto/input/regresar-id-prestamo.dto.ts index ec28415..b47b61f 100644 --- a/src/prestamo/dto/input/regresar-id-prestamo.dto.ts +++ b/src/prestamo/dto/input/regresar-id-prestamo.dto.ts @@ -1,4 +1,10 @@ -import { IsInt, IsOptional, IsString } from 'class-validator'; +import { + IsInt, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from 'class-validator'; export class RegresarIdPrestamoDto { @IsInt() @@ -8,6 +14,8 @@ export class RegresarIdPrestamoDto { id_prestamo: number; @IsString() + @IsNotEmpty() + @MaxLength(250) @IsOptional() descripcion?: string; diff --git a/src/prestamo/dto/input/regresar-numero-inventario.dto.ts b/src/prestamo/dto/input/regresar-numero-inventario.dto.ts index b2cf15f..98c2bb6 100644 --- a/src/prestamo/dto/input/regresar-numero-inventario.dto.ts +++ b/src/prestamo/dto/input/regresar-numero-inventario.dto.ts @@ -1,4 +1,10 @@ -import { IsInt, IsOptional, IsString } from 'class-validator'; +import { + IsInt, + IsNotEmpty, + IsOptional, + IsString, + MaxLength, +} from 'class-validator'; export class RegresarNumeroInventarioDto { @IsInt() @@ -7,11 +13,13 @@ export class RegresarNumeroInventarioDto { @IsString() numero_inventario: string; + @IsString() + @IsNotEmpty() + @MaxLength(250) + @IsOptional() + descripcion?: string; + @IsInt() @IsOptional() id_institucion_infraccion?: number; - - @IsString() - @IsOptional() - descripcion?: string; } diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 2cba986..3df0a5c 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -110,10 +110,11 @@ export class PrestamoService { await this.institucionTipoCarritoService.findTipoCarritoById( id_tipo_carrito, ); - const institucionDia = await this.institucionDiaService.findInstitucionDia( - modulo.institucion, - ahora.weekday(), - ); + const institucionDia = + await this.institucionDiaService.findByInstitucionDia( + modulo.institucion, + ahora.weekday(), + ); const horaMax = institucionDia ? moment(`${ahora.format('YYYY-MM-DD')} ${institucionDia.hora_fin}`) : null; @@ -129,10 +130,6 @@ export class PrestamoService { ) : null; - if (!usuario.activo) - throw new ConflictException( - `${this.mensajeNoPoderPedir()} tu cuenta esta desactivada.`, - ); this.validarInstitucionUsuario(usuario.instituciones, modulo); if (ahora.weekday() === 0 || ahora.weekday() === 6) throw new ConflictException('No hay servicio los días sábado y domingo.'); @@ -280,31 +277,6 @@ export class PrestamoService { id_tipo_usuario?: string; usuario?: string; }) { - const query = this.repository - .createQueryBuilder('p') - .innerJoinAndSelect('p.equipo', 'e') - .innerJoinAndSelect('p.operadorEntrega', 'oe') - .innerJoinAndSelect('p.operadorRegreso', 'or') - .innerJoinAndSelect('p.usuario', 'u') - .innerJoinAndSelect('e.carrito', 'c') - .innerJoinAndSelect('oe.tipoUsuario', 'tuoe') - .innerJoinAndSelect('or.tipoUsuario', 'tuor') - .innerJoinAndSelect('u.instituciones', 'is') - .innerJoinAndSelect('c.modulo', 'm') - .innerJoinAndSelect('c.tipoCarrito', 'tc') - .innerJoinAndSelect('is.institucionCarrera', 'ic') - .innerJoinAndSelect('m.institucion', 'i') - .innerJoinAndSelect('ic.carrera', 'ca') - .innerJoinAndSelect('ic.institucion', 'in') - .innerJoinAndSelect('ca.nivel', 'n') - .orderBy('i.institucion') - .addOrderBy('m.modulo') - .addOrderBy('tc.tipo_carrito') - .addOrderBy('c.carrito') - .addOrderBy('e.equipo') - .addOrderBy('p.id_prestamo', 'DESC') - .skip((parseInt(filtros.pagina) - 1) * 25) - .take(25); const institucion = filtros.id_institucion ? await this.institucionService.findById(parseInt(filtros.id_institucion)) : null; @@ -331,6 +303,31 @@ export class PrestamoService { parseInt(filtros.id_tipo_usuario), ) : null; + const query = this.repository + .createQueryBuilder('p') + .innerJoinAndSelect('p.equipo', 'e') + .innerJoinAndSelect('p.operadorEntrega', 'oe') + .innerJoinAndSelect('p.operadorRegreso', 'or') + .innerJoinAndSelect('p.usuario', 'u') + .innerJoinAndSelect('e.carrito', 'c') + .innerJoinAndSelect('oe.tipoUsuario', 'tuoe') + .innerJoinAndSelect('or.tipoUsuario', 'tuor') + .innerJoinAndSelect('u.instituciones', 'is') + .innerJoinAndSelect('c.modulo', 'm') + .innerJoinAndSelect('c.tipoCarrito', 'tc') + .innerJoinAndSelect('is.institucionCarrera', 'ic') + .innerJoinAndSelect('m.institucion', 'i') + .innerJoinAndSelect('ic.carrera', 'ca') + .innerJoinAndSelect('ic.institucion', 'in') + .innerJoinAndSelect('ca.nivel', 'n') + .orderBy('i.institucion') + .addOrderBy('m.modulo') + .addOrderBy('tc.tipo_carrito') + .addOrderBy('c.carrito') + .addOrderBy('e.equipo') + .addOrderBy('p.id_prestamo', 'DESC') + .skip((parseInt(filtros.pagina) - 1) * 25) + .take(25); if (filtros.activo) { if (typeof filtros.activo === 'boolean') { diff --git a/src/tipo-usuario/dto/input/create.dto.ts b/src/tipo-usuario/dto/input/create.dto.ts index 4e5dccb..76a37e9 100644 --- a/src/tipo-usuario/dto/input/create.dto.ts +++ b/src/tipo-usuario/dto/input/create.dto.ts @@ -1,6 +1,8 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateTipoUsuarioDto { @IsString() + @IsNotEmpty() + @MaxLength(30) tipo_usuario: string; } diff --git a/src/tipo-usuario/entity/tipo-usuario.entity.ts b/src/tipo-usuario/entity/tipo-usuario.entity.ts index 6a9dda5..ebc6f70 100644 --- a/src/tipo-usuario/entity/tipo-usuario.entity.ts +++ b/src/tipo-usuario/entity/tipo-usuario.entity.ts @@ -7,7 +7,7 @@ export class TipoUsuario { @PrimaryGeneratedColumn() id_tipo_usuario: number; - @Column({ type: String, nullable: false, length: 20 }) + @Column({ type: String, nullable: false, length: 30 }) tipo_usuario: string; @OneToMany(() => Operador, (operador) => operador.tipoUsuario) diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index bf28efa..be14207 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -157,7 +157,7 @@ export class UploadFileService { false, ); const existeEquipoTipoEntrada = tipoEntrada - ? await this.equipoTipoEntradaService.existeEquipoTipoEntrada( + ? await this.equipoTipoEntradaService.findEquipoTipoEntradaByEquipoTipoEntrada( equipo, tipoEntrada, false, @@ -197,7 +197,7 @@ export class UploadFileService { false, ); const existeEquipoPrograma = programa - ? await this.equipoProgramaService.existeEquipoPrograma( + ? await this.equipoProgramaService.findEquipoProgramaByEquipoPrograma( equipo, programa, false, diff --git a/src/usuario/dto/input/dgae.dto.ts b/src/usuario/dto/input/dgae.dto.ts index e945b1a..180d30a 100644 --- a/src/usuario/dto/input/dgae.dto.ts +++ b/src/usuario/dto/input/dgae.dto.ts @@ -1,9 +1,10 @@ -import { IsNumberString, IsString } from 'class-validator'; +import { IsNotEmpty, IsNumberString, IsString } from 'class-validator'; export class DgaeInputDto { @IsNumberString() id_institucion_carrera: string; @IsString() + @IsNotEmpty() usuario: string; } diff --git a/src/usuario/dto/input/dgp.dto.ts b/src/usuario/dto/input/dgp.dto.ts index ed1dc27..97df65e 100644 --- a/src/usuario/dto/input/dgp.dto.ts +++ b/src/usuario/dto/input/dgp.dto.ts @@ -1,12 +1,14 @@ -import { IsNumberString, IsString } from 'class-validator'; +import { IsNotEmpty, IsNumberString, IsString } from 'class-validator'; export class DgpInputDto { @IsNumberString() id_institucion: string; @IsString() + @IsNotEmpty() rfc: string; @IsString() + @IsNotEmpty() usuario: string; } diff --git a/src/usuario/dto/input/usuario.dto.ts b/src/usuario/dto/input/usuario.dto.ts index 7241e77..4c768f9 100644 --- a/src/usuario/dto/input/usuario.dto.ts +++ b/src/usuario/dto/input/usuario.dto.ts @@ -1,6 +1,7 @@ -import { IsString } from 'class-validator'; +import { IsNotEmpty, IsString } from 'class-validator'; export class UsuarioInputDto { @IsString() + @IsNotEmpty() usuario: string; } diff --git a/src/usuario/dto/input/usuarios.dto.ts b/src/usuario/dto/input/usuarios.dto.ts index 333e551..2ba1242 100644 --- a/src/usuario/dto/input/usuarios.dto.ts +++ b/src/usuario/dto/input/usuarios.dto.ts @@ -1,4 +1,9 @@ -import { IsNumberString, IsOptional, IsString } from 'class-validator'; +import { + IsNotEmpty, + IsNumberString, + IsOptional, + IsString, +} from 'class-validator'; export class UsuariosInputDto { @IsNumberString() @@ -17,10 +22,12 @@ export class UsuariosInputDto { id_tipo_usuario?: string; @IsString() + @IsNotEmpty() @IsOptional() nombre?: string; @IsString() + @IsNotEmpty() @IsOptional() usuario?: string; } diff --git a/src/usuario/entity/usuario.entity.ts b/src/usuario/entity/usuario.entity.ts index 8dee7f8..5d2d069 100644 --- a/src/usuario/entity/usuario.entity.ts +++ b/src/usuario/entity/usuario.entity.ts @@ -15,10 +15,7 @@ export class Usuario { @PrimaryGeneratedColumn() id_usuario: number; - @Column({ type: Boolean, nullable: false, default: true }) - activo: boolean; - - @Column({ type: String, nullable: false, length: 60, default: '' }) + @Column({ type: String, nullable: false, length: 60 }) correo: string; @Column({ type: String, nullable: false, length: 100 }) @@ -27,6 +24,9 @@ export class Usuario { @Column({ type: String, nullable: true, length: 60, default: null }) password: string; + @Column({ type: String, nullable: true, length: 12 }) + rfc: string; + @Column({ type: String, nullable: true, length: 10, default: null }) telefono: string; diff --git a/src/usuario/usuario.service.ts b/src/usuario/usuario.service.ts index 1dd9042..36e4eee 100644 --- a/src/usuario/usuario.service.ts +++ b/src/usuario/usuario.service.ts @@ -80,10 +80,10 @@ export class UsuarioService { /* Falta conexión a soap */ if (existeUsuario.password) throw new ConflictException('Ya fue regisrado este número de cuenta.'); - if (!existeUsuario.activo) - throw new ConflictException( - 'No se puede registar con este número de cuenta por que se encuentra desactivado.', - ); + // if (!existeUsuario.activo) + // throw new ConflictException( + // 'No se puede registar con este número de cuenta por que se encuentra desactivado.', + // ); return this.institucionUsuarioService.findByUsuarioInstitucionCarrera( existeUsuario, institucionCarrera, @@ -105,10 +105,10 @@ export class UsuarioService { throw new ConflictException( 'Ya fue regisrado este número de trabajador.', ); - if (!existeUsuario.activo) - throw new ConflictException( - 'No se puede registar con este número de trabajador por que se encuentra desactivado.', - ); + // if (!existeUsuario.activo) + // throw new ConflictException( + // 'No se puede registar con este número de trabajador por que se encuentra desactivado.', + // ); return this.institucionUsuarioService.findByUsuarioInstitucionCarrera( existeUsuario, institucionCarrera, @@ -125,17 +125,6 @@ export class UsuarioService { nombre?: string; usuario?: string; }) { - const query = this.repository - .createQueryBuilder('u') - .innerJoinAndSelect('u.instituciones', 'is') - .innerJoinAndSelect('u.tipoUsuario', 'tu') - .innerJoinAndSelect('is.institucionCarrera', 'ic') - .innerJoinAndSelect('ic.carrera', 'c') - .innerJoinAndSelect('ic.institucion', 'i') - .innerJoinAndSelect('c.nivel', 'n') - .take(25) - .skip((parseInt(filtros.pagina) - 1) * 25) - .where('u.password IS NOT NULL'); const carrera = filtros.id_carrera ? await this.institucionCarreraService.findCarreraByIdCarrera( parseInt(filtros.id_carrera), @@ -149,6 +138,17 @@ export class UsuarioService { parseInt(filtros.id_tipo_usuario), ) : null; + const query = this.repository + .createQueryBuilder('u') + .innerJoinAndSelect('u.instituciones', 'is') + .innerJoinAndSelect('u.tipoUsuario', 'tu') + .innerJoinAndSelect('is.institucionCarrera', 'ic') + .innerJoinAndSelect('ic.carrera', 'c') + .innerJoinAndSelect('ic.institucion', 'i') + .innerJoinAndSelect('c.nivel', 'n') + .take(25) + .skip((parseInt(filtros.pagina) - 1) * 25) + .where('u.password IS NOT NULL'); if (filtros.usuario) query.andWhere('u.usuario LIKE :usuario', { @@ -199,7 +199,7 @@ export class UsuarioService { usuario: string, validarNoExiste = true, password = false, - activos = false, + institucionesActivas = false, ) { const query = this.repository .createQueryBuilder('u') @@ -211,7 +211,7 @@ export class UsuarioService { .innerJoinAndSelect('c.nivel', 'n') .where('usuario = :usuario', { usuario }); - if (activos) query.andWhere('is.activo = 1'); + if (institucionesActivas) query.andWhere('is.activo = 1'); return query.getOne().then((usuario) => { if (validarNoExiste && (!usuario || (password && !usuario.password))) throw new NotFoundException('No existe este usuario.');