[add] creo nuevo metodo para crear-editar usuarios con perfil para que retorne el usuario creado o editado
This commit is contained in:
parent
f66613abbb
commit
e7e78fa51f
@ -728,6 +728,193 @@ namespace MSAdminUsuarios.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost("UsuarioPerfilesRetorno")]
|
||||||
|
public async Task<IActionResult> PostUsuarioPerfilesRetorno(UsuarioPerfilesDTO 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("InicioCreacionUsuarioPerfiles");
|
||||||
|
|
||||||
|
if (nuevo.usuario == null)
|
||||||
|
{
|
||||||
|
_errorModel.error = true;
|
||||||
|
_errorModel.cuerpo.Add("Sin usuario a guardar.");
|
||||||
|
return Conflict(_errorModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nuevo.usuario.TX_CORREO_USUMS == null && nuevo.usuario.TX_LOGINNAME_USUMS == null)
|
||||||
|
{
|
||||||
|
_errorModel.error = true;
|
||||||
|
_errorModel.cuerpo.Add("Indique algún correo.");
|
||||||
|
return Conflict(_errorModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nuevo.usuario.TX_UUID_USUMS == null)
|
||||||
|
{
|
||||||
|
Guid uuid = Guid.NewGuid();
|
||||||
|
var UUID = uuid.ToString();
|
||||||
|
nuevo.usuario.TX_UUID_USUMS = UUID;
|
||||||
|
|
||||||
|
if (nuevo.usuario.TX_PASSWORD_USUMS == null)
|
||||||
|
{
|
||||||
|
nuevo.usuario.TX_PASSWORD_USUMS = nuevo.usuario.TX_PKDOC_USUMS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nuevo.usuario.TX_PASSWORD_USUMS != null)
|
||||||
|
{
|
||||||
|
nuevo.usuario.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PASSWORD_USUMS);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nuevo.usuario.TX_SEDES_USUMS == null || nuevo.usuario.TX_SEDES_USUMS.Length == 0)
|
||||||
|
{
|
||||||
|
nuevo.usuario.TX_SEDES_USUMS = "[0]";
|
||||||
|
}
|
||||||
|
|
||||||
|
_context.USUARIOSMs.Add(nuevo.usuario);
|
||||||
|
await _context.SaveChangesAsync();
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USUARIO? existe = _context.USUARIOSMs.FirstOrDefault(usu => usu.TX_UUID_USUMS == nuevo.usuario.TX_UUID_USUMS);
|
||||||
|
if (existe == null)
|
||||||
|
{
|
||||||
|
_errorModel.error = true;
|
||||||
|
_errorModel.cuerpo.Add("Sin usuario no existe.");
|
||||||
|
return Conflict(_errorModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
existe.NU_TIPODOC_USUMS = nuevo.usuario.NU_TIPODOC_USUMS;
|
||||||
|
existe.TX_PRIMERNOM_USUMS = nuevo.usuario.TX_PRIMERNOM_USUMS;
|
||||||
|
existe.TX_SEGUNDONOM_USUMS = nuevo.usuario.TX_SEGUNDONOM_USUMS;
|
||||||
|
existe.TX_PRIMERAPELL_USUMS = nuevo.usuario.TX_PRIMERAPELL_USUMS;
|
||||||
|
existe.TX_SEGUNDOAPELL_USUMS = nuevo.usuario.TX_SEGUNDOAPELL_USUMS;
|
||||||
|
existe.TX_CELULAR_USUMS = nuevo.usuario.TX_CELULAR_USUMS;
|
||||||
|
existe.TX_TELEFONO_USUMS = nuevo.usuario.TX_TELEFONO_USUMS;
|
||||||
|
existe.TX_CORREO_USUMS = nuevo.usuario.TX_CORREO_USUMS;
|
||||||
|
existe.TX_DIRECCION_USUMS = nuevo.usuario.TX_DIRECCION_USUMS;
|
||||||
|
existe.BL_PERTENCEIPS_USUMS = nuevo.usuario.BL_PERTENCEIPS_USUMS;
|
||||||
|
existe.TX_NOMBRE_PVD = nuevo.usuario.TX_NOMBRE_PVD;
|
||||||
|
existe.BL_VIENELDAP_USUMS = nuevo.usuario.BL_VIENELDAP_USUMS;
|
||||||
|
existe.NU_GRUPO_USUMS = nuevo.usuario.NU_GRUPO_USUMS;
|
||||||
|
existe.NU_CARGO_USUMS = nuevo.usuario.NU_CARGO_USUMS;
|
||||||
|
existe.NU_MODALIDADCTT_USUMS = nuevo.usuario.NU_MODALIDADCTT_USUMS;
|
||||||
|
existe.TX_SEDES_USUMS = nuevo.usuario.TX_SEDES_USUMS;
|
||||||
|
existe.NU_BLOQUEO_USUMS = nuevo.usuario.NU_BLOQUEO_USUMS;
|
||||||
|
existe.NU_TIPOUSUARIO_USUMS = nuevo.usuario.NU_TIPOUSUARIO_USUMS;
|
||||||
|
existe.TX_REGPROF_MDC = nuevo.usuario.TX_REGPROF_MDC;
|
||||||
|
|
||||||
|
if (existe.TX_PASSWORD_USUMS == null || existe.TX_PASSWORD_USUMS == "")
|
||||||
|
{
|
||||||
|
existe.TX_PASSWORD_USUMS = _encript.EncryptPwd(nuevo.usuario.TX_PKDOC_USUMS!);
|
||||||
|
}
|
||||||
|
|
||||||
|
_context.USUARIOSMs.Update(existe);
|
||||||
|
_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();
|
||||||
|
|
||||||
|
foreach (var pu in existe_plfxusu)
|
||||||
|
{
|
||||||
|
pu.BL_ESTADO_PFLXUSU = 0;
|
||||||
|
}
|
||||||
|
_context.PERFILESPORUSUARIOs.UpdateRange(existe_plfxusu);
|
||||||
|
_context.SaveChanges();
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
//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();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
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();
|
||||||
|
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
_errorModel.error = false;
|
||||||
|
_errorModel.cuerpo.Add("Usuario creado correctamente");
|
||||||
|
return Ok(creado);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
transaccion.RollbackToSavepoint("InicioCreacionUsuarioPerfiles");
|
||||||
|
return BadRequest(e.Message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user