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;
|
2023-03-15 15:57:59 -05:00
|
|
|
|
using Microsoft.EntityFrameworkCore.Storage;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
|
|
|
|
namespace MSAdminUsuarios.Controllers
|
|
|
|
|
{
|
|
|
|
|
[ApiController]
|
|
|
|
|
[Route("[controller]")]
|
|
|
|
|
public class PerfilesPorUsuarioController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
private readonly ModelContext _context;
|
|
|
|
|
|
2023-03-15 15:57:59 -05:00
|
|
|
|
//public PerfilesPorUsuarioController()
|
|
|
|
|
//{
|
|
|
|
|
//}
|
|
|
|
|
|
2023-02-02 10:50:02 -05:00
|
|
|
|
public PerfilesPorUsuarioController(ModelContext context)
|
|
|
|
|
{
|
|
|
|
|
_context = context;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
|
public async Task<IActionResult> GetPerfilesPorUsuario()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var consulta = from dm in _context.PERFILESPORUSUARIOs
|
|
|
|
|
where dm.BL_ESTADO_PFLXUSU > 0
|
|
|
|
|
select dm;
|
|
|
|
|
|
|
|
|
|
return Ok(consulta);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
return BadRequest(ex);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<IActionResult> GuardarPerfilesPorUsuario(PERFILPORUSUARIO[] guardar)
|
|
|
|
|
{
|
2023-03-15 15:57:59 -05:00
|
|
|
|
using var dbContextTransaction = _context.Database.BeginTransaction();
|
2023-03-21 09:28:53 -05:00
|
|
|
|
List<string> error = new(); //Inicializamos variable para guardar errores
|
2023-03-15 15:57:59 -05:00
|
|
|
|
try
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
2023-03-21 09:28:53 -05:00
|
|
|
|
//var error = await GuardarPerfiles(guardar, _context);
|
2023-03-15 15:57:59 -05:00
|
|
|
|
|
|
|
|
|
var count = 0;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-03-15 15:57:59 -05:00
|
|
|
|
// Se cambia a estado 0 todos los perfiles por usuario existentes
|
2023-03-21 09:28:53 -05:00
|
|
|
|
var existe_plfxusu = _context.PERFILESPORUSUARIOs.Where(x => x.BL_ESTADO_PFLXUSU == 1 && x.TX_FKDOC_USUMS == guardar[0].TX_FKDOC_USUMS).ToList();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-03-15 15:57:59 -05:00
|
|
|
|
foreach (var cu in existe_plfxusu)
|
|
|
|
|
{
|
|
|
|
|
cu.BL_ESTADO_PFLXUSU = 0;
|
2023-03-21 09:28:53 -05:00
|
|
|
|
_context.PERFILESPORUSUARIOs.Update(cu);
|
|
|
|
|
await _context.SaveChangesAsync();
|
2023-03-15 15:57:59 -05:00
|
|
|
|
}
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-03-15 15:57:59 -05:00
|
|
|
|
foreach (var pxu in guardar)
|
|
|
|
|
{
|
|
|
|
|
count++;
|
|
|
|
|
//Se comprueba existencia de cada pxu en base de datos
|
2023-03-21 09:28:53 -05:00
|
|
|
|
var existe_pxu = (from dm in _context.PERFILESPORUSUARIOs
|
2023-03-15 15:57:59 -05:00
|
|
|
|
where dm.NU_FK_PFL == pxu.NU_FK_PFL
|
|
|
|
|
&& dm.TX_FKDOC_USUMS == pxu.TX_FKDOC_USUMS
|
|
|
|
|
select dm).ToList();
|
|
|
|
|
|
|
|
|
|
if (existe_pxu.Count() > 0)
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
2023-03-15 15:57:59 -05:00
|
|
|
|
//Si existe activamos estado 1 del perfil
|
|
|
|
|
existe_pxu[0].BL_ESTADO_PFLXUSU = 1;
|
2023-03-21 09:28:53 -05:00
|
|
|
|
_context.Update(existe_pxu[0]);
|
|
|
|
|
await _context.SaveChangesAsync();
|
2023-03-15 15:57:59 -05:00
|
|
|
|
continue;
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
2023-03-15 15:57:59 -05:00
|
|
|
|
else
|
2023-02-02 10:50:02 -05:00
|
|
|
|
{
|
2023-03-15 15:57:59 -05:00
|
|
|
|
if (pxu == null)
|
|
|
|
|
{
|
|
|
|
|
error.Add($"Perfil por usuario #{count} sin valores");
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pxu.BL_ESTADO_PFLXUSU = 1;
|
2023-03-21 09:28:53 -05:00
|
|
|
|
_context.PERFILESPORUSUARIOs.Add(pxu);
|
|
|
|
|
await _context.SaveChangesAsync();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 09:28:53 -05:00
|
|
|
|
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();
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
2023-03-21 09:28:53 -05:00
|
|
|
|
catch (Exception ex)
|
2023-03-15 15:57:59 -05:00
|
|
|
|
{
|
2023-03-21 09:28:53 -05:00
|
|
|
|
//hacemos rollback si hay excepción
|
|
|
|
|
dbContextTransaction.Rollback();
|
|
|
|
|
return BadRequest(ex.Message);
|
2023-03-15 15:57:59 -05:00
|
|
|
|
}
|
2023-03-21 09:28:53 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Eliminado 19/03/23, RabbitMQ lo controla
|
|
|
|
|
//[ApiExplorerSettings(IgnoreApi = true)]
|
|
|
|
|
//[NonAction]
|
|
|
|
|
//public async Task<List<string>> GuardarPerfiles(PERFILPORUSUARIO[] guardar, ModelContext context)
|
|
|
|
|
//{
|
|
|
|
|
// //using var transactionScope = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromSeconds(60));
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// List<string> error = new(); //Inicializamos variable para guardar errores
|
|
|
|
|
// 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_FKDOC_USUMS == guardar[0].TX_FKDOC_USUMS).ToList();
|
|
|
|
|
|
|
|
|
|
// foreach (var cu in existe_plfxusu)
|
|
|
|
|
// {
|
|
|
|
|
// cu.BL_ESTADO_PFLXUSU = 0;
|
|
|
|
|
// context.PERFILESPORUSUARIOs.Update(cu);
|
|
|
|
|
// await context.SaveChangesAsync();
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// foreach (var pxu in guardar)
|
|
|
|
|
// {
|
|
|
|
|
// count++;
|
|
|
|
|
// //Se comprueba existencia de cada pxu en base de datos
|
|
|
|
|
// var existe_pxu = (from dm in context.PERFILESPORUSUARIOs
|
|
|
|
|
// where dm.NU_FK_PFL == pxu.NU_FK_PFL
|
|
|
|
|
// && dm.TX_FKDOC_USUMS == pxu.TX_FKDOC_USUMS
|
|
|
|
|
// select dm).ToList();
|
|
|
|
|
|
|
|
|
|
// if (existe_pxu.Count() > 0)
|
|
|
|
|
// {
|
|
|
|
|
// //Si existe activamos estado 1 del perfil
|
|
|
|
|
// existe_pxu[0].BL_ESTADO_PFLXUSU = 1;
|
|
|
|
|
// context.Update(existe_pxu[0]);
|
|
|
|
|
// await context.SaveChangesAsync();
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// if (pxu == null)
|
|
|
|
|
// {
|
|
|
|
|
// error.Add($"Perfil por usuario #{count} sin valores");
|
|
|
|
|
// continue;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// pxu.BL_ESTADO_PFLXUSU = 1;
|
|
|
|
|
// context.PERFILESPORUSUARIOs.Add(pxu);
|
|
|
|
|
// await context.SaveChangesAsync();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// //transactionScope.Complete();
|
|
|
|
|
// return error;
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception)
|
|
|
|
|
// {
|
|
|
|
|
// //transactionScope.Dispose();
|
|
|
|
|
// throw;
|
|
|
|
|
// }
|
2023-03-15 15:57:59 -05:00
|
|
|
|
|
2023-02-02 10:50:02 -05:00
|
|
|
|
|
2023-03-21 09:28:53 -05:00
|
|
|
|
//}
|
2023-03-15 15:57:59 -05:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
2023-02-02 10:50:02 -05:00
|
|
|
|
}
|
|
|
|
|
|