From 376733e3e7f6f903269f9ed5f461726c598018e0 Mon Sep 17 00:00:00 2001 From: "Dario F. Gomez Z" Date: Mon, 15 Jul 2024 08:01:51 -0500 Subject: [PATCH] Inhabilita rabbit y se ajusta asociar perfiles con permisos --- .../Controllers/MicroserviciosController.cs | 2 +- .../Controllers/PerfilesController.cs | 93 ++++++----- .../Controllers/UsuariosController.cs | 156 +++++------------- Microservicios/MsUsuarios/Program.cs | 8 +- .../MsUsuarios/Utils/RabbitMQService.cs | 20 ++- 5 files changed, 113 insertions(+), 166 deletions(-) diff --git a/Microservicios/MsUsuarios/Controllers/MicroserviciosController.cs b/Microservicios/MsUsuarios/Controllers/MicroserviciosController.cs index cda5489..12c160d 100644 --- a/Microservicios/MsUsuarios/Controllers/MicroserviciosController.cs +++ b/Microservicios/MsUsuarios/Controllers/MicroserviciosController.cs @@ -22,7 +22,7 @@ namespace MSAdminUsuarios.Controllers { /*var consulta = from dm in _context.MICROSERVICIOs select dm;*/ - List microservicios = await _context.MICROSERVICIOs.OrderBy(m => m.TX_SECCION_MS).ToListAsync(); + List microservicios = await _context.MICROSERVICIOs.OrderBy(m => m.NU_PK_MS).ToListAsync(); return Ok(microservicios); } catch (Exception ex) diff --git a/Microservicios/MsUsuarios/Controllers/PerfilesController.cs b/Microservicios/MsUsuarios/Controllers/PerfilesController.cs index f075266..8996369 100644 --- a/Microservicios/MsUsuarios/Controllers/PerfilesController.cs +++ b/Microservicios/MsUsuarios/Controllers/PerfilesController.cs @@ -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 permisosOrdenados = nuevo.permisos.OrderBy(p => p.NU_FK_MS).ToList(); // Se cambia a estado 0 todos los perfiles por usuario existentes - List 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 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 permisosEliminados = _context.PERMISOSMs.Where(pm => pm.NU_FK_PFL == creado.NU_PK_PFL && pm.BL_ESTADO_PMS == 0).ToList(); + /*List 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();*/ } diff --git a/Microservicios/MsUsuarios/Controllers/UsuariosController.cs b/Microservicios/MsUsuarios/Controllers/UsuariosController.cs index 7e06219..6245538 100644 --- a/Microservicios/MsUsuarios/Controllers/UsuariosController.cs +++ b/Microservicios/MsUsuarios/Controllers/UsuariosController.cs @@ -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 perUsuEliminiado = _context.PERFILESPORUSUARIOs.Where(pu => pu.TX_UUID_USUMS == creado.TX_UUID_USUMS && pu.BL_ESTADO_PFLXUSU == 0).ToList(); + + /*List 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 all = new List(); - - 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 perUsuEliminiado = _context.PERFILESPORUSUARIOs.Where(pu => pu.TX_UUID_USUMS == creado.TX_UUID_USUMS && pu.BL_ESTADO_PFLXUSU == 0).ToList(); + + /*List 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 all = new List(); - - 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(); diff --git a/Microservicios/MsUsuarios/Program.cs b/Microservicios/MsUsuarios/Program.cs index 6f94a7b..8895e2a 100644 --- a/Microservicios/MsUsuarios/Program.cs +++ b/Microservicios/MsUsuarios/Program.cs @@ -57,7 +57,7 @@ builder.Services.AddDbContext(options => #region Config: RabbitMQ //Get config desde appsettings.json -builder.Services.Configure(builder.Configuration.GetSection("RabbitMQConfig")); +/*builder.Services.Configure(builder.Configuration.GetSection("RabbitMQConfig")); builder.Services.AddSingleton(sp => { @@ -77,7 +77,7 @@ builder.Services.AddScoped(provider => { // Creaci�n de channel, declaraci�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(); -} +}*/ // Start and Subscribe to RabbitMQ event RabbitMQService.ListenForIntegrationEvents(projectName, builder); diff --git a/Microservicios/MsUsuarios/Utils/RabbitMQService.cs b/Microservicios/MsUsuarios/Utils/RabbitMQService.cs index eb42176..034ab48 100644 --- a/Microservicios/MsUsuarios/Utils/RabbitMQService.cs +++ b/Microservicios/MsUsuarios/Utils/RabbitMQService.cs @@ -48,7 +48,7 @@ namespace MSAdminUsuarios.Utils { exchange = Exchange, queues = { MQueues.PerfilesPorUsuario, MQueues.Usuarios } - + }; private static readonly List 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(message); IActionResult result = await UsuariosCtrl.EditarUsuarios(data!); @@ -256,7 +258,7 @@ namespace MSAdminUsuarios.Utils model.BasicAck(ea.DeliveryTag, false); } return; - } + }*/ }