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
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);
}
catch (Exception ex)

View File

@ -120,7 +120,6 @@ namespace MSAdminUsuarios.Controllers
Guid uuid = Guid.NewGuid();
var UUID = uuid.ToString();
nuevo.perfil.TX_UUID_PFL = UUID;
_context.PERFILESMs.Add(nuevo.perfil);
await _context.SaveChangesAsync();
}
@ -139,61 +138,79 @@ namespace MSAdminUsuarios.Controllers
existe.BL_ESTADO_PFL = nuevo.perfil.BL_ESTADO_PFL;
_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 && creado != null)
if (nuevo.permisos != null && perfilCreado != 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
List<PERMISO> permisos = _context.PERMISOSMs.Where(x => x.BL_ESTADO_PMS == 1 && x.NU_FK_PFL == creado.NU_PK_PFL).ToList();
foreach (var permiso in permisos)
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 permisosExistentes)
{
permiso.BL_ESTADO_PMS = 0;
//_context.PERMISOSMs.Update(permiso);
//await _context.SaveChangesAsync();
}
_context.PERMISOSMs.UpdateRange(permisos);
_context.SaveChanges();
foreach (var pxp in nuevo.permisos)
_context.PERMISOSMs.UpdateRange(permisosExistentes);
await _context.SaveChangesAsync();
// Se recorre los nuevos permisos ordenados por FK_MS
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 (existe != null)
if (permiso != null)
{
//Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PMS = 1;
_context.Update(existe);
_context.SaveChanges();
//continue;
}
else
{
if (pxp == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Permiso sin valores");
//continue;
} else
MICROSERVICIO? msSeleccionado = _context.MICROSERVICIOs.FirstOrDefault(m => m.NU_PK_MS == permiso.NU_FK_MS);
if (msSeleccionado != null)
{
if (msSeleccionado.NU_PADRE_MS != null)
{
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
{
PERMISO nuevoPermisoPadre = new PERMISO
{
NU_PK_PMS = idxPermisoNuevo,
NU_FK_PFL = perfilCreado.NU_PK_PFL,
NU_FK_MS = msSeleccionado.NU_PADRE_MS,
BL_ESTADO_PMS = 1
};
_context.PERMISOSMs.Add(nuevoPermisoPadre);
await _context.SaveChangesAsync();
idxPermisoNuevo--;
}
}
pxp.BL_ESTADO_PMS = 1;
pxp.NU_FK_PFL = creado.NU_PK_PFL;
_context.PERMISOSMs.Add(pxp);
_context.SaveChanges();
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;
_context.Update(existe);
await _context.SaveChangesAsync();
}
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.SaveChanges();
await _context.SaveChangesAsync();*/
}

View File

@ -23,12 +23,11 @@ namespace MSAdminUsuarios.Controllers
{
private readonly ModelContext _context;
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;
_channel = channel;
_context = context;
}
//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))
{
using (_channel)
/*using (_channel)
{
var medico = new MedicoDto()
{
@ -334,7 +333,7 @@ namespace MSAdminUsuarios.Controllers
routingKey: $"{exchange}.{MQueues.medico}.patch",
message: jsonMedico
);
}
}*/
}
@ -633,17 +632,13 @@ namespace MSAdminUsuarios.Controllers
}
_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);
if (nuevo.perfiles != null && creado!=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 == creado.TX_UUID_USUMS).ToList();
@ -652,66 +647,34 @@ namespace MSAdminUsuarios.Controllers
pu.BL_ESTADO_PFLXUSU = 0;
}
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
_context.SaveChanges();
await _context.SaveChangesAsync();
foreach (var pxu in nuevo.perfiles)
foreach (PERFILPORUSUARIO 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)
if (pxu != null)
{
//Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe);
_context.SaveChanges();
}
else
{
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)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Perfil por usuario #{count} sin valores");
} else
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);
_context.SaveChanges();
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();
/*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.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();
@ -823,14 +786,10 @@ namespace MSAdminUsuarios.Controllers
_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);
if (nuevo.perfiles != null && creado!=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 == creado.TX_UUID_USUMS).ToList();
@ -839,66 +798,35 @@ namespace MSAdminUsuarios.Controllers
pu.BL_ESTADO_PFLXUSU = 0;
}
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
_context.SaveChanges();
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)
if (pxu != null)
{
//Si existe activamos estado 1 del perfil
existe.BL_ESTADO_PFLXUSU = 1;
_context.Update(existe);
_context.SaveChanges();
}
else
{
if (pxu == null)
{
_errorModel.error = true;
_errorModel.cuerpo.Add($"Perfil por usuario #{count} sin valores");
} else
{
pxu.BL_ESTADO_PFLXUSU = 1;
pxu.TX_UUID_USUMS = nuevo.usuario.TX_UUID_USUMS;
_context.PERFILESPORUSUARIOs.Add(pxu);
_context.SaveChanges();
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();
}
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();
/*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.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();

View File

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

View File

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