diff --git a/init/init.sql b/init/init.sql new file mode 100644 index 0000000..b098486 --- /dev/null +++ b/init/init.sql @@ -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'); diff --git a/mariadb/aria_log.00000001 b/mariadb/aria_log.00000001 index 8e75b63..d0da2fd 100644 Binary files a/mariadb/aria_log.00000001 and b/mariadb/aria_log.00000001 differ diff --git a/mariadb/aria_log_control b/mariadb/aria_log_control index ab846d1..d3fec0a 100644 Binary files a/mariadb/aria_log_control and b/mariadb/aria_log_control differ diff --git a/src/app.module.ts b/src/app.module.ts index 816d1a7..6c355d4 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -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 {} diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index 0d6e2a6..3fcd932 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -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, }; } + diff --git a/src/auth/jwt.strategy.ts b/src/auth/jwt.strategy.ts index f792d56..8fe1282 100644 --- a/src/auth/jwt.strategy.ts +++ b/src/auth/jwt.strategy.ts @@ -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, diff --git a/src/equipo/equipo.controller.ts b/src/equipo/equipo.controller.ts index 9a891e7..ed61faa 100644 --- a/src/equipo/equipo.controller.ts +++ b/src/equipo/equipo.controller.ts @@ -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(); + } + } diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 3958e7a..e7e6708 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -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, + @InjectRepository(Uso) + private readonly usoRepo: Repository, + + @InjectRepository(Marca) + private readonly marcaRepo: Repository, + + @InjectRepository(Estado) + private readonly estadoRepo: Repository, + + @InjectRepository(Adscripcion) + private readonly adscripcionRepo: Repository, + + @InjectRepository(TipoEquipo) + private readonly tipoEquipoRepo: Repository, + + @InjectRepository(SistemaOperativo) + private readonly sistemaOperativoRepo: Repository, + + @InjectRepository(Procesador) + private readonly procesadorRepo: Repository, ) {} 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(); + } } - - diff --git a/src/usuarios/usuarios.controller.ts b/src/usuarios/usuarios.controller.ts index 889edfd..8ca8d37 100644 --- a/src/usuarios/usuarios.controller.ts +++ b/src/usuarios/usuarios.controller.ts @@ -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); } diff --git a/src/usuarios/usuarios.module.ts b/src/usuarios/usuarios.module.ts index 0152ee6..407f421 100644 --- a/src/usuarios/usuarios.module.ts +++ b/src/usuarios/usuarios.module.ts @@ -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 {} - - -*/ \ No newline at end of file diff --git a/src/usuarios/usuarios.service.ts b/src/usuarios/usuarios.service.ts index bf7b6a5..ba04134 100644 --- a/src/usuarios/usuarios.service.ts +++ b/src/usuarios/usuarios.service.ts @@ -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 + private readonly usuarioRepository: Repository, + + @InjectRepository(Tipo_Usuario) + private readonly tipoUsuarioRepository: Repository ){} 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(); - } - +