Ajuste Usuarios

This commit is contained in:
Dario F. Gomez Z 2024-04-11 06:51:05 -05:00
parent 3be49a1c16
commit b244307904
3 changed files with 219 additions and 0 deletions

View File

@ -13,6 +13,7 @@ using System.Threading.Channels;
using MSAdminUsuarios.Dto.Externos.MsAgendaMedica;
using static MSAdminUsuarios.Utils.RabbitMQService;
using MSAdminUsuarios.Utils;
using Microsoft.EntityFrameworkCore.Storage;
namespace MSAdminUsuarios.Controllers
{
@ -536,6 +537,204 @@ namespace MSAdminUsuarios.Controllers
}
}
[HttpPost("UsuarioPerfiles")]
public async Task<IActionResult> PostUsuarioPerfiles(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)
{
Guid uuid = Guid.NewGuid();
var UUID = uuid.ToString();
nuevo.usuario.TX_UUID_USUMS = UUID;
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]";
}
_context.USUARIOSMs.Add(nuevo.usuario);
await _context.SaveChangesAsync();
}
else
{
USUARIO? existe = _context.USUARIOSMs.FirstOrDefault(usu => usu.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (existe == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add("Sin usuario no existe.");
return Conflict(_errorModel);
}
existe.NU_TIPODOC_USUMS = nuevo.usuario.NU_TIPODOC_USUMS;
existe.TX_PRIMERNOM_USUMS = nuevo.usuario.TX_PRIMERNOM_USUMS;
existe.TX_SEGUNDONOM_USUMS = nuevo.usuario.TX_SEGUNDONOM_USUMS;
existe.TX_PRIMERAPELL_USUMS = nuevo.usuario.TX_PRIMERAPELL_USUMS;
existe.TX_SEGUNDOAPELL_USUMS = nuevo.usuario.TX_SEGUNDOAPELL_USUMS;
existe.TX_CELULAR_USUMS = nuevo.usuario.TX_CELULAR_USUMS;
existe.TX_TELEFONO_USUMS = nuevo.usuario.TX_TELEFONO_USUMS;
existe.TX_CORREO_USUMS = nuevo.usuario.TX_CORREO_USUMS;
existe.TX_DIRECCION_USUMS = nuevo.usuario.TX_DIRECCION_USUMS;
existe.BL_PERTENCEIPS_USUMS = nuevo.usuario.BL_PERTENCEIPS_USUMS;
existe.TX_NOMBRE_PVD = nuevo.usuario.TX_NOMBRE_PVD;
existe.BL_VIENELDAP_USUMS = nuevo.usuario.BL_VIENELDAP_USUMS;
existe.NU_GRUPO_USUMS = nuevo.usuario.NU_GRUPO_USUMS;
existe.NU_CARGO_USUMS = nuevo.usuario.NU_CARGO_USUMS;
existe.NU_MODALIDADCTT_USUMS = nuevo.usuario.NU_MODALIDADCTT_USUMS;
existe.TX_SEDES_USUMS = nuevo.usuario.TX_SEDES_USUMS;
existe.NU_BLOQUEO_USUMS = nuevo.usuario.NU_BLOQUEO_USUMS;
existe.NU_TIPOUSUARIO_USUMS = nuevo.usuario.NU_TIPOUSUARIO_USUMS;
existe.TX_REGPROF_MDC = nuevo.usuario.TX_REGPROF_MDC;
_context.USUARIOSMs.Update(existe);
_context.SaveChanges();
/*
"perfiles": [
{
"nU_PK_PFLXUSU": 0,
"nU_FK_PFL": 81,
"bL_ESTADO_PFLXUSU": 1,
"tX_UUID_PFL": "78428e6f-1eeb-4b1c-a3c7-b95a9350d568"
}
]
}*/
}
/*if (existe_login > 0)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"El login \"{nuevo.usuario.TX_LOGINNAME_USUMS}\" ya está en uso");
return Conflict(_errorModel);
}*/
/*if (nuevo.usuario.TX_PKDOC_USUMS == null)
{
var ult = _context.USUARIOSMs.Max(x => x.NU_PK_USUMS) + 1;
nuevo.usuario.TX_PKDOC_USUMS = ult.ToString();
}*/
// TODO: Validacion agregada mientras se aclara el proceso
USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (nuevo.perfiles != null)
{
var count = 0;
// 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 == nuevo.usuario.TX_UUID_USUMS).ToList();
foreach (var cu in existe_plfxusu)
{
cu.BL_ESTADO_PFLXUSU = 0;
_context.PERFILESPORUSUARIOs.Update(cu);
await _context.SaveChangesAsync();
}
foreach (var pxu in nuevo.perfiles)
{
count++;
//Se comprueba existencia de cada pxu en base de datos
/*var existe_pxu = (from dm in _context.PERFILESPORUSUARIOs
where dm.TX_UUID_PFL == pxu.TX_UUID_PFL
&& dm.TX_UUID_USUMS == pxu.TX_UUID_USUMS
select dm).ToList();*/
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)
{
//Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe);
await _context.SaveChangesAsync();
continue;
}
else
{
if (pxu == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Perfil por usuario #{count} sin valores");
continue;
}
pxu.BL_ESTADO_PFLXUSU = 1;
pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS;
_context.PERFILESPORUSUARIOs.Add(pxu);
await _context.SaveChangesAsync();
}
}
List<string> all = new List<string>();
all.Add($"Total registros: {nuevo.perfiles.Count().ToString()}");
all.Add($"Exitosos: {(nuevo.perfiles.Count() - _errorModel.cuerpo.Count()).ToString()}");
all.Add($"Erroneos: {_errorModel.cuerpo.Count().ToString()}");
var flag_r = 0;
foreach (var r in _errorModel.cuerpo)
{
flag_r++;
all.Add($"Error #{flag_r}: {r}");
}
if (_errorModel.cuerpo.Count() > 0)
{
return Conflict(all.ToList());
}
}
transaccion.Commit();
_errorModel.error = false;
_errorModel.cuerpo.Add("Usuario creado correctamente");
return Ok(_errorModel);
}
catch (Exception e)
{
transaccion.RollbackToSavepoint("InicioCreacionUsuarioPerfiles");
return BadRequest(e.Message);
}
}
}
}
}

View File

@ -0,0 +1,10 @@
using MSAdminUsuarios.Context;
namespace MSAdminUsuarios.Dto
{
public class PerfilPermisosDTO
{
public PERFIL? perfil { get; set; }
public PERMISO[]? permisos { get; set; }
}
}

View File

@ -0,0 +1,10 @@
using MSAdminUsuarios.Context;
namespace MSAdminUsuarios.Dto
{
public class UsuarioPerfilesDTO
{
public USUARIO? usuario { get; set; }
public PERFILPORUSUARIO[]? perfiles { get; set; }
}
}