From d9550f1bf14cff8ddde9ed1a6c7121827654d3a6 Mon Sep 17 00:00:00 2001 From: Emilio Date: Fri, 5 Sep 2025 11:05:30 -0600 Subject: [PATCH] =?UTF-8?q?Se=20agregar=C3=B2=20env=C3=ACo=20de=20correos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/auth/auth.controller.ts | 18 ++++++++++ src/auth/auth.service.ts | 15 ++++++++ src/excel/excel.controller.ts | 56 +++++++++++++++++++---------- src/excel/excel.service.ts | 38 ++++++++++---------- src/usuarios/usuarios.controller.ts | 5 +++ src/usuarios/usuarios.service.ts | 49 +++++++++++++++++++++++-- 6 files changed, 142 insertions(+), 39 deletions(-) diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 0439d8f..247f491 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -9,9 +9,27 @@ import { SetPasswordDto } from './dto/createPassword.dto'; import { Response } from 'express'; import { WhiteDto } from './dto/whiteList.dto'; +interface Update{ + id:string; + nombreNuevo:string; + + } + @Controller() export class AuthController { constructor(private readonly authService: AuthService) { } + //Comentar en producciòn + + @Post('update') + async update(@Body() user:Update) { + return this.authService.updateCorreo(user.id,user.nombreNuevo); + } + + @Get('findAll') + async findAll(){ + this.authService.all() + + } @Post('login') @AuthDocumentation.login() diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index e161071..b7502fd 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -41,8 +41,23 @@ export class AuthService { }; } + async updateCorreo(id:string, nombreNuevo:string){ + console.log("id: ", id, "nombre: ", nombreNuevo) + const usuarios=await this.userRepo.findOne({where:{id_usuario:id}}) + console.log(usuarios) + if(!usuarios){throw new Error("usuaro no existe")} + usuarios.correo=nombreNuevo; + + return await this.userRepo.save(usuarios); + } + async all(){ + + const usuarios=await this.userRepo.find() + console.log(usuarios) + + } async register(dto: RegisterDto) { // 1) Verificar duplicado diff --git a/src/excel/excel.controller.ts b/src/excel/excel.controller.ts index 928f7c3..4e13b96 100644 --- a/src/excel/excel.controller.ts +++ b/src/excel/excel.controller.ts @@ -41,10 +41,25 @@ export class ExcelController { html: `

La carga de datos se ha realizado con éxito ${alta}

`, }); - await this.excelService.enviarCargaMasiva(); - - + if(alta.at){ + await this.excelService.enviarInforme('AT',"Carga Individual de datos en Servicios PCpuma", + `Se ha hecho una carga individual en el sistema`) + } + if(alta.red){ + await this.excelService.enviarInforme('RED',"Carga Individual de datos en Servicios PCpuma", + `Se ha hecho una carga individual en el sistema`) + } + + if(alta.solicita){ + await this.excelService.enviarInforme('SOLICITA',"Carga Individual de datos en Servicios PCpuma", + `Se ha hecho una carga individual en el sistema` ) + } + + if(alta.correo){ + await this.excelService.enviarInforme('CORREO',"Carga Individual de datos en Servicios PCpuma", + `Se ha hecho una carga individual en el sistema`) + } } @@ -121,24 +136,29 @@ export class ExcelController { `, }); - await this.excelService.enviarCargaMasiva(); + // await this.excelService.enviarCargaMasiva(); + if(result.conteoTiposAt>0){ - await this.excelService.enviarInforme('AT',"Carga de datos en Servicios PCpuma", - `Se ha hecho una carga en el sistema \n ${result.conteoTiposAt}` - ) + await this.excelService.enviarInforme('AT',"Carga de datos en Servicios PCpuma", + `Se ha hecho una carga en el sistema de \n ${result.conteoTiposAt} usarios`) + } + if(result.conteoTiposRed>0){ + await this.excelService.enviarInforme('RED',"Carga de datos en Servicios PCpuma", + `Se ha hecho una carga en el sistema \n ${result.conteoTiposRed} usarios`) + } - await this.excelService.enviarInforme('RED',"Carga de datos en Servicios PCpuma", - `Se ha hecho una carga en el sistema \n ${result.conteoTiposRed}` - ) - - await this.excelService.enviarInforme('SOLICITA',"Carga de datos en Servicios PCpuma", - `Se ha hecho una carga en el sistema \n ${result.conteoTiposCorreo}` - ) - - await this.excelService.enviarInforme('CORREO',"Carga de datos en Servicios PCpuma", - `Se ha hecho una carga en el sistema \n ${result.conteoTiposCorreo}` - ) + + if(result.conteoTiposSolicita>0){ + await this.excelService.enviarInforme('SOLICITA',"Carga de datos en Servicios PCpuma", + `Se ha hecho una carga en el sistema \n ${result.conteoTiposSolicita} usarios` ) + } + + if(result.conteoTiposCorreo>0){ + await this.excelService.enviarInforme('CORREO',"Carga de datos en Servicios PCpuma", + `Se ha hecho una carga en el sistema \n ${result.conteoTiposCorreo} usarios`) + } + diff --git a/src/excel/excel.service.ts b/src/excel/excel.service.ts index 96ed89e..0441ff6 100644 --- a/src/excel/excel.service.ts +++ b/src/excel/excel.service.ts @@ -209,10 +209,10 @@ export class ExcelService { ); } - const conteoTiposRed: Record = {}; - const conteoTiposAt: Record = {}; - const conteoTiposSolicita: Record = {}; - const conteoTiposCorreo: Record = {}; + let conteoTiposRed: number=0; + let conteoTiposAt: number=0; + let conteoTiposSolicita: number=0; + let conteoTiposCorreo: number=0; const queryRunner = this.dataSource.createQueryRunner(); await queryRunner.connect(); @@ -361,24 +361,24 @@ export class ExcelService { switch (r.tipo.trim()) { case 'Diplomado': Object.assign(servData, { Correo: true }); - conteoTiposCorreo[r.tipo] = (conteoTiposCorreo[r.tipo] ?? 0) + 1; + conteoTiposCorreo++; break; case 'Extra Largo': Object.assign(servData, { Correo: true, Prestamos: true }); - conteoTiposCorreo[r.tipo] = (conteoTiposCorreo[r.tipo] ?? 0) + 1; - conteoTiposSolicita[r.tipo] = (conteoTiposSolicita[r.tipo] ?? 0) + 1; + conteoTiposCorreo++; + conteoTiposSolicita++; break; case 'Servicio Social': Object.assign(servData, { Correo: true, AT: true, Red: true }); - conteoTiposCorreo[r.tipo] = (conteoTiposCorreo[r.tipo] ?? 0) + 1; - conteoTiposAt[r.tipo] = (conteoTiposAt[r.tipo] ?? 0) + 1; - conteoTiposRed[r.tipo] = (conteoTiposRed[r.tipo] ?? 0) + 1; + conteoTiposCorreo++; + conteoTiposAt++; + conteoTiposRed++; break; case 'Idiomas R (UNAM)': case 'Idiomas Sabatino': Object.assign(servData, { Correo: true, Red: true }); - conteoTiposCorreo[r.tipo] = (conteoTiposCorreo[r.tipo] ?? 0) + 1; - conteoTiposRed[r.tipo] = (conteoTiposRed[r.tipo] ?? 0) + 1; + conteoTiposCorreo++; + conteoTiposRed++; break; case 'Reinscrito': case 'Posgrado': @@ -393,14 +393,14 @@ export class ExcelService { Red: true, Prestamos: true, }); - conteoTiposCorreo[r.tipo] = (conteoTiposCorreo[r.tipo] ?? 0) + 1; - conteoTiposRed[r.tipo] = (conteoTiposRed[r.tipo] ?? 0) + 1; - conteoTiposAt[r.tipo] = (conteoTiposAt[r.tipo] ?? 0) + 1; - conteoTiposSolicita[r.tipo] = (conteoTiposSolicita[r.tipo] ?? 0) + 1; + conteoTiposCorreo++; + conteoTiposRed++; + conteoTiposAt++; + conteoTiposSolicita++; break; case 'Trabajadores': Object.assign(servData, { Red: true }); - conteoTiposRed[r.tipo] = (conteoTiposRed[r.tipo] ?? 0) + 1; + conteoTiposRed++; break; } @@ -418,6 +418,7 @@ export class ExcelService { await queryRunner.manager.save(serviciosActivos); await queryRunner.commitTransaction(); + return { inserted: rows.length - contador, @@ -579,6 +580,7 @@ export class ExcelService { ], }); + const header = [ 'num_cuenta', 'nombre', 'a_paterno', 'a_materno', 'carreras', 'rfc', 'tipos_usuario' @@ -605,7 +607,7 @@ export class ExcelService { }).join('\n'); const tablaCompleta = header + rows; - + console.log("rows:",rows) return tablaCompleta; } diff --git a/src/usuarios/usuarios.controller.ts b/src/usuarios/usuarios.controller.ts index 9625640..2764ea1 100644 --- a/src/usuarios/usuarios.controller.ts +++ b/src/usuarios/usuarios.controller.ts @@ -16,6 +16,11 @@ export class UsuariosController { finsdAll() { return this.usuariosService.enviarSolicitud(); } + @Get("mov/:move") + findByMov(@Param('move') move:number){ + return this.usuariosService.findByMov(move); + } + @Get(':noCuenta') findOne(@Param('noCuenta') noCuenta: string) { diff --git a/src/usuarios/usuarios.service.ts b/src/usuarios/usuarios.service.ts index 36087d5..f2de791 100644 --- a/src/usuarios/usuarios.service.ts +++ b/src/usuarios/usuarios.service.ts @@ -43,6 +43,33 @@ export class UsuariosService { return 'This action adds a new usuario'; } + + + async findByMov(id:number){ + const usuarios = await this.usuarioRepository.find({ + where: { + //movimiento:{id_mov:id}, + + servActivo: { + PrestamosStatus: 'Inactivo', // solo los que no tienen servicio activo + Prestamos: true, // solo los que tienen el servicio de préstamos activo + } + + }, + relations: [ + 'usuarioTipos', + 'usuarioTipos.tipoUsuario', + 'servActivo' + ], + + }); + if(!usuarios)throw new Error("No existe suauarios relacionados a ese movimiento"); + return usuarios; + + + + } + async findOneStatus(noCuenta: string) { const usuario = await this.usuarioRepository.findOne({ where: { num_cuenta: noCuenta }, @@ -434,6 +461,7 @@ export class UsuariosService { async cargaIndividual(usuario: CreateUsuarioDto, origen: string) { + console.log('Iniciando carga individual para usuario:', usuario); const queryRunner = this.usuarioRepository.manager.connection.createQueryRunner(); await queryRunner.connect(); await queryRunner.startTransaction(); @@ -525,7 +553,10 @@ export class UsuariosService { await queryRunner.manager.save(usuarioTipo); - + let at:boolean=false; + let correo:boolean=false; + let red:boolean=false; + let solicita:boolean=false; switch (usuario.tipo_usuario.trim()) { @@ -540,8 +571,8 @@ export class UsuariosService { CorreoStatus: 'Inactivo', PrestamosStatus: 'Inactivo', }); + correo=true; await queryRunner.manager.save(servActivosDiplomado); - break; case 'Extra Largo': @@ -555,6 +586,8 @@ export class UsuariosService { PrestamosStatus: 'Inactivo', }); + solicita=true; + correo=true; await queryRunner.manager.save(servActivosExtraLargo); break; @@ -569,6 +602,9 @@ export class UsuariosService { CorreoStatus: 'Inactivo', PrestamosStatus: 'Inactivo', }); + at=true; + red=true; + correo=true; await queryRunner.manager.save(servActivosServicio); break; @@ -585,6 +621,8 @@ export class UsuariosService { CorreoStatus: 'Inactivo', PrestamosStatus: 'Inactivo', }); + red=true; + correo=true; await queryRunner.manager.save(servActivosIdiomas); break; @@ -611,6 +649,10 @@ export class UsuariosService { CorreoStatus: 'Inactivo', PrestamosStatus: 'Inactivo', }); + at=true; + red=true; + correo=true; + solicita=true; await queryRunner.manager.save(servActivos); break; @@ -624,6 +666,7 @@ export class UsuariosService { RedStatus: 'Inactivo', }); + red=true; await queryRunner.manager.save(servActivosTrabajadores); break; } @@ -634,7 +677,7 @@ export class UsuariosService { - return { saved: savedUser, movId: mov.id_mov }; + return { saved: savedUser, movId: mov.id_mov, at, correo, red, solicita }; } catch (error) { await queryRunner.rollbackTransaction();