This commit is contained in:
2025-10-24 13:43:00 -06:00
parent a2be3ee273
commit 0cdd4e178f
11 changed files with 223 additions and 63 deletions
+73
View File
@@ -0,0 +1,73 @@
-- ==========================================
-- TABLA: Procesador
-- ==========================================
INSERT INTO procesador (procesador) VALUES
('CELERON (ADQUIRIDO EN 2018 HASTA LA FECHA)'),
('CELERON DUAL CORE O ANTERIORES'),
('CELERON SERIE J, G'),
('CHIP A10 M10'),
('CORE2 DUO, QUAD CORE, PENTIUM DUAL CORE O ANTERIORES'),
('CORE2 MAC, QUAD CORE O ANTERIORES'),
('FAMILIA M1'),
('FAMILIA M2'),
('I3 O EQUIVALENTES (13A GENERACIÓN EN ADELANTE)'),
('I3 O EQUIVALENTES (1A - 4A GENERACIÓN)'),
('I3 O EQUIVALENTES (5A - 8A GENERACIÓN)'),
('I3 O EQUIVALENTES (9A - 12A GENERACIÓN)'),
('I5 O EQUIVALENTES (13A GENERACIÓN EN ADELANTE)'),
('I5 O EQUIVALENTES (1A - 4A GENERACIÓN)'),
('I5 O EQUIVALENTES (5A - 8A GENERACIÓN)'),
('I5 O EQUIVALENTES (9A - 12A GENERACIÓN)'),
('I7 O EQUIVALENTES (13A GENERACIÓN EN ADELANTE)'),
('I7 O EQUIVALENTES (1A - 4A GENERACIÓN)'),
('I7 O EQUIVALENTES (5A - 8A GENERACIÓN)'),
('I7 O EQUIVALENTES (9A - 12A GENERACIÓN)'),
('PENTIUM DUAL CORE O ANTERIORES'),
('PENTIUM SERIES J, G'),
('XEON BRONCE, PLATA, ORO 1A GENERACIÓN'),
('XEON E3, E5, E7'),
('XEON O ANTERIORES'),
('S/P');
-- ==========================================
-- TABLA: TipoEquipo
-- ==========================================
INSERT INTO tipo_equipo (tipo_equipo) VALUES
('LAP TOP'),
('MAC'),
('PC'),
('SERVIDOR'),
('TABLETA'),
('IMPRESORA'),
('INYECCIÓN TINTA'),
('LASER'),
('PLOTER'),
('ESCANER'),
('MULTIFUNCIONAL');
INSERT INTO uso (tipo_uso) VALUES
('ADMINISTRATIVO'),
('ALUMNO'),
('PROFESOR'),
('TÉCNICO ACADÉMICO');
INSERT INTO estado (estado) VALUES
('EN DESUSO'),
('EN USO');
INSERT INTO tipo_usuario (tipo_usuario) VALUES
('Administrador'),
('Personal');
Binary file not shown.
Binary file not shown.
+4 -2
View File
@@ -6,6 +6,7 @@ import { UsuariosModule } from './usuarios/usuarios.module';
import { MovimientoModule } from './movimiento/movimiento.module';
import { EquipoModule } from './equipo/equipo.module';
import { AuthModule } from './auth/auth.module';
import { AppController } from './app.controller';
@@ -23,7 +24,7 @@ import { AuthModule } from './auth/auth.module';
username: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
//autoLoadEntities: true,
autoLoadEntities: true,
synchronize: true,
}),
UsuariosModule,
@@ -32,7 +33,8 @@ import { AuthModule } from './auth/auth.module';
EquipoModule,
AuthModule
],
controllers: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
+2 -4
View File
@@ -4,9 +4,6 @@ import * as argon2 from 'argon2';
import { LoginDto } from './dto/login.dto';
import { CreateUsuarioDto } from 'src/usuarios/dto/create-usuario.dto';
import { JwtService } from '@nestjs/jwt';
import { Repository } from 'typeorm';
import { Usuario } from 'src/usuarios/entities/usuario.entity';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class AuthService {
@@ -14,7 +11,7 @@ export class AuthService {
private readonly usuarioService:UsuariosService,
private readonly jwtService:JwtService
){}
//Pendiente tipoUsuario
async registro({nombre, contraseña,tipoUsuario}: CreateUsuarioDto){
const usuario = await this.usuarioService.findOneByName(nombre);
@@ -62,6 +59,7 @@ export class AuthService {
token:token,
};
}
+4
View File
@@ -2,7 +2,11 @@ import { PassportStrategy } from "@nestjs/passport";
import{ExtractJwt,Strategy} from 'passport-jwt'
export class JwtStrategy extends PassportStrategy(Strategy){
constructor(){
if( !process.env.JWT ){
throw new Error('JWT_SECRET no está definido en las variables de entorno');
}
super({
jwtFromRequest:ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration:false,
+38 -1
View File
@@ -7,7 +7,7 @@ import { AuthGuard } from '@nestjs/passport';
@Controller('equipos')
export class EquipoController {
constructor(private readonly equipoService: EquipoService) {}
@UseGuards(AuthGuard("jwt"))
@Get('buscar')
async buscarEquipos(
@Query() filtros: any,
@@ -16,10 +16,47 @@ export class EquipoController {
) {
return this.equipoService.buscarEquipos(filtros, +page, +limit);
}
@UseGuards(AuthGuard("jwt"))
@Patch("update/:id")
update(@Param('id', ParseIntPipe) id:number, @Body() equipoNuevo: UpdateEquipoDto) {
return this.equipoService.updateEquipo( equipoNuevo,id);
}
@UseGuards(AuthGuard("jwt"))
@Get('usos')
findUsos() {
return this.equipoService.findAllUsos();
}
@UseGuards(AuthGuard("jwt"))
@Get('marcas')
findMarcas() {
return this.equipoService.findAllMarcas();
}
@UseGuards(AuthGuard("jwt"))
@Get('estados')
findEstados() {
return this.equipoService.findAllEstados();
}
@UseGuards(AuthGuard("jwt"))
@Get('adscripciones')
findAdscripciones() {
return this.equipoService.findAllAdscripciones();
}
@UseGuards(AuthGuard("jwt"))
@Get('tipos-equipo')
findTiposEquipo() {
return this.equipoService.findAllTiposEquipo();
}
@UseGuards(AuthGuard("jwt"))
@Get('sistemas-operativos')
findSistemasOperativos() {
return this.equipoService.findAllSistemasOperativos();
}
@UseGuards(AuthGuard("jwt"))
@Get('procesadores')
findProcesadores() {
return this.equipoService.findAllProcesadores();
}
}
+85 -20
View File
@@ -2,13 +2,42 @@ import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Equipo } from './entities/equipo.entity';
import { UpdateEquipoDto } from './dto/update-equipo.dto'
import { UpdateEquipoDto } from './dto/update-equipo.dto';
import {
Adscripcion,
Estado,
Marca,
Procesador,
SistemaOperativo,
TipoEquipo,
Uso,
} from './entities/catalogo.entities';
@Injectable()
export class EquipoService {
constructor(
@InjectRepository(Equipo)
private readonly equipoRepository: Repository<Equipo>,
@InjectRepository(Uso)
private readonly usoRepo: Repository<Uso>,
@InjectRepository(Marca)
private readonly marcaRepo: Repository<Marca>,
@InjectRepository(Estado)
private readonly estadoRepo: Repository<Estado>,
@InjectRepository(Adscripcion)
private readonly adscripcionRepo: Repository<Adscripcion>,
@InjectRepository(TipoEquipo)
private readonly tipoEquipoRepo: Repository<TipoEquipo>,
@InjectRepository(SistemaOperativo)
private readonly sistemaOperativoRepo: Repository<SistemaOperativo>,
@InjectRepository(Procesador)
private readonly procesadorRepo: Repository<Procesador>,
) {}
async buscarEquipos(filtros: any, page: number = 1, limit: number = 10) {
@@ -84,27 +113,63 @@ export class EquipoService {
data,
};
}
async updateEquipo(equipoNuevo:UpdateEquipoDto,id_equipo:number){
const updateData={
lugar: equipoNuevo.lugar,
modelo: equipoNuevo.modelo,
estado: equipoNuevo.id_estado ? { id_estado: equipoNuevo.id_estado } : undefined,
adscripcion: equipoNuevo.id_adscripcion ? { id_adscripcion: equipoNuevo.id_adscripcion } : undefined,
sistemaOperativo: equipoNuevo.id_sistema_operativo ? { id_sistema_operativo: equipoNuevo.id_sistema_operativo } : undefined,
procesador: equipoNuevo.id_procesador ? { id_procesador: equipoNuevo.id_procesador } : undefined,
tipoUso: equipoNuevo.id_tipo_uso ? { id_tipo_uso: equipoNuevo.id_tipo_uso } : undefined,
marca: equipoNuevo.id_marca ? { id_marca: equipoNuevo.id_marca } : undefined,
};
async updateEquipo(equipoNuevo: UpdateEquipoDto, id_equipo: number) {
const updateData = {
lugar: equipoNuevo.lugar,
modelo: equipoNuevo.modelo,
estado: equipoNuevo.id_estado
? { id_estado: equipoNuevo.id_estado }
: undefined,
adscripcion: equipoNuevo.id_adscripcion
? { id_adscripcion: equipoNuevo.id_adscripcion }
: undefined,
sistemaOperativo: equipoNuevo.id_sistema_operativo
? { id_sistema_operativo: equipoNuevo.id_sistema_operativo }
: undefined,
procesador: equipoNuevo.id_procesador
? { id_procesador: equipoNuevo.id_procesador }
: undefined,
tipoUso: equipoNuevo.id_tipo_uso
? { id_tipo_uso: equipoNuevo.id_tipo_uso }
: undefined,
marca: equipoNuevo.id_marca
? { id_marca: equipoNuevo.id_marca }
: undefined,
};
const equipoUpdate=await this.equipoRepository.preload(updateData);
if(!equipoUpdate){
throw new Error(`No se encontró el equipo con id ${id_equipo}`);
const equipoUpdate = await this.equipoRepository.preload(updateData);
if (!equipoUpdate) {
throw new Error(`No se encontró el equipo con id ${id_equipo}`);
}
return await this.equipoRepository.save(equipoUpdate);
}
return await this.equipoRepository.save(equipoUpdate);
}
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();
}
}
+6 -8
View File
@@ -1,22 +1,20 @@
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
import { Controller, Post, Body } from '@nestjs/common';
import { UsuariosService } from './usuarios.service';
import { CreateUsuarioDto } from './dto/create-usuario.dto';
import { UpdateUsuarioDto } from './dto/update-usuario.dto';
import { AuthGuard } from '@nestjs/passport';
@Controller('usuarios')
export class UsuariosController {
constructor(private readonly usuariosService: UsuariosService) {}
constructor(private readonly usuariosService: UsuariosService
) {}
@Post()
create(@Body() createUsuarioDto: CreateUsuarioDto) {
return this.usuariosService.create(createUsuarioDto);
}
@Get()
@UseGuards(AuthGuard("jwt"))
findAll() {
return this.usuariosService.findAll();
@Post()
createUser(@Body() tipoUsuario :string){
return this.usuariosService.createUser(tipoUsuario);
}
-17
View File
@@ -12,20 +12,3 @@ import { TypeOrmModule } from '@nestjs/typeorm';
})
export class UsuariosModule {}
/*
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Usuario } from './entities/usuario.entity';
import { UsuariosService } from './usuarios.service';
import { UsuariosController } from './usuarios.controller';
@Module({
imports: [TypeOrmModule.forFeature([Usuario])],
providers: [UsuariosService],
controllers: [UsuariosController],
exports: [UsuariosService],
})
export class UsuariosModule {}
*/
+11 -11
View File
@@ -1,14 +1,17 @@
import { Injectable } from '@nestjs/common';
import { CreateUsuarioDto } from './dto/create-usuario.dto';
import { InjectRepository } from '@nestjs/typeorm';
import { Usuario } from './entities/usuario.entity';
import { Tipo_Usuario, Usuario } from './entities/usuario.entity';
import { Repository } from 'typeorm';
@Injectable()
export class UsuariosService {
constructor(
@InjectRepository(Usuario)
private readonly usuarioRepository: Repository<Usuario>
private readonly usuarioRepository: Repository<Usuario>,
@InjectRepository(Tipo_Usuario)
private readonly tipoUsuarioRepository: Repository<Tipo_Usuario>
){}
async create(createUsuarioDto: CreateUsuarioDto) {
@@ -26,16 +29,13 @@ export class UsuariosService {
return await this.usuarioRepository.findOne({where:{nombre}});
}
async remove(id:number) {
return await this.usuarioRepository.delete(id);
async createUser(tipoUsuario:string){
let user=await this.tipoUsuarioRepository.create({
tipo_usuario:tipoUsuario
})
return await this.tipoUsuarioRepository.save(user)
}
findAll() {
return this.usuarioRepository.find();
}