Ajuste de temporales

This commit is contained in:
Cristian Guerrero 2024-09-23 08:54:57 -05:00
parent 66eccce253
commit dbedd16820
6 changed files with 491 additions and 7 deletions

View File

@ -46,6 +46,7 @@ namespace ApiGateway
String.Equals(calledUrl, "/UsuariosTemp") ||
String.Equals(calledUrl, "/Auth/TknCambioClave") ||
String.Equals(calledUrl, "/Auth/Proveedor") ||
String.Equals(calledUrl, "/Auth/RecuperarClave") ||
String.Equals(calledUrl, "/Email") ||
String.Equals(calledUrl, "/Formularios/Graficas/{rutaGrafica}")
)

View File

@ -37,6 +37,7 @@ namespace MSAdminUsuarios.Context
public int? NU_INICIO_PRIMERAVEZ_USUMS { get; set; }
public DateTime? FE_INICIOACTIVACION_USUTMP { get; set; }
public DateTime? FE_FINACTIVACION_USUTMP { get; set; }
public DateTime? FE_RECUPERACLAVE { get; set; }
}
}

View File

@ -18,5 +18,6 @@ namespace MSAdminUsuarios.Context
public int? NU_ESTADO_USUMS { get; set; }
public DateTime? FE_INICIOACTIVACION_USUTMP { get; set; }
public DateTime? FE_FINACTIVACION_USUTMP { get; set; }
public string? TX_UUID_USUMS { get; set; }
}
}

View File

@ -18,6 +18,7 @@ namespace MSAdminUsuarios.Controllers
private readonly ModelContext _context;
private readonly Encripter _encript = new();
private readonly LDAP _ldap;
private readonly ILogger<AuthController> _logger;
public AuthController(ModelContext context)
{
@ -28,7 +29,7 @@ namespace MSAdminUsuarios.Controllers
});
var logger = loggerFactory.CreateLogger<LDAP>();
_logger = loggerFactory.CreateLogger<AuthController>();
_ldap = new LDAP(logger);
}
@ -146,11 +147,70 @@ namespace MSAdminUsuarios.Controllers
USUARIO? user = _context.USUARIOSMs.FirstOrDefault(u => u.TX_LOGINNAME_USUMS == login.TX_LOGINNAME_USUMS && u.TX_PASSWORD_USUMS == _encript.EncryptPwd(login.TX_PASSWORD_USUMS));
if (user == null) return BadRequest(new ResLoginExt("Usuario o contraseña incorrectos", true, userExist.NU_ESTADO_USUMS));
if (user.NU_ESTADO_USUMS != 1) return BadRequest(new ResLoginExt("Usuario inactivo, bloqueado o eliminado.", true, user.NU_ESTADO_USUMS));
//if (user.NU_ESTADO_USUMS == null) return BadRequest(new ResLoginExt("Usuario eliminado.", true, user.NU_ESTADO_USUMS));
if (user.NU_ESTADO_USUMS == 0) return BadRequest(new ResLoginExt("Usuario inactivo.", true, user.NU_ESTADO_USUMS));
if (user.NU_ESTADO_USUMS == 2) return BadRequest(new ResLoginExt("Usuario bloqueado.", true, user.NU_ESTADO_USUMS));
if (user.BL_VIENELDAP_USUMS != 0) return BadRequest(new ResLoginExt("No eres un usuario externo.", true, user.NU_ESTADO_USUMS));
//if (user.FE_RECUPERACLAVE < DateTime.Now) return BadRequest(new ResLoginExt("La recuperación de contraseña esta caducada.", true, user.NU_ESTADO_USUMS));
//string fechaConvertidaBase = user.FE_RECUPERACLAVE.ToString("dd/MM/yy");
if (user.FE_RECUPERACLAVE != null)
{
DateTime fecha1 = (DateTime)user.FE_RECUPERACLAVE;
DateTime fecha2 = DateTime.Now;
TimeSpan diferencia = fecha2 - fecha1;
if (diferencia.TotalHours > 24)
{
//Console.WriteLine("La diferencia es de al menos 24 horas.");
return BadRequest(new ResLoginExt("La recuperación de contraseña esta caducada.", true, user.NU_ESTADO_USUMS));
}
}
//else
//{
// Console.WriteLine("La diferencia es menor a 24 horas.");
//}
//string fechaConvertidaBase = user.FE_RECUPERACLAVE.HasValue? user.FE_RECUPERACLAVE.Value.ToString("dd/MM/yy"): "Fecha no disponible";
//string fechaConvertidaActual = DateTime.Now.ToString("dd/MM/yy");
//if (fechaConvertidaBase != null && fechaConvertidaBase != fechaConvertidaActual) return BadRequest(new ResLoginExt("La recuperación de contraseña esta caducada.", true, user.NU_ESTADO_USUMS));
//this._logger.LogWarning(user.FE_RECUPERACLAVE.ToString());
//DateTime fecha1 = user.FE_RECUPERACLAVE;
//if (fechaConvertidaBase != null && fechaConvertidaBase != fechaConvertidaActual) return BadRequest(new ResLoginExt("La recuperación de contraseña esta caducada.", true, user.NU_ESTADO_USUMS));
//if (user.FE_RECUPERACLAVE != null) {
// ///////////////////////////////////////////////////////
// DateTime fechaHoy = DateTime.Now;
// int diaDiasAntes = fechaHoy.Day;
// int mesDiasAntes = fechaHoy.Month;
// int anioDiasAntes = fechaHoy.Year;
// int horas = fechaHoy.Hour;
// int minutos = fechaHoy.Minute;
// int segundos = fechaHoy.Second;
// int milisegs = fechaHoy.Millisecond;
// ///////////////////////////////////////////////////////
// int dia = user.FE_RECUPERACLAVE.Value.Day;
// int mes = user.FE_RECUPERACLAVE.Value.Month;
// int año = user.FE_RECUPERACLAVE.Value.Year;
// int horasSEG = user.FE_RECUPERACLAVE.Value.Hour;
// int minutosSEG = user.FE_RECUPERACLAVE.Value.Minute;
// int segundosSEG = user.FE_RECUPERACLAVE.Value.Second;
// int milisegsSEG = user.FE_RECUPERACLAVE.Value.Millisecond;
// if (user.FE_RECUPERACLAVE < DateTime.Now) return BadRequest(new ResLoginExt("La recuperación de contraseña esta caducada.", true, user.NU_ESTADO_USUMS));
//}
//else
//{
//}
string token = Token(user);
user.FE_RECUPERACLAVE = null;
_context.USUARIOSMs.Update(user);
_context.SaveChanges();
return Ok(new ResLoginExt("Bienvenido al sistema.", true, user.NU_ESTADO_USUMS, token, user.NU_INICIO_PRIMERAVEZ_USUMS, user.TX_PKDOC_USUMS, user.BL_VIENELDAP_USUMS));
@ -162,6 +222,37 @@ namespace MSAdminUsuarios.Controllers
}
[HttpPost("RecuperarClave")]
public IActionResult RecuperarClave([FromBody] string usuario)
{
try
{
if (usuario == null) throw new Exception("Usuario no encontrado");
if (usuario == null) return BadRequest(new ResLoginExt("Es necesario ingresar un usuario"));
USUARIO? userExist = _context.USUARIOSMs.FirstOrDefault(u => u.TX_LOGINNAME_USUMS == usuario);
if (userExist == null) return BadRequest(new ResLoginExt("Este usuario no existe"));
if (userExist.NU_ESTADO_USUMS == 0) return BadRequest(new ResLoginExt("Usuario inactivo.", true, userExist.NU_ESTADO_USUMS));
if (userExist.NU_ESTADO_USUMS == 2) return BadRequest(new ResLoginExt("Usuario bloqueado.", true, userExist.NU_ESTADO_USUMS));
if (userExist.BL_VIENELDAP_USUMS != 0) return BadRequest(new ResLoginExt("No es un usuario externo.", true, userExist.NU_ESTADO_USUMS));
//string token = Token(user);
userExist.FE_RECUPERACLAVE = DateTime.Now;
string RecuperaIdGenerada = AuthController.RecuperaIdGenerada(8);
userExist.TX_PASSWORD_USUMS = _encript.EncryptPwd(RecuperaIdGenerada);
_context.USUARIOSMs.Update(userExist);
_context.SaveChanges();
return Ok(new RecuperarClaveModel("Se enviará un correo para continuar el proceso.", true, userExist.NU_ESTADO_USUMS, userExist.TX_CORREO_USUMS, RecuperaIdGenerada));
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
[HttpPatch("RenovarToken")]
public IActionResult RefreshToken([FromBody] string token)
{
@ -407,6 +498,27 @@ namespace MSAdminUsuarios.Controllers
return Encripter.Cypher(token);
}
public static string RecuperaIdGenerada(int length)
{
// Validar que la longitud sea positiva
if (length <= 0)
{
throw new ArgumentException("La longitud debe ser mayor que 0.");
}
// Crear una instancia de Random
Random random = new Random();
// Generar una cadena aleatoria de números
string result = "";
for (int i = 0; i < length; i++)
{
result += random.Next(0, 10).ToString(); // Generar un dígito aleatorio
}
return result;
}
}
public class LoginModel
@ -429,6 +541,7 @@ namespace MSAdminUsuarios.Controllers
Primera = _primera;
User = _user;
Ldap = _ldap;
//ClaveRec = _claveRec;
}
public bool Existe { get; set; }
@ -440,6 +553,23 @@ namespace MSAdminUsuarios.Controllers
public int? Ldap { get; set; }
}
public class RecuperarClaveModel
{
public RecuperarClaveModel(string _message, bool _exist = false, int? _estado = null, string? _correo = "", string? _claveRec = "")
{
Message = _message;
Existe = _exist;
Estado = _estado;
Correo = _correo;
ClaveRec = _claveRec;
}
public bool Existe { get; set; }
public int? Estado { get; set; }
public string Message { get; set; } = null!;
public string Correo { get; set; }
public string ClaveRec { get; set; }
}
public class CambiarClaveModel
{
public string User { get; set; }

View File

@ -266,6 +266,7 @@ namespace MSAdminUsuarios.Controllers
return Conflict(_errorModel);
}
existe.NU_ESTADO_USUMS = editado.NU_ESTADO_USUMS;
existe.TX_PRIMERNOM_USUMS = editado.TX_PRIMERNOM_USUMS;
existe.TX_SEGUNDONOM_USUMS = editado.TX_SEGUNDONOM_USUMS;
existe.TX_PRIMERAPELL_USUMS = editado.TX_PRIMERAPELL_USUMS;

View File

@ -2,7 +2,9 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MSAdminUsuarios.Context;
using MSAdminUsuarios.Dto;
using MSAdminUsuarios.Models;
using Security;
namespace MSAdminUsuarios.Controllers
{
@ -13,6 +15,7 @@ namespace MSAdminUsuarios.Controllers
private readonly ModelContext _context;
private readonly ILogger<UsuariosTempController> _logger;
private ErrorModel _errorModel;
private readonly Encripter _encript = new();
public UsuariosTempController(ModelContext context, ILogger<UsuariosTempController> logger)
{
@ -52,12 +55,97 @@ namespace MSAdminUsuarios.Controllers
return Conflict(_errorModel);
}
_context.USUARIOSTEMP.Add(nuevo);
await _context.SaveChangesAsync();
//USUARIOSTEMP? existe = await _context.USUARIOSTEMP.FirstOrDefaultAsync(ut => ut.NU_PK_USUTMP == nuevo.NU_PK_USUTMP);
//if (existe == null)
_errorModel.error = false;
_errorModel.cuerpo.Add("Solicitud de usuario temporal guardado correctamente.");
return Ok(_errorModel);
if (nuevo.TX_UUID_USUMS == null)
{
USUARIOSTEMP? existeEmailTemp = await _context.USUARIOSTEMP.FirstOrDefaultAsync(ut => ut.TX_CORREO_USUMS == nuevo.TX_CORREO_USUMS);
if (existeEmailTemp != null)
{
if (existeEmailTemp.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese correo electronico.");
return Conflict(_errorModel);
}
else
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese correo electronico.");
return Conflict(_errorModel);
}
}
USUARIOSTEMP? existe = await _context.USUARIOSTEMP.FirstOrDefaultAsync(ut => ut.NU_TIPODOC_USUMS == nuevo.NU_TIPODOC_USUMS && ut.TX_PKDOC_USUMS == nuevo.TX_PKDOC_USUMS);
if (existe != null) {
if (existe.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese número de documento.");
return Conflict(_errorModel);
}
else
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese número de documento.");
return Conflict(_errorModel);
}
}
else
{
Guid uuid = Guid.NewGuid();
var UUID = uuid.ToString();
nuevo.TX_UUID_USUMS = UUID;
_context.USUARIOSTEMP.Add(nuevo);
await _context.SaveChangesAsync();
_errorModel.error = false;
_errorModel.cuerpo.Add("Solicitud de usuario temporal creada correctamente.");
return Ok(_errorModel);
}
}
else
{
USUARIOSTEMP? existe = _context.USUARIOSTEMP.FirstOrDefault(ut => ut.TX_UUID_USUMS == nuevo.TX_UUID_USUMS);
if (existe == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Sin usuario no existe.");
return Conflict(_errorModel);
}
existe.NU_TIPODOC_USUMS = nuevo.NU_TIPODOC_USUMS;
existe.TX_PRIMERNOM_USUMS = nuevo.TX_PRIMERNOM_USUMS;
existe.TX_SEGUNDONOM_USUMS = nuevo.TX_SEGUNDONOM_USUMS;
existe.TX_PRIMERAPELL_USUMS = nuevo.TX_PRIMERAPELL_USUMS;
existe.TX_SEGUNDOAPELL_USUMS = nuevo.TX_SEGUNDOAPELL_USUMS;
//existe.TX_CELULAR_USUMS = nuevo.TX_CELULAR_USUMS;
existe.TX_TELEFONO_USUMS = nuevo.TX_TELEFONO_USUMS;
existe.TX_CORREO_USUMS = nuevo.TX_CORREO_USUMS;
//existe.TX_DIRECCION_USUMS = nuevo.TX_DIRECCION_USUMS;
//existe.BL_PERTENCEIPS_USUMS = nuevo.BL_PERTENCEIPS_USUMS;
existe.TX_NOMBRE_PVD = nuevo.TX_NOMBRE_PVD;
//existe.BL_VIENELDAP_USUMS = nuevo.BL_VIENELDAP_USUMS;
//existe.NU_GRUPO_USUMS = nuevo.NU_GRUPO_USUMS;
//existe.NU_CARGO_USUMS = nuevo.NU_CARGO_USUMS;
//existe.NU_MODALIDADCTT_USUMS = nuevo.NU_MODALIDADCTT_USUMS;
//existe.TX_SEDES_USUMS = nuevo.TX_SEDES_USUMS;
//existe.NU_BLOQUEO_USUMS = nuevo.NU_BLOQUEO_USUMS;
//existe.NU_TIPOUSUARIO_USUMS = nuevo.NU_TIPOUSUARIO_USUMS;
//existe.TX_REGPROF_MDC = nuevo.TX_REGPROF_MDC;
existe.NU_ESTADO_USUMS = 1;
existe.FE_INICIOACTIVACION_USUTMP = nuevo.FE_INICIOACTIVACION_USUTMP;
existe.FE_FINACTIVACION_USUTMP = nuevo.FE_FINACTIVACION_USUTMP;
_context.USUARIOSTEMP.Update(existe);
await _context.SaveChangesAsync();
_errorModel.error = false;
_errorModel.cuerpo.Add("Solicitud de usuario temporal actualizada correctamente.");
return Ok(_errorModel);
}
}
catch (Exception)
{
@ -102,5 +190,267 @@ namespace MSAdminUsuarios.Controllers
return BadRequest(_errorModel);
}
}
[HttpPost("UsuarioPerfilesTemp")]
public async Task<IActionResult> PostUsuarioPerfilesTemp(UsuarioPerfilesDTO nuevo)
{
ErrorModel _errorModel = new ErrorModel();
using (var transaccion = _context.Database.BeginTransaction())
{
try
{
if (nuevo == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Sin datos a guardar.");
return Conflict(_errorModel);
}
transaccion.CreateSavepoint("InicioCreacionUsuarioPerfiles");
if (nuevo.usuario == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Sin usuario a guardar.");
return Conflict(_errorModel);
}
if (nuevo.usuario.TX_CORREO_USUMS == null && nuevo.usuario.TX_LOGINNAME_USUMS == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Indique algún correo.");
return Conflict(_errorModel);
}
if (nuevo.usuario.TX_UUID_USUMS == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Temporal sin codigo.");
return Conflict(_errorModel);
}
else
{
USUARIO? existeUUID = _context.USUARIOSMs.FirstOrDefault(usu => usu.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (existeUUID == null)
{
USUARIO? existeEmail = await _context.USUARIOSMs.FirstOrDefaultAsync(usu => usu.TX_CORREO_USUMS == nuevo.usuario.TX_CORREO_USUMS);
if (existeEmail != null)
{
if (existeEmail.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese correo electronico.");
return Conflict(_errorModel);
}
else if (existeEmail.NU_ESTADO_USUMS == 1)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese correo electronico.");
return Conflict(_errorModel);
}
else if (existeEmail.NU_ESTADO_USUMS == 2)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario bloqueado con ese correo electronico.");
return Conflict(_errorModel);
}
}
USUARIO? existeDoc = await _context.USUARIOSMs.FirstOrDefaultAsync(usu => usu.NU_TIPODOC_USUMS == nuevo.usuario.NU_TIPODOC_USUMS && usu.TX_PKDOC_USUMS == nuevo.usuario.TX_PKDOC_USUMS);
if (existeDoc != null)
{
if (existeDoc.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese número de documento.");
return Conflict(_errorModel);
}
else if (existeDoc.NU_ESTADO_USUMS == 1)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese número de documento.");
return Conflict(_errorModel);
}
else if (existeDoc.NU_ESTADO_USUMS == 2)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese número de documento.");
return Conflict(_errorModel);
}
}
//_errorModel.error = true;
//_errorModel.cuerpo.Add("Sin usuario no existe.");
//return Conflict(_errorModel);
USUARIOSTEMP? existeTemp = _context.USUARIOSTEMP.FirstOrDefault(ut => ut.TX_PKDOC_USUMS == nuevo.usuario.TX_PKDOC_USUMS);
if (existeTemp != null)
{
if (nuevo.usuario.TX_PASSWORD_USUMS == null)
{
nuevo.usuario.TX_PASSWORD_USUMS = nuevo.usuario.TX_PKDOC_USUMS;
}
if (nuevo.usuario.TX_PASSWORD_USUMS != null)
{
nuevo.usuario.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PASSWORD_USUMS);
}
if (nuevo.usuario.TX_SEDES_USUMS == null || nuevo.usuario.TX_SEDES_USUMS.Length == 0)
{
nuevo.usuario.TX_SEDES_USUMS = "[0]";
}
nuevo.usuario.NU_INICIO_PRIMERAVEZ_USUMS = 0;
nuevo.usuario.BL_VIENELDAP_USUMS = 0;
nuevo.usuario.TX_UUID_USUMS = existeTemp.TX_UUID_USUMS;
nuevo.usuario.TX_LOGINNAME_USUMS = nuevo.usuario.TX_CORREO_USUMS;
//nuevo.usuario.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PKDOC_USUMS!);
//if (nuevo.usuario.TX_PASSWORD_USUMS == null || nuevo.usuario.TX_PASSWORD_USUMS == "")
//{
// nuevo.usuario.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PKDOC_USUMS!);
//}
_context.USUARIOSMs.Add(nuevo.usuario);
await _context.SaveChangesAsync();
//_errorModel.cuerpo.Add("Usuario Temporal creado correctamente");
}
}
else
{
USUARIO? existeEmail = await _context.USUARIOSMs.FirstOrDefaultAsync(usu => usu.TX_CORREO_USUMS == nuevo.usuario.TX_CORREO_USUMS && usu.TX_UUID_USUMS != nuevo.usuario.TX_UUID_USUMS);
if (existeEmail != null)
{
if (existeEmail.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese correo electronico.");
return Conflict(_errorModel);
}
else if (existeEmail.NU_ESTADO_USUMS == 1)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese correo electronico.");
return Conflict(_errorModel);
}
else if (existeEmail.NU_ESTADO_USUMS == 2)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario bloqueado con ese correo electronico.");
return Conflict(_errorModel);
}
}
USUARIO? existeDoc = await _context.USUARIOSMs.FirstOrDefaultAsync(usu => usu.NU_TIPODOC_USUMS == nuevo.usuario.NU_TIPODOC_USUMS && usu.TX_PKDOC_USUMS == nuevo.usuario.TX_PKDOC_USUMS && usu.TX_UUID_USUMS != nuevo.usuario.TX_UUID_USUMS);
if (existeDoc != null)
{
if (existeDoc.NU_ESTADO_USUMS == 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario inactivo con ese número de documento.");
return Conflict(_errorModel);
}
else if (existeDoc.NU_ESTADO_USUMS == 1)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese número de documento.");
return Conflict(_errorModel);
}
else if (existeDoc.NU_ESTADO_USUMS == 2)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Ya existe un usuario activo con ese número de documento.");
return Conflict(_errorModel);
}
}
existeUUID.NU_TIPODOC_USUMS = nuevo.usuario.NU_TIPODOC_USUMS;
existeUUID.TX_PRIMERNOM_USUMS = nuevo.usuario.TX_PRIMERNOM_USUMS;
existeUUID.TX_SEGUNDONOM_USUMS = nuevo.usuario.TX_SEGUNDONOM_USUMS;
existeUUID.TX_PRIMERAPELL_USUMS = nuevo.usuario.TX_PRIMERAPELL_USUMS;
existeUUID.TX_SEGUNDOAPELL_USUMS = nuevo.usuario.TX_SEGUNDOAPELL_USUMS;
//existeUUID.TX_CELULAR_USUMS = nuevo.usuario.TX_CELULAR_USUMS;
existeUUID.TX_TELEFONO_USUMS = nuevo.usuario.TX_TELEFONO_USUMS;
existeUUID.TX_CORREO_USUMS = nuevo.usuario.TX_CORREO_USUMS;
//existeUUID.TX_DIRECCION_USUMS = nuevo.usuario.TX_DIRECCION_USUMS;
//existeUUID.BL_PERTENCEIPS_USUMS = nuevo.usuario.BL_PERTENCEIPS_USUMS;
existeUUID.TX_NOMBRE_PVD = nuevo.usuario.TX_NOMBRE_PVD;
//existeUUID.BL_VIENELDAP_USUMS = nuevo.usuario.BL_VIENELDAP_USUMS;
//existeUUID.NU_GRUPO_USUMS = nuevo.usuario.NU_GRUPO_USUMS;
//existeUUID.NU_CARGO_USUMS = nuevo.usuario.NU_CARGO_USUMS;
//existeUUID.NU_MODALIDADCTT_USUMS = nuevo.usuario.NU_MODALIDADCTT_USUMS;
//existeUUID.TX_SEDES_USUMS = nuevo.usuario.TX_SEDES_USUMS;
//existeUUID.NU_BLOQUEO_USUMS = nuevo.usuario.NU_BLOQUEO_USUMS;
//existeUUID.NU_TIPOUSUARIO_USUMS = nuevo.usuario.NU_TIPOUSUARIO_USUMS;
//existeUUID.TX_REGPROF_MDC = nuevo.usuario.TX_REGPROF_MDC;
existeUUID.NU_ESTADO_USUMS = nuevo.usuario.NU_ESTADO_USUMS;
existeUUID.FE_INICIOACTIVACION_USUTMP = nuevo.usuario.FE_INICIOACTIVACION_USUTMP;
existeUUID.FE_FINACTIVACION_USUTMP = nuevo.usuario.FE_FINACTIVACION_USUTMP;
if (existeUUID.TX_PASSWORD_USUMS == null || existeUUID.TX_PASSWORD_USUMS == "")
{
existeUUID.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PKDOC_USUMS!);
}
_context.USUARIOSMs.Update(existeUUID);
await _context.SaveChangesAsync();
//_errorModel.cuerpo.Add("Usuario Temporal Actualizado correctamente");
}
}
USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (nuevo.perfiles != null && creado != null)
{
// Se cambia a estado 0 todos los perfiles por usuario existentes
var existe_plfxusu = _context.PERFILESPORUSUARIOs.Where(x => x.BL_ESTADO_PFLXUSU == 1 && x.TX_UUID_USUMS == creado.TX_UUID_USUMS).ToList();
foreach (var pu in existe_plfxusu)
{
pu.BL_ESTADO_PFLXUSU = 0;
}
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
await _context.SaveChangesAsync();
foreach (PERFILPORUSUARIO pxu in nuevo.perfiles)
{
if (pxu != null)
{
PERFILPORUSUARIO? existe = _context.PERFILESPORUSUARIOs.FirstOrDefault(pu => pu.TX_UUID_PFL == pxu.TX_UUID_PFL && pu.TX_UUID_USUMS == pxu.TX_UUID_USUMS);
if (existe != null)
{
existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe);
await _context.SaveChangesAsync();
}
else
{
pxu.BL_ESTADO_PFLXUSU = 1;
pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS;
_context.PERFILESPORUSUARIOs.Add(pxu);
await _context.SaveChangesAsync();
}
}
}
/*List<PERFILPORUSUARIO> perUsuEliminiado = _context.PERFILESPORUSUARIOs.Where(pu => pu.TX_UUID_USUMS == creado.TX_UUID_USUMS && pu.BL_ESTADO_PFLXUSU == 0).ToList();
_context.PERFILESPORUSUARIOs.RemoveRange(perUsuEliminiado);
await _context.SaveChangesAsync();*/
}
transaccion.Commit();
_errorModel.error = false;
_errorModel.cuerpo.Add("Proceso realizado correctamente");
return Ok(_errorModel);
}
catch (Exception e)
{
transaccion.RollbackToSavepoint("InicioCreacionUsuarioPerfiles");
return BadRequest(e.Message);
}
}
}
}
}