2023-02-02 10:50:02 -05:00
|
|
|
|
using MSAdminUsuarios.Context;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Data.SqlClient;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Transactions;
|
2024-06-15 11:02:19 -05:00
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
|
|
|
|
namespace MSAdminUsuarios.Controllers
|
|
|
|
|
{
|
|
|
|
|
[ApiController]
|
|
|
|
|
[Route("[controller]")]
|
|
|
|
|
public class PermisosController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
private readonly ModelContext _context;
|
|
|
|
|
|
|
|
|
|
public PermisosController(ModelContext context)
|
|
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<IActionResult> GetPermisos()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
2024-06-15 11:02:19 -05:00
|
|
|
|
List<PERMISO> consulta = await _context.PERMISOSMs.ToListAsync();
|
|
|
|
|
|
|
|
|
|
//var consulta = from dm in _context.PERMISOSMs
|
|
|
|
|
// select dm;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
|
|
|
|
return Ok(consulta);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
return BadRequest(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<IActionResult> GuardarPermisos(PERMISO[] guardar)
|
|
|
|
|
{
|
|
|
|
|
using (var dbContextTransaction = _context.Database.BeginTransaction())
|
|
|
|
|
{
|
|
|
|
|
List<string> error = new List<string>(); //Inicializamos variable para guardar errores
|
|
|
|
|
var count = 0;
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
// Se cambia a estado 0 todos los perfiles por usuario existentes
|
|
|
|
|
var existe_pms_c = _context.PERMISOSMs.Where(x => x.BL_ESTADO_PMS == 1 && x.NU_FK_PFL == guardar[0].NU_FK_PFL).ToList();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var cu in existe_pms_c)
|
|
|
|
|
{
|
|
|
|
|
cu.BL_ESTADO_PMS = 0;
|
|
|
|
|
_context.PERMISOSMs.Update(cu);
|
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var pms in guardar)
|
|
|
|
|
{
|
|
|
|
|
count++;
|
|
|
|
|
//Se comprueba existencia de cada permiso en base de datos
|
2024-06-06 10:56:01 -05:00
|
|
|
|
/*var existe_pms = (from dm in _context.PERMISOSMs
|
2023-02-02 10:50:02 -05:00
|
|
|
|
where dm.NU_FK_PFL == pms.NU_FK_PFL
|
|
|
|
|
&& dm.NU_FK_MS == pms.NU_FK_MS
|
2024-06-06 10:56:01 -05:00
|
|
|
|
select dm).ToList();*/
|
|
|
|
|
PERMISO? existe = _context.PERMISOSMs.FirstOrDefault(prm => prm.NU_FK_PFL == pms.NU_FK_PFL && prm.NU_FK_MS == pms.NU_FK_MS);
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2024-06-06 10:56:01 -05:00
|
|
|
|
//if (existe_pms.Count() > 0)
|
|
|
|
|
if (existe != null)
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
|
|
|
|
//Si existe activamos estado 1 del perfil
|
2024-06-06 10:56:01 -05:00
|
|
|
|
existe.BL_ESTADO_PMS = 1;
|
|
|
|
|
//_context.Update(existe_pms[0]);
|
|
|
|
|
_context.Update(existe);
|
2023-02-02 10:50:02 -05:00
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
if (pms == null)
|
|
|
|
|
{
|
|
|
|
|
error.Add($"Perfil por usuario #{count} sin valores");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//Se valida si el permiso a guardar tiene asignado microservicio padre o hijo
|
2024-06-06 10:56:01 -05:00
|
|
|
|
/*var validar_ms_hijo = (from dm in _context.MICROSERVICIOs
|
2023-02-02 10:50:02 -05:00
|
|
|
|
where dm.NU_PK_MS == pms.NU_FK_MS
|
|
|
|
|
&& dm.NU_PADRE_MS != null
|
2024-06-06 10:56:01 -05:00
|
|
|
|
select dm).ToList();*/
|
|
|
|
|
MICROSERVICIO? validar_ms_hijo = _context.MICROSERVICIOs.FirstOrDefault(m => m.NU_PK_MS == pms.NU_FK_MS && m.NU_PADRE_MS != null);
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2024-06-06 10:56:01 -05:00
|
|
|
|
//if (validar_ms_hijo.Count() > 0)
|
|
|
|
|
if (validar_ms_hijo != null)
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
2024-06-06 10:56:01 -05:00
|
|
|
|
/*var existe_permiso_padre = (from dm in _context.PERMISOSMs
|
2023-02-02 10:50:02 -05:00
|
|
|
|
where dm.NU_FK_MS == validar_ms_hijo[0].NU_PADRE_MS
|
|
|
|
|
&& dm.NU_FK_PFL == pms.NU_FK_PFL
|
2024-06-06 10:56:01 -05:00
|
|
|
|
select dm).ToList();*/
|
|
|
|
|
PERMISO? existe_permiso_padre = _context.PERMISOSMs.FirstOrDefault(m => m.NU_FK_MS == validar_ms_hijo.NU_PADRE_MS && m.NU_FK_PFL == pms.NU_FK_PFL);
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2024-06-06 10:56:01 -05:00
|
|
|
|
//if (existe_permiso_padre.Count() > 0)
|
|
|
|
|
if (existe_permiso_padre != null)
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
2024-06-06 10:56:01 -05:00
|
|
|
|
existe_permiso_padre.BL_ESTADO_PMS = 1;
|
|
|
|
|
_context.Update(existe_permiso_padre);
|
|
|
|
|
await _context.SaveChangesAsync();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
PERMISO padre = new PERMISO
|
|
|
|
|
{
|
|
|
|
|
NU_PK_PMS = count * (-1),
|
|
|
|
|
NU_FK_PFL = pms.NU_FK_PFL,
|
2024-06-06 10:56:01 -05:00
|
|
|
|
//NU_FK_MS = validar_ms_hijo[0].NU_PADRE_MS,
|
|
|
|
|
NU_FK_MS = validar_ms_hijo.NU_PADRE_MS,
|
2023-02-02 10:50:02 -05:00
|
|
|
|
BL_ESTADO_PMS = 1,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
_context.Add(padre);
|
2024-06-06 10:56:01 -05:00
|
|
|
|
await _context.SaveChangesAsync();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pms.BL_ESTADO_PMS = 1;
|
|
|
|
|
_context.PERMISOSMs.Add(pms);
|
|
|
|
|
await _context.SaveChangesAsync();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
dbContextTransaction.Commit();
|
|
|
|
|
|
|
|
|
|
List<string> all = new List<string>();
|
|
|
|
|
|
|
|
|
|
all.Add($"Total registros: {guardar.Count().ToString()}");
|
|
|
|
|
all.Add($"Exitosos: {(guardar.Count() - error.Count()).ToString()}");
|
|
|
|
|
all.Add($"Erroneos: {error.Count().ToString()}");
|
|
|
|
|
|
|
|
|
|
var flag_r = 0;
|
|
|
|
|
foreach (var r in error)
|
|
|
|
|
{
|
|
|
|
|
flag_r++;
|
|
|
|
|
all.Add($"Error #{flag_r}: {r}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (error.Count() > 0)
|
|
|
|
|
{
|
|
|
|
|
return Conflict(all.ToList());
|
|
|
|
|
}
|
|
|
|
|
return Ok();
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
//hacemos rollback si hay excepción
|
|
|
|
|
dbContextTransaction.Rollback();
|
|
|
|
|
return BadRequest(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|