diff --git a/src/entities/entities.ts b/src/entities/entities.ts index 5a0ee55..d10df47 100644 --- a/src/entities/entities.ts +++ b/src/entities/entities.ts @@ -103,6 +103,9 @@ export class Usuario { @Column({ name: 'a_materno', type: 'varchar', length: 60 }) a_materno: string; + @Column({ type: 'varchar', length: 20, nullable: true, default: null }) + contraseña: string | null; + @Column({ type: 'varchar', length: 15, diff --git a/src/excel/excel.service.ts b/src/excel/excel.service.ts index 05e156c..e62b2d6 100644 --- a/src/excel/excel.service.ts +++ b/src/excel/excel.service.ts @@ -341,6 +341,8 @@ export class ExcelService { case 'Trabajadores': Object.assign(servData, { Red: true }); break; + + } const serv = queryRunner.manager.create(ServActivos, servData); @@ -545,6 +547,7 @@ export class ExcelService { 'Posgrado', 'Reinscrito', 'Licenciatura', + 'Caso Especial', ]; const usuarios = await this.usuarioRepo.find({ @@ -563,7 +566,8 @@ export class ExcelService { 'genero', 'carreraUsuarios', // relación intermedia 'carreraUsuarios.carrera', // carrera asociada a través de la intermedia - + 'usuarioTipos', + 'usuarioTipos.tipoUsuario', ], }); @@ -572,13 +576,20 @@ export class ExcelService { const header = [ - 'num_cuenta', 'fecha_nacimiento' + 'num_cuenta', 'fecha_nacimiento', 'contraseña', 'tipos_usuario' ].join(',') + '\n'; const rows = usuarios.map(u => { + + const tiposUsuario = (u.usuarioTipos ?? []) + .map(utu => utu.tipoUsuario?.tipo_usuario ?? '') + .join(' | '); + return [ u.num_cuenta, u.fecha_nacimiento, + u.contraseña ?? '', + tiposUsuario ].join(','); }).join('\n'); diff --git a/src/usuarios/dto/create-usuario.dto.ts b/src/usuarios/dto/create-usuario.dto.ts index 27578fa..3657b9d 100644 --- a/src/usuarios/dto/create-usuario.dto.ts +++ b/src/usuarios/dto/create-usuario.dto.ts @@ -5,10 +5,17 @@ export class CreateUsuarioDto { @IsString() num_cuenta?: string; + @IsOptional() + @IsString() + usuario?: string; + @IsOptional() @IsString() carrera?: string; + @IsOptional() + @IsString() + contraseña?: string; @IsString() tipo_usuario: string; diff --git a/src/usuarios/usuarios.service.ts b/src/usuarios/usuarios.service.ts index 9d6583d..10af1ba 100644 --- a/src/usuarios/usuarios.service.ts +++ b/src/usuarios/usuarios.service.ts @@ -64,7 +64,7 @@ export class UsuariosService { const resultado: { servicio: string; status: string; - fecha_activacion: string | null; + fecha_activacion: string; }[] = []; const mapServicio = (nombre: string, estado: string | undefined) => { @@ -82,7 +82,7 @@ export class UsuariosService { resultado.push({ servicio: nombre, status: 'Inactivo', - fecha_activacion: null, + fecha_activacion: "", }); } }; @@ -440,7 +440,7 @@ export class UsuariosService { try { const existente = await queryRunner.manager.findOne(Usuario, { - where: { num_cuenta: usuario.num_cuenta }, + where: { num_cuenta: usuario.num_cuenta ?? usuario.usuario }, relations: ['genero'], }); @@ -468,7 +468,7 @@ export class UsuariosService { const nuevo = queryRunner.manager.create(Usuario, { - num_cuenta: usuario.num_cuenta, + num_cuenta: usuario.num_cuenta ?? usuario.usuario, nombre: usuario.nombre, a_paterno: usuario.a_paterno, a_materno: usuario.a_materno, @@ -477,6 +477,7 @@ export class UsuariosService { generacion: usuario.generacion ?? null, genero, movimiento: mov, + contraseña: usuario.contraseña ?? null, // Asegúrate de manejar la contraseña adecuadamente }); const savedUser = await queryRunner.manager.save(nuevo); @@ -486,7 +487,7 @@ export class UsuariosService { const FieldMap = [ 'Diplomado', 'Extra Largo', 'Servicio Social', 'Idiomas R (UNAM)', 'Idiomas Sabatino', 'Reinscrito', 'Posgrado', 'Intercambio UNAM', 'Movilidad', 'Ampliación de Conocimiento', - 'Licenciatura', 'Profesor', 'Trabajadores', + 'Licenciatura', 'Profesor', 'Trabajadores', 'Caso especial', ]; if (!FieldMap.includes(usuario.tipo_usuario)) { @@ -605,7 +606,7 @@ export class UsuariosService { break; - + case 'Caso especial': case 'Trabajadores': const servActivosTrabajadores = this.servActivosRepository.create({ Red: true,