Ajuste de perfiles
This commit is contained in:
parent
b244307904
commit
33b9913d72
@ -1,5 +1,8 @@
|
||||
using MSAdminUsuarios.Context;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using MSAdminUsuarios.Dto;
|
||||
using MSAdminUsuarios.Models;
|
||||
|
||||
namespace MSAdminUsuarios.Controllers
|
||||
{
|
||||
@ -85,6 +88,116 @@ namespace MSAdminUsuarios.Controllers
|
||||
return BadRequest(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
[HttpPost("PerfilPermisos")]
|
||||
public async Task<IActionResult> PostPerfilPermisos(PerfilPermisosDTO 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("InicioCreacionPerfilPermisos");
|
||||
|
||||
if (nuevo.perfil == null)
|
||||
{
|
||||
_errorModel.error = true;
|
||||
_errorModel.cuerpo.Add("Sin perfil a guardar.");
|
||||
return Conflict(_errorModel);
|
||||
}
|
||||
|
||||
if (nuevo.perfil.TX_UUID_PFL == null)
|
||||
{
|
||||
Guid uuid = Guid.NewGuid();
|
||||
var UUID = uuid.ToString();
|
||||
nuevo.perfil.TX_UUID_PFL = UUID;
|
||||
|
||||
_context.PERFILESMs.Add(nuevo.perfil);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
else
|
||||
{
|
||||
PERFIL? existe = _context.PERFILESMs.FirstOrDefault(prfl => prfl.TX_UUID_PFL == nuevo.perfil.TX_UUID_PFL);
|
||||
if (existe == null)
|
||||
{
|
||||
_errorModel.error = true;
|
||||
_errorModel.cuerpo.Add("El perfil no existe.");
|
||||
return Conflict(_errorModel);
|
||||
}
|
||||
|
||||
existe.TX_PERFIL_PFL = nuevo.perfil.TX_PERFIL_PFL;
|
||||
existe.NU_ROL_PFL = nuevo.perfil.NU_ROL_PFL;
|
||||
existe.BL_ESTADO_PFL = nuevo.perfil.BL_ESTADO_PFL;
|
||||
|
||||
_context.PERFILESMs.Update(existe);
|
||||
_context.SaveChanges();
|
||||
}
|
||||
|
||||
// TODO: Validacion agregada mientras se aclara el proceso
|
||||
|
||||
PERFIL? creado = await _context.PERFILESMs.FirstOrDefaultAsync(prfl => prfl.TX_UUID_PFL == nuevo.perfil.TX_UUID_PFL);
|
||||
|
||||
if (nuevo.permisos != null)
|
||||
{
|
||||
// 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)
|
||||
{
|
||||
permiso.BL_ESTADO_PMS = 0;
|
||||
_context.PERMISOSMs.Update(permiso);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
foreach (var pxp in nuevo.permisos)
|
||||
{
|
||||
PERMISO? existe = _context.PERMISOSMs.FirstOrDefault(pm => pm.NU_FK_PFL == pxp.NU_FK_PFL && pm.NU_FK_MS == pxp.NU_FK_MS);
|
||||
|
||||
if (existe != null)
|
||||
{
|
||||
//Si existe activamos estado 1 del perfil
|
||||
existe.BL_ESTADO_PMS = 1;
|
||||
_context.Update(existe);
|
||||
await _context.SaveChangesAsync();
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pxp == null)
|
||||
{
|
||||
_errorModel.error = true;
|
||||
_errorModel.cuerpo.Add($"Permiso sin valores");
|
||||
continue;
|
||||
}
|
||||
|
||||
pxp.BL_ESTADO_PMS = 1;
|
||||
pxp.NU_FK_PFL = creado.NU_PK_PFL;
|
||||
_context.PERMISOSMs.Add(pxp);
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
transaccion.Commit();
|
||||
|
||||
_errorModel.error = false;
|
||||
_errorModel.cuerpo.Add("Perfil creado correctamente");
|
||||
return Ok(_errorModel);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
transaccion.RollbackToSavepoint("InicioCreacionPerfilPermisos");
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user