Se agregaron los perifericos
This commit is contained in:
Binary file not shown.
Binary file not shown.
Generated
+10
-69
@@ -16,8 +16,8 @@
|
||||
"@nestjs/passport": "^11.0.5",
|
||||
"@nestjs/platform-express": "^11.0.1",
|
||||
"@nestjs/typeorm": "^11.0.0",
|
||||
"argon2": "^0.44.0",
|
||||
"axios": "^1.13.1",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"class-transformer": "0.5.1",
|
||||
"class-validator": "0.14.2",
|
||||
"mysql2": "^3.15.2",
|
||||
@@ -795,12 +795,6 @@
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@epic-web/invariant": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz",
|
||||
"integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@eslint-community/eslint-utils": {
|
||||
"version": "4.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
|
||||
@@ -2693,15 +2687,6 @@
|
||||
"@noble/hashes": "^1.1.5"
|
||||
}
|
||||
},
|
||||
"node_modules/@phc/format": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@phc/format/-/format-1.0.0.tgz",
|
||||
"integrity": "sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@pkgjs/parseargs": {
|
||||
"version": "0.11.0",
|
||||
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
|
||||
@@ -4124,22 +4109,6 @@
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/argon2": {
|
||||
"version": "0.44.0",
|
||||
"resolved": "https://registry.npmjs.org/argon2/-/argon2-0.44.0.tgz",
|
||||
"integrity": "sha512-zHPGN3S55sihSQo0dBbK0A5qpi2R31z7HZDZnry3ifOyj8bZZnpZND2gpmhnRGO1V/d555RwBqIK5W4Mrmv3ig==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@phc/format": "^1.0.0",
|
||||
"cross-env": "^10.0.0",
|
||||
"node-addon-api": "^8.5.0",
|
||||
"node-gyp-build": "^4.8.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.17.0"
|
||||
}
|
||||
},
|
||||
"node_modules/argparse": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||
@@ -4337,6 +4306,15 @@
|
||||
"baseline-browser-mapping": "dist/cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/bcryptjs": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-3.0.2.tgz",
|
||||
"integrity": "sha512-k38b3XOZKv60C4E2hVsXTolJWfkGRMbILBIe2IBITXciy5bOsTKot5kDrf3ZfufQtQOUN5mXceUEpU1rTl9Uog==",
|
||||
"license": "BSD-3-Clause",
|
||||
"bin": {
|
||||
"bcrypt": "bin/bcrypt"
|
||||
}
|
||||
},
|
||||
"node_modules/bl": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
|
||||
@@ -5042,23 +5020,6 @@
|
||||
"devOptional": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/cross-env": {
|
||||
"version": "10.1.0",
|
||||
"resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz",
|
||||
"integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@epic-web/invariant": "^1.0.0",
|
||||
"cross-spawn": "^7.0.6"
|
||||
},
|
||||
"bin": {
|
||||
"cross-env": "dist/bin/cross-env.js",
|
||||
"cross-env-shell": "dist/bin/cross-env-shell.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
}
|
||||
},
|
||||
"node_modules/cross-spawn": {
|
||||
"version": "7.0.6",
|
||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
|
||||
@@ -8358,15 +8319,6 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/node-addon-api": {
|
||||
"version": "8.5.0",
|
||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.5.0.tgz",
|
||||
"integrity": "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "^18 || ^20 || >= 21"
|
||||
}
|
||||
},
|
||||
"node_modules/node-emoji": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz",
|
||||
@@ -8377,17 +8329,6 @@
|
||||
"lodash": "^4.17.21"
|
||||
}
|
||||
},
|
||||
"node_modules/node-gyp-build": {
|
||||
"version": "4.8.4",
|
||||
"resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz",
|
||||
"integrity": "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"node-gyp-build": "bin.js",
|
||||
"node-gyp-build-optional": "optional.js",
|
||||
"node-gyp-build-test": "build-test.js"
|
||||
}
|
||||
},
|
||||
"node_modules/node-int64": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
|
||||
|
||||
+1
-1
@@ -27,8 +27,8 @@
|
||||
"@nestjs/passport": "^11.0.5",
|
||||
"@nestjs/platform-express": "^11.0.1",
|
||||
"@nestjs/typeorm": "^11.0.0",
|
||||
"argon2": "^0.44.0",
|
||||
"axios": "^1.13.1",
|
||||
"bcryptjs": "^3.0.2",
|
||||
"class-transformer": "0.5.1",
|
||||
"class-validator": "0.14.2",
|
||||
"mysql2": "^3.15.2",
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
InternalServerErrorException,
|
||||
} from '@nestjs/common';
|
||||
import { UsuariosService } from 'src/usuarios/usuarios.service';
|
||||
import * as argon2 from 'argon2';
|
||||
import * as bcrypt from 'bcryptjs';
|
||||
import { LoginDto } from './dto/login.dto';
|
||||
import { CreateUsuarioDto } from 'src/usuarios/dto/create-usuario.dto';
|
||||
import { JwtService } from '@nestjs/jwt';
|
||||
@@ -24,7 +24,8 @@ export class AuthService {
|
||||
}
|
||||
|
||||
try {
|
||||
const hashedContraseña = await argon2.hash(contraseña);
|
||||
const salt = await bcrypt.genSalt(10);
|
||||
const hashedContraseña = await bcrypt.hash(contraseña, salt);
|
||||
|
||||
await this.usuarioService.create({
|
||||
nombre,
|
||||
@@ -46,23 +47,25 @@ export class AuthService {
|
||||
throw new UnauthorizedException('Usuario no encontrado');
|
||||
}
|
||||
|
||||
const contraseñaValida = await argon2.verify(
|
||||
usuario.contraseña,
|
||||
const contraseñaValida = await bcrypt.compare(
|
||||
contraseña,
|
||||
usuario.contraseña,
|
||||
);
|
||||
|
||||
if (!contraseñaValida) {
|
||||
throw new UnauthorizedException('Contraseña invalida');
|
||||
throw new UnauthorizedException('Contraseña inválida');
|
||||
}
|
||||
|
||||
const dataUser = {
|
||||
id: usuario.id_usuario,
|
||||
nombre: usuario.nombre,
|
||||
tipoUsuario: usuario.tipoUsuario.id_tipo_usuario,
|
||||
};
|
||||
|
||||
const token = await this.jwtService.sign(dataUser);
|
||||
const token = this.jwtService.sign(dataUser);
|
||||
|
||||
return {
|
||||
token: token,
|
||||
token,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
import { IsString, IsOptional, IsDateString, IsInt } from 'class-validator';
|
||||
import {
|
||||
IsString,
|
||||
IsOptional,
|
||||
IsDateString,
|
||||
IsInt,
|
||||
IsNotEmpty,
|
||||
} from 'class-validator';
|
||||
|
||||
export class CreateEquipoDto {
|
||||
@IsString()
|
||||
@@ -39,4 +45,10 @@ export class CreateEquipoDto {
|
||||
|
||||
@IsInt()
|
||||
id_marca: number;
|
||||
|
||||
@IsInt()
|
||||
id_periferico: number;
|
||||
|
||||
@IsNotEmpty()
|
||||
isImpresora: Boolean;
|
||||
}
|
||||
|
||||
@@ -83,3 +83,15 @@ export class Procesador {
|
||||
@OneToMany(() => Equipo, (equipo) => equipo.procesador)
|
||||
equipo: Equipo[];
|
||||
}
|
||||
|
||||
@Entity()
|
||||
export class Periferico {
|
||||
@PrimaryGeneratedColumn()
|
||||
id_periferico: number;
|
||||
|
||||
@Column()
|
||||
periferico: string;
|
||||
|
||||
@OneToMany(() => Equipo, (equipo) => equipo.periferico)
|
||||
equipo: Equipo[];
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import {
|
||||
Adscripcion,
|
||||
Estado,
|
||||
Marca,
|
||||
Periferico,
|
||||
Procesador,
|
||||
SistemaOperativo,
|
||||
TipoEquipo,
|
||||
@@ -75,4 +76,8 @@ export class Equipo {
|
||||
@JoinColumn({ name: 'id_marca' })
|
||||
@ManyToOne(() => Marca, (marca) => marca.equipo)
|
||||
marca: Marca;
|
||||
|
||||
@JoinColumn({ name: 'id_periferico' })
|
||||
@ManyToOne(() => Periferico, (Periferico) => Periferico.equipo)
|
||||
periferico: Periferico;
|
||||
}
|
||||
|
||||
@@ -60,11 +60,13 @@ export class EquipoController {
|
||||
findMarcas() {
|
||||
return this.equipoService.findAllMarcas();
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Get('estados')
|
||||
findEstados() {
|
||||
return this.equipoService.findAllEstados();
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Get('adscripciones')
|
||||
findAdscripciones() {
|
||||
@@ -85,4 +87,10 @@ export class EquipoController {
|
||||
findProcesadores() {
|
||||
return this.equipoService.findAllProcesadores();
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@Get('perifericos')
|
||||
findPerifericos() {
|
||||
return this.equipoService.findAllPPerifericos();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,6 +41,9 @@ export class EquipoService {
|
||||
|
||||
@InjectRepository(Procesador)
|
||||
private readonly procesadorRepo: Repository<Procesador>,
|
||||
|
||||
@InjectRepository(Equipo)
|
||||
private readonly perifericoRepo: Repository<Equipo>,
|
||||
) {}
|
||||
|
||||
async buscarEquipos(filtros: any, page: number = 1, limit: number = 10) {
|
||||
@@ -159,6 +162,7 @@ export class EquipoService {
|
||||
'sistemaOperativo',
|
||||
'procesador',
|
||||
'tipoUso',
|
||||
'periferico',
|
||||
],
|
||||
});
|
||||
|
||||
@@ -173,34 +177,6 @@ export class EquipoService {
|
||||
return { ...equipo, ...responsable };
|
||||
}
|
||||
|
||||
findAllUsos() {
|
||||
return this.usoRepo.find();
|
||||
}
|
||||
|
||||
findAllMarcas() {
|
||||
return this.marcaRepo.find();
|
||||
}
|
||||
|
||||
findAllEstados() {
|
||||
return this.estadoRepo.find();
|
||||
}
|
||||
|
||||
findAllAdscripciones() {
|
||||
return this.adscripcionRepo.find();
|
||||
}
|
||||
|
||||
findAllTiposEquipo() {
|
||||
return this.tipoEquipoRepo.find();
|
||||
}
|
||||
|
||||
findAllSistemasOperativos() {
|
||||
return this.sistemaOperativoRepo.find();
|
||||
}
|
||||
|
||||
findAllProcesadores() {
|
||||
return this.procesadorRepo.find();
|
||||
}
|
||||
|
||||
async searchResponsable(nombreAdscripcion: string) {
|
||||
const adscripcion = await this.adscripcionRepo.findOneBy({
|
||||
adscripcion: nombreAdscripcion,
|
||||
@@ -224,22 +200,73 @@ export class EquipoService {
|
||||
}
|
||||
|
||||
create(equipo: CreateEquipoDto) {
|
||||
const nuevoEquipo = this.equipoRepository.create({
|
||||
inventario: equipo.inventario,
|
||||
serie: equipo.serie,
|
||||
lugar: equipo.lugar,
|
||||
fechaFactura: equipo.fechaFactura,
|
||||
antiguedad: equipo.antiguedad,
|
||||
modelo: equipo.modelo,
|
||||
estado: { id_estado: equipo.id_estado },
|
||||
adscripcion: { id_adscripcion: equipo.id_adscripcion },
|
||||
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
|
||||
sistemaOperativo: { id_sistema_operativo: equipo.id_sistema_operativo },
|
||||
procesador: { id_procesador: equipo.id_procesador },
|
||||
tipoUso: { id_tipo_uso: equipo.id_uso },
|
||||
marca: { id_marca: equipo.id_marca },
|
||||
});
|
||||
let nuevoEquipo;
|
||||
|
||||
if (equipo.isImpresora) {
|
||||
nuevoEquipo = this.equipoRepository.create({
|
||||
inventario: equipo.inventario,
|
||||
serie: equipo.serie,
|
||||
lugar: equipo.lugar,
|
||||
fechaFactura: equipo.fechaFactura,
|
||||
antiguedad: equipo.antiguedad,
|
||||
modelo: equipo.modelo,
|
||||
estado: { id_estado: equipo.id_estado },
|
||||
adscripcion: { id_adscripcion: equipo.id_adscripcion },
|
||||
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
|
||||
tipoUso: { id_tipo_uso: equipo.id_uso },
|
||||
marca: { id_marca: equipo.id_marca },
|
||||
periferico: { id_periferico: equipo.id_periferico },
|
||||
});
|
||||
} else {
|
||||
nuevoEquipo = this.equipoRepository.create({
|
||||
inventario: equipo.inventario,
|
||||
serie: equipo.serie,
|
||||
lugar: equipo.lugar,
|
||||
fechaFactura: equipo.fechaFactura,
|
||||
antiguedad: equipo.antiguedad,
|
||||
modelo: equipo.modelo,
|
||||
estado: { id_estado: equipo.id_estado },
|
||||
adscripcion: { id_adscripcion: equipo.id_adscripcion },
|
||||
tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo },
|
||||
sistemaOperativo: { id_sistema_operativo: equipo.id_sistema_operativo },
|
||||
tipoUso: { id_tipo_uso: equipo.id_uso },
|
||||
marca: { id_marca: equipo.id_marca },
|
||||
procesador: { id_procesador: equipo.id_procesador },
|
||||
});
|
||||
}
|
||||
|
||||
return this.equipoRepository.save(nuevoEquipo);
|
||||
}
|
||||
|
||||
async findAllUsos() {
|
||||
return await this.usoRepo.find();
|
||||
}
|
||||
|
||||
async findAllMarcas() {
|
||||
return await this.marcaRepo.find();
|
||||
}
|
||||
|
||||
async findAllEstados() {
|
||||
return await this.estadoRepo.find();
|
||||
}
|
||||
|
||||
async findAllAdscripciones() {
|
||||
return await this.adscripcionRepo.find();
|
||||
}
|
||||
|
||||
async findAllTiposEquipo() {
|
||||
return await this.tipoEquipoRepo.find();
|
||||
}
|
||||
|
||||
async findAllSistemasOperativos() {
|
||||
return await this.sistemaOperativoRepo.find();
|
||||
}
|
||||
|
||||
async findAllProcesadores() {
|
||||
return await this.procesadorRepo.find();
|
||||
}
|
||||
|
||||
async findAllPPerifericos() {
|
||||
return await this.perifericoRepo.find();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user