Inhabilita rabbit y se ajusta asociar perfiles con permisos

This commit is contained in:
Dario F. Gomez Z 2024-07-15 08:01:51 -05:00
parent e7e78fa51f
commit 376733e3e7
5 changed files with 113 additions and 166 deletions

View File

@ -22,7 +22,7 @@ namespace MSAdminUsuarios.Controllers
{ {
/*var consulta = from dm in _context.MICROSERVICIOs /*var consulta = from dm in _context.MICROSERVICIOs
select dm;*/ select dm;*/
List<MICROSERVICIO> microservicios = await _context.MICROSERVICIOs.OrderBy(m => m.TX_SECCION_MS).ToListAsync(); List<MICROSERVICIO> microservicios = await _context.MICROSERVICIOs.OrderBy(m => m.NU_PK_MS).ToListAsync();
return Ok(microservicios); return Ok(microservicios);
} }
catch (Exception ex) catch (Exception ex)

View File

@ -120,7 +120,6 @@ namespace MSAdminUsuarios.Controllers
Guid uuid = Guid.NewGuid(); Guid uuid = Guid.NewGuid();
var UUID = uuid.ToString(); var UUID = uuid.ToString();
nuevo.perfil.TX_UUID_PFL = UUID; nuevo.perfil.TX_UUID_PFL = UUID;
_context.PERFILESMs.Add(nuevo.perfil); _context.PERFILESMs.Add(nuevo.perfil);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();
} }
@ -139,61 +138,79 @@ namespace MSAdminUsuarios.Controllers
existe.BL_ESTADO_PFL = nuevo.perfil.BL_ESTADO_PFL; existe.BL_ESTADO_PFL = nuevo.perfil.BL_ESTADO_PFL;
_context.PERFILESMs.Update(existe); _context.PERFILESMs.Update(existe);
_context.SaveChanges(); await _context.SaveChangesAsync();
} }
// TODO: Validacion agregada mientras se aclara el proceso PERFIL? perfilCreado = await _context.PERFILESMs.FirstOrDefaultAsync(prfl => prfl.TX_UUID_PFL == nuevo.perfil.TX_UUID_PFL);
PERFIL? creado = await _context.PERFILESMs.FirstOrDefaultAsync(prfl => prfl.TX_UUID_PFL == nuevo.perfil.TX_UUID_PFL); if (nuevo.permisos != null && perfilCreado != null)
if (nuevo.permisos != null && creado != null)
{ {
// Se ordena los permisos enviados para agregar los padres primero
List<PERMISO> permisosOrdenados = nuevo.permisos.OrderBy(p => p.NU_FK_MS).ToList();
// Se cambia a estado 0 todos los perfiles por usuario existentes // Se cambia a estado 0 todos los perfiles por usuario existentes
List<PERMISO> permisos = _context.PERMISOSMs.Where(x => x.BL_ESTADO_PMS == 1 && x.NU_FK_PFL == creado.NU_PK_PFL).ToList(); List<PERMISO> permisosExistentes = _context.PERMISOSMs.Where(x => x.BL_ESTADO_PMS == 1 && x.NU_FK_PFL == perfilCreado.NU_PK_PFL).ToList();
// Se inactivan los permisos existentes
foreach (var permiso in permisos) foreach (var permiso in permisosExistentes)
{ {
permiso.BL_ESTADO_PMS = 0; permiso.BL_ESTADO_PMS = 0;
//_context.PERMISOSMs.Update(permiso);
//await _context.SaveChangesAsync();
} }
_context.PERMISOSMs.UpdateRange(permisos); _context.PERMISOSMs.UpdateRange(permisosExistentes);
_context.SaveChanges(); await _context.SaveChangesAsync();
// Se recorre los nuevos permisos ordenados por FK_MS
foreach (var pxp in nuevo.permisos) int idxPermisoNuevo = (-2) * permisosOrdenados.Count();
foreach (PERMISO permiso in permisosOrdenados)
{ {
PERMISO? existe = _context.PERMISOSMs.FirstOrDefault(pm => pm.NU_FK_PFL == creado.NU_PK_PFL && pm.NU_FK_MS == pxp.NU_FK_MS); if (permiso != null)
if (existe != null)
{ {
//Si existe activamos estado 1 del perfil MICROSERVICIO? msSeleccionado = _context.MICROSERVICIOs.FirstOrDefault(m => m.NU_PK_MS == permiso.NU_FK_MS);
existe.BL_ESTADO_PMS = 1; if (msSeleccionado != null)
_context.Update(existe); {
_context.SaveChanges(); if (msSeleccionado.NU_PADRE_MS != null)
//continue; {
PERMISO? permisoPadre = _context.PERMISOSMs.FirstOrDefault(pm => pm.NU_FK_PFL == perfilCreado.NU_PK_PFL && pm.NU_FK_MS == msSeleccionado.NU_PADRE_MS);
if (permisoPadre != null)
{
permisoPadre.BL_ESTADO_PMS = 1;
_context.Update(permisoPadre);
await _context.SaveChangesAsync();
} }
else else
{ {
if (pxp == null) PERMISO nuevoPermisoPadre = new PERMISO
{ {
_errorModel.error = true; NU_PK_PMS = idxPermisoNuevo,
_errorModel.cuerpo.Add($"Permiso sin valores"); NU_FK_PFL = perfilCreado.NU_PK_PFL,
//continue; NU_FK_MS = msSeleccionado.NU_PADRE_MS,
} else BL_ESTADO_PMS = 1
};
_context.PERMISOSMs.Add(nuevoPermisoPadre);
await _context.SaveChangesAsync();
idxPermisoNuevo--;
}
}
PERMISO? existe = _context.PERMISOSMs.FirstOrDefault(pm => pm.NU_FK_PFL == perfilCreado.NU_PK_PFL && pm.NU_FK_MS == permiso.NU_FK_MS);
if (existe != null)
{ {
existe.BL_ESTADO_PMS = 1;
pxp.BL_ESTADO_PMS = 1; _context.Update(existe);
pxp.NU_FK_PFL = creado.NU_PK_PFL; await _context.SaveChangesAsync();
_context.PERMISOSMs.Add(pxp); }
_context.SaveChanges(); else
{
permiso.BL_ESTADO_PMS = 1;
permiso.NU_FK_PFL = perfilCreado.NU_PK_PFL;
_context.PERMISOSMs.Add(permiso);
await _context.SaveChangesAsync();
}
} }
} }
} }
List<PERMISO> permisosEliminados = _context.PERMISOSMs.Where(pm => pm.NU_FK_PFL == creado.NU_PK_PFL && pm.BL_ESTADO_PMS == 0).ToList();
/*List<PERMISO> permisosEliminados = _context.PERMISOSMs.Where(pm => pm.NU_FK_PFL == perfilCreado.NU_PK_PFL && pm.BL_ESTADO_PMS == 0).ToList();
_context.PERMISOSMs.RemoveRange(permisosEliminados); _context.PERMISOSMs.RemoveRange(permisosEliminados);
_context.SaveChanges(); await _context.SaveChangesAsync();*/
} }

View File

@ -23,12 +23,11 @@ namespace MSAdminUsuarios.Controllers
{ {
private readonly ModelContext _context; private readonly ModelContext _context;
private readonly Encripter _encript = new(); private readonly Encripter _encript = new();
private readonly IModel _channel; //private readonly IModel _channel;
public UsuariosController(ModelContext context, IModel channel) public UsuariosController(ModelContext context)
{ {
_context = context; _context = context;
_channel = channel;
} }
//public UsuariosController(ModelContext context, IModel channel) //public UsuariosController(ModelContext context, IModel channel)
//{ //{
@ -315,7 +314,7 @@ namespace MSAdminUsuarios.Controllers
if (perfilesUsuario.Count > 0 && perfilesUsuario.Exists(pxu => pxu.NU_FK_PFL == 1)) if (perfilesUsuario.Count > 0 && perfilesUsuario.Exists(pxu => pxu.NU_FK_PFL == 1))
{ {
using (_channel) /*using (_channel)
{ {
var medico = new MedicoDto() var medico = new MedicoDto()
{ {
@ -334,7 +333,7 @@ namespace MSAdminUsuarios.Controllers
routingKey: $"{exchange}.{MQueues.medico}.patch", routingKey: $"{exchange}.{MQueues.medico}.patch",
message: jsonMedico message: jsonMedico
); );
} }*/
} }
@ -633,17 +632,13 @@ namespace MSAdminUsuarios.Controllers
} }
_context.USUARIOSMs.Update(existe); _context.USUARIOSMs.Update(existe);
_context.SaveChanges(); await _context.SaveChangesAsync();
} }
// TODO: Validacion agregada mientras se aclara el proceso
USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS); USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (nuevo.perfiles != null && creado!=null) if (nuevo.perfiles != null && creado!=null)
{ {
var count = 0;
// Se cambia a estado 0 todos los perfiles por usuario existentes // 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(); var existe_plfxusu = _context.PERFILESPORUSUARIOs.Where(x => x.BL_ESTADO_PFLXUSU == 1 && x.TX_UUID_USUMS == creado.TX_UUID_USUMS).ToList();
@ -652,66 +647,34 @@ namespace MSAdminUsuarios.Controllers
pu.BL_ESTADO_PFLXUSU = 0; pu.BL_ESTADO_PFLXUSU = 0;
} }
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu); _context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
_context.SaveChanges(); await _context.SaveChangesAsync();
foreach (var pxu in nuevo.perfiles) foreach (PERFILPORUSUARIO pxu in nuevo.perfiles)
{
if (pxu != null)
{ {
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); 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) if (existe != null)
{ {
//Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PFLXUSU = 1; existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe); _context.Update(existe);
_context.SaveChanges(); await _context.SaveChangesAsync();
} }
else else
{
if (pxu == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Perfil por usuario #{count} sin valores");
} else
{ {
pxu.BL_ESTADO_PFLXUSU = 1; pxu.BL_ESTADO_PFLXUSU = 1;
pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS; pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS;
_context.PERFILESPORUSUARIOs.Add(pxu); _context.PERFILESPORUSUARIOs.Add(pxu);
_context.SaveChanges(); await _context.SaveChangesAsync();
}
} }
} }
List<PERFILPORUSUARIO> perUsuEliminiado = _context.PERFILESPORUSUARIOs.Where(pu => pu.TX_UUID_USUMS == creado.TX_UUID_USUMS && pu.BL_ESTADO_PFLXUSU == 0).ToList(); }
/*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); _context.PERFILESPORUSUARIOs.RemoveRange(perUsuEliminiado);
_context.SaveChanges(); 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(); transaccion.Commit();
@ -823,14 +786,10 @@ namespace MSAdminUsuarios.Controllers
_context.SaveChanges(); _context.SaveChanges();
} }
// TODO: Validacion agregada mientras se aclara el proceso
USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS); USUARIO? creado = await _context.USUARIOSMs.FirstOrDefaultAsync(us => us.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
if (nuevo.perfiles != null && creado!=null) if (nuevo.perfiles != null && creado!=null)
{ {
var count = 0;
// Se cambia a estado 0 todos los perfiles por usuario existentes // 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(); var existe_plfxusu = _context.PERFILESPORUSUARIOs.Where(x => x.BL_ESTADO_PFLXUSU == 1 && x.TX_UUID_USUMS == creado.TX_UUID_USUMS).ToList();
@ -839,16 +798,12 @@ namespace MSAdminUsuarios.Controllers
pu.BL_ESTADO_PFLXUSU = 0; pu.BL_ESTADO_PFLXUSU = 0;
} }
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu); _context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
_context.SaveChanges(); await _context.SaveChangesAsync();
foreach (var pxu in nuevo.perfiles) foreach (var pxu in nuevo.perfiles)
{ {
count++; if (pxu != null)
//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); 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) if (existe != null)
@ -856,49 +811,22 @@ namespace MSAdminUsuarios.Controllers
//Si existe activamos estado 1 del perfil //Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PFLXUSU = 1; existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe); _context.Update(existe);
_context.SaveChanges(); await _context.SaveChangesAsync();
} }
else else
{
if (pxu == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Perfil por usuario #{count} sin valores");
} else
{ {
pxu.BL_ESTADO_PFLXUSU = 1; pxu.BL_ESTADO_PFLXUSU = 1;
pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS; pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS;
_context.PERFILESPORUSUARIOs.Add(pxu); _context.PERFILESPORUSUARIOs.Add(pxu);
_context.SaveChanges(); await _context.SaveChangesAsync();
}
}
} }
} /*List<PERFILPORUSUARIO> perUsuEliminiado = _context.PERFILESPORUSUARIOs.Where(pu => pu.TX_UUID_USUMS == creado.TX_UUID_USUMS && pu.BL_ESTADO_PFLXUSU == 0).ToList();
}
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); _context.PERFILESPORUSUARIOs.RemoveRange(perUsuEliminiado);
_context.SaveChanges(); 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(); transaccion.Commit();

View File

@ -57,7 +57,7 @@ builder.Services.AddDbContext<ModelContext>(options =>
#region Config: RabbitMQ #region Config: RabbitMQ
//Get config desde appsettings.json //Get config desde appsettings.json
builder.Services.Configure<RabbitMQConfig>(builder.Configuration.GetSection("RabbitMQConfig")); /*builder.Services.Configure<RabbitMQConfig>(builder.Configuration.GetSection("RabbitMQConfig"));
builder.Services.AddSingleton<IConnection>(sp => builder.Services.AddSingleton<IConnection>(sp =>
{ {
@ -77,7 +77,7 @@ builder.Services.AddScoped<IModel>(provider =>
{ {
// Creaci<63>n de channel, declaraci<63>n de queues y binding // Creaci<63>n de channel, declaraci<63>n de queues y binding
return RabbitMQService.GetRabbitMQChannel(provider, projectName); return RabbitMQService.GetRabbitMQChannel(provider, projectName);
}); });*/
#endregion #endregion
@ -126,11 +126,11 @@ app.MapControllers();
#endregion #endregion
using (var scope = app.Services.CreateScope()) /*using (var scope = app.Services.CreateScope())
{ {
// Inicializar el canal - Crea lo necesario en Rabbit antes de subscribirse // Inicializar el canal - Crea lo necesario en Rabbit antes de subscribirse
var channel = scope.ServiceProvider.GetRequiredService<RabbitMQ.Client.IModel>(); var channel = scope.ServiceProvider.GetRequiredService<RabbitMQ.Client.IModel>();
} }*/
// Start and Subscribe to RabbitMQ event // Start and Subscribe to RabbitMQ event
RabbitMQService.ListenForIntegrationEvents(projectName, builder); RabbitMQService.ListenForIntegrationEvents(projectName, builder);

View File

@ -73,7 +73,8 @@ namespace MSAdminUsuarios.Utils
var exchangeName = projectName; var exchangeName = projectName;
Exchange = exchangeName; Exchange = exchangeName;
ListaExchanges.ForEach(ex => { ListaExchanges.ForEach(ex =>
{
channel.ExchangeDeclare( channel.ExchangeDeclare(
exchange: ex.exchange, exchange: ex.exchange,
type: ExchangeType.Topic, type: ExchangeType.Topic,
@ -82,7 +83,8 @@ namespace MSAdminUsuarios.Utils
arguments: null arguments: null
); );
ex.queues.ForEach(q => { ex.queues.ForEach(q =>
{
string queue = $"{ex.exchange}.{q}"; string queue = $"{ex.exchange}.{q}";
channel.QueueDeclare( channel.QueueDeclare(
@ -169,7 +171,7 @@ namespace MSAdminUsuarios.Utils
ModelContext context = new(); ModelContext context = new();
if (controller[1] == "PerfilesPorUsuario") /*if (controller[1] == "PerfilesPorUsuario")
{ {
try try
{ {
@ -177,7 +179,7 @@ namespace MSAdminUsuarios.Utils
var PPUCtrl = new PerfilesPorUsuarioController(context); var PPUCtrl = new PerfilesPorUsuarioController(context);
var result = await PPUCtrl.GuardarPerfilesPorUsuario(data!); var result = await PPUCtrl.GuardarPerfilesPorUsuario(data!);
logger.LogWarning(20,result.ToString()); logger.LogWarning(20, result.ToString());
if (result is OkResult) if (result is OkResult)
@ -220,7 +222,7 @@ namespace MSAdminUsuarios.Utils
} }
if (controller[2] == "patch") if (controller[2] == "patch")
{ {
if(controller.Length == 3) if (controller.Length == 3)
{ {
var data = JsonConvert.DeserializeObject<USUARIO>(message); var data = JsonConvert.DeserializeObject<USUARIO>(message);
IActionResult result = await UsuariosCtrl.EditarUsuarios(data!); IActionResult result = await UsuariosCtrl.EditarUsuarios(data!);
@ -256,7 +258,7 @@ namespace MSAdminUsuarios.Utils
model.BasicAck(ea.DeliveryTag, false); model.BasicAck(ea.DeliveryTag, false);
} }
return; return;
} }*/
} }