Se agregarò envìo de correos

This commit is contained in:
2025-09-05 11:05:30 -06:00
parent 784b8b1205
commit d9550f1bf1
6 changed files with 142 additions and 39 deletions
+18
View File
@@ -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()
+15
View File
@@ -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
+38 -18
View File
@@ -41,10 +41,25 @@ export class ExcelController {
html: `<p>La carga de datos se ha realizado con éxito ${alta} </p>`,
});
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 {
<ul>${result.errors.map(error => `<li>${error}</li>`).join('')}</ul>`,
});
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`)
}
+20 -18
View File
@@ -209,10 +209,10 @@ export class ExcelService {
);
}
const conteoTiposRed: Record<string, number> = {};
const conteoTiposAt: Record<string, number> = {};
const conteoTiposSolicita: Record<string, number> = {};
const conteoTiposCorreo: Record<string, number> = {};
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;
}
+5
View File
@@ -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) {
+46 -3
View File
@@ -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();