diff --git a/Antifraude.Net/Antifraude.Net.sln b/Antifraude.Net/Antifraude.Net.sln
index d5626f1..afbca4a 100644
--- a/Antifraude.Net/Antifraude.Net.sln
+++ b/Antifraude.Net/Antifraude.Net.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.11.35431.28
+# Visual Studio Version 18
+VisualStudioVersion = 18.10.12210.168 stable
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "bdAntifraude", "bdAntifraude\bdAntifraude.csproj", "{B8C0C071-81ED-4265-86F0-169CB5A0C82E}"
EndProject
@@ -135,8 +135,8 @@ Global
{637125ED-E012-4DBA-BBB4-1607A3445172}.Debug|x64.Build.0 = Debug|Any CPU
{637125ED-E012-4DBA-BBB4-1607A3445172}.Debug|x86.ActiveCfg = Debug|Any CPU
{637125ED-E012-4DBA-BBB4-1607A3445172}.Debug|x86.Build.0 = Debug|Any CPU
- {637125ED-E012-4DBA-BBB4-1607A3445172}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {637125ED-E012-4DBA-BBB4-1607A3445172}.Release|Any CPU.Build.0 = Release|Any CPU
+ {637125ED-E012-4DBA-BBB4-1607A3445172}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {637125ED-E012-4DBA-BBB4-1607A3445172}.Release|Any CPU.Build.0 = Debug|Any CPU
{637125ED-E012-4DBA-BBB4-1607A3445172}.Release|x64.ActiveCfg = Release|Any CPU
{637125ED-E012-4DBA-BBB4-1607A3445172}.Release|x64.Build.0 = Release|Any CPU
{637125ED-E012-4DBA-BBB4-1607A3445172}.Release|x86.ActiveCfg = Release|Any CPU
@@ -147,8 +147,8 @@ Global
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Debug|x64.Build.0 = Debug|Any CPU
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Debug|x86.ActiveCfg = Debug|Any CPU
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Debug|x86.Build.0 = Debug|Any CPU
- {F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|Any CPU.ActiveCfg = Debug|Any CPU
+ {F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|Any CPU.Build.0 = Debug|Any CPU
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|x64.ActiveCfg = Release|Any CPU
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|x64.Build.0 = Release|Any CPU
{F2C2A0C4-FFA7-4B91-AB09-C1190680C96F}.Release|x86.ActiveCfg = Release|Any CPU
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/ContextosMySql.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/ContextosMySql.cs
new file mode 100644
index 0000000..b29a650
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/ContextosMySql.cs
@@ -0,0 +1,37 @@
+using bdAntifraudeMYSQL.dbcontext;
+
+namespace SwaggerAntifraudeMYSQL;
+
+///
+/// Selecciona por nombre una entrada de bdAntifraudeMYSQL.dbcontext.Conexion.
+/// La cadena de conexión sigue resolviéndose en la biblioteca MySQL existente.
+///
+public static class ContextosMySql
+{
+ private static string? _nombreConexion;
+
+ public static void Configurar(string? nombreConexion)
+ {
+ if (string.IsNullOrWhiteSpace(nombreConexion))
+ throw new InvalidOperationException("Falta MySql:NombreConexion en la configuración de SwaggerAntifraudeMYSQL.");
+
+ _nombreConexion = nombreConexion;
+ }
+
+ public static tsGestionAntifraude NuevoContexto(
+ bool SoloLectura = false,
+ bool Lazy = true,
+ bool ConEventoSavingChanges = true,
+ string aplicaciones = "")
+ {
+ var nombreConexion = _nombreConexion
+ ?? throw new InvalidOperationException("Configure MySql:NombreConexion antes de crear contextos.");
+
+ return tsGestionAntifraude.NuevoContexto(
+ NombreConexion: nombreConexion,
+ Lazy: Lazy,
+ SoloLectura: SoloLectura,
+ ConEventoSavingChanges: ConEventoSavingChanges,
+ aplicaciones: aplicaciones);
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ACTOSADMINPREPController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ACTOSADMINPREPController.cs
new file mode 100644
index 0000000..bb2b1c4
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ACTOSADMINPREPController.cs
@@ -0,0 +1,81 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class ACTOSADMINPREPController : GenericoController
+ {
+ public ACTOSADMINPREPController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("MotivosExtend/{idActo}")]
+ public async Task TiposExtend(int idActo)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var motAdmin = context.ACTOSADMINPREP.Include(v => v.IDMOTIVOADMINISTRATIVONavigation).Include(v => v.IDMOTIVOADMINISTRATIVONavigation.IDTIPOAPTOSNavigation).FirstOrDefault(p => p.IDACTOADMINISTRATIVO == idActo);
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.ACTOSADMINPREP.Where(deserializedExpression)
+ .Include(m => m.IDMOTIVOADMINISTRATIVONavigation)
+ .ThenInclude(aa => aa.IDTIPOAPTOSNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ADSCRIPCIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ADSCRIPCIONController.cs
new file mode 100644
index 0000000..a0cdab2
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ADSCRIPCIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class ADSCRIPCIONController : GenericoController
+ {
+ public ADSCRIPCIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ASCENDIENTESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ASCENDIENTESController.cs
new file mode 100644
index 0000000..7cb7374
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ASCENDIENTESController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class ASCENDIENTESController : GenericoController
+ {
+ public ASCENDIENTESController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AlmacenamientoController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AlmacenamientoController.cs
new file mode 100644
index 0000000..cffa15f
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AlmacenamientoController.cs
@@ -0,0 +1,69 @@
+using bdAntifraudeMYSQL.clases;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using SwaggerAntifraudeMYSQL.Models;
+using SwaggerAntifraudeMYSQL.Servicios;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class AlmacenamientoController : ControllerBase
+ {
+ private readonly ServicioAlmacenamiento _servicio = new ServicioAlmacenamiento();
+
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpPost("almacenar-fichero")]
+ public IActionResult AlmacenarFichero([FromBody] AlmacenaFicheroAtransmitir solicitud)
+ {
+ if (solicitud == null || string.IsNullOrEmpty(solicitud.Fichero))
+ return BadRequest("Solicitud inválida.");
+
+ var resultado = _servicio.DevolverResultadoAlmacenaFicheroAtransmitir(
+ solicitud.IdRegistro,
+ solicitud.Tabla,
+ solicitud.Fichero
+ );
+
+ if (resultado.Resultado == 0)
+ return Ok(resultado);
+
+ return StatusCode(500, resultado);
+ }
+
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpPost("obtener-fichero")]
+ public IActionResult ObtenerFichero(PeticionFichero solicitud)
+ {
+ if (string.IsNullOrEmpty(solicitud.Tabla) || solicitud.IdRegistro <= 0)
+ return BadRequest("Solicitud inválida. Asegúrese de enviar los parámetros requeridos.");
+
+ var resultado = _servicio.DevolverObtenFicheroAtransmitir(solicitud.IdRegistro, solicitud.Tabla, solicitud.Nif);
+
+ if (resultado.Resultado == 0)
+ {
+ // Devolver el archivo como un PDF descargable
+ return Ok(resultado);
+ }
+
+ return StatusCode(500, resultado);
+ }
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpPost("eliminar-fichero")]
+ public IActionResult EliminarFichero(PeticionFichero solicitud)
+ {
+ if (string.IsNullOrEmpty(solicitud.Tabla) || solicitud.IdRegistro <= 0)
+ return BadRequest("Solicitud inválida. Asegúrese de enviar los parámetros requeridos.");
+
+ var resultado = _servicio.EliminarFicheroAtransmitir(solicitud.IdRegistro, solicitud.Tabla, solicitud.Nif);
+
+ if (resultado.Resultado == 0)
+ {
+ // Devolver el archivo como un PDF descargable
+ return Ok(resultado);
+ }
+
+ return StatusCode(500, resultado);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AuthController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AuthController.cs
new file mode 100644
index 0000000..833220a
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/AuthController.cs
@@ -0,0 +1,256 @@
+using System.IdentityModel.Tokens.Jwt;
+using System.Net;
+using System.Security.Claims;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Text.Json;
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.IdentityModel.Tokens;
+using SwaggerAntifraudeMYSQL.DTOs;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class AuthController : ControllerBase
+ {
+ private readonly IConfiguration _configuration;
+
+ public AuthController(IConfiguration configuration)
+ {
+ _configuration = configuration;
+ }
+
+ [AllowAnonymous]
+ [HttpPost("login")]
+ public IActionResult Login([FromBody] LoginDto loginDto)
+ {
+ if (!ModelState.IsValid)
+ return BadRequest(ModelState);
+
+ var (token, persona) = AuthenticateUser(loginDto);
+
+ if (token == null)
+ return Unauthorized("Nombre de usuario o contraseña incorrectos.");
+
+ if (token.Equals("no autorizado"))
+ {
+ return Unauthorized("Usuario no autorizado");
+ }
+
+ return Ok(BuildLoginResponse(persona, token));
+ }
+
+ [AllowAnonymous]
+ [HttpGet("login-cert")]
+ public IActionResult LoginWithCertificateGet([FromQuery] bool iframe = false, [FromQuery] string? origen = null)
+ {
+ var clientCert = HttpContext.Connection.ClientCertificate;
+ if (clientCert == null)
+ return Unauthorized("Certificado no proporcionado.");
+
+ var dni = ObtenerDNI(clientCert);
+ if (string.IsNullOrWhiteSpace(dni))
+ return Unauthorized("No se pudo obtener un DNI válido del certificado.");
+
+ var result = AuthenticateCertificateDni(dni, origen);
+ if (result.Token == null || result.Persona == null)
+ return Unauthorized(result.Error ?? "No se pudo autenticar el certificado.");
+
+ if (iframe)
+ {
+ return Content(BuildIframeHtml(result.Token, result.Persona), "text/html; charset=utf-8");
+ }
+
+ return Ok(BuildLoginResponse(result.Persona, result.Token));
+ }
+
+ [AllowAnonymous]
+ [HttpPost("login-cert-proxy")]
+ public IActionResult LoginWithCertificateProxy([FromBody] CertificateProxyLoginDto request)
+ {
+ if (!EsPeticionLocal())
+ {
+ return Forbid();
+ }
+
+ if (string.IsNullOrWhiteSpace(request.Dni))
+ {
+ return BadRequest("Debe indicarse un DNI.");
+ }
+
+ var result = AuthenticateCertificateDni(request.Dni, request.Origen);
+ if (result.Token == null || result.Persona == null)
+ return Unauthorized(result.Error ?? "No se pudo autenticar el certificado.");
+
+ return Ok(BuildLoginResponse(result.Persona, result.Token));
+ }
+
+ private (string? Token, PERSONAS? Persona, string? Error) AuthenticateCertificateDni(string dni, string? origen)
+ {
+ using var context = ContextosMySql.NuevoContexto(SoloLectura: true);
+
+ dni = NormalizarDniCertificado(dni);
+
+ var persona = context.PERSONAS.FirstOrDefault(p => p.NIF == dni);
+ if (persona == null)
+ {
+ return (null, null, "Usuario no encontrado en la base de datos.");
+ }
+ if (string.Equals(origen, "Registro", StringComparison.OrdinalIgnoreCase)
+ && persona.ADMINISTRARPTYREGISTRO != true)
+ {
+ return (null, null, "Usuario no autorizado.");
+ }
+ var jwtToken = GenerateJwtToken(persona);
+ return (jwtToken, persona, null);
+ }
+
+ private string GenerateJwtToken(PERSONAS persona)
+ {
+ var jwtSettings = _configuration.GetSection("Jwt");
+ var key = Encoding.UTF8.GetBytes(jwtSettings["Key"]!);
+
+ var claims = new[]
+ {
+ new Claim(JwtRegisteredClaimNames.Sub, persona.NIF),
+ new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
+ new Claim(ClaimTypes.Role, persona.ADMINISTRARPTYREGISTRO == true ? "Supervisor" : "Lectura")
+ };
+
+ var tokenDescriptor = new SecurityTokenDescriptor
+ {
+ Subject = new ClaimsIdentity(claims),
+ Expires = DateTime.UtcNow.AddMinutes(double.Parse(jwtSettings["ExpiresInMinutes"]!)),
+ Issuer = jwtSettings["Issuer"],
+ Audience = jwtSettings["Audience"],
+ SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
+ };
+
+ var tokenHandler = new JwtSecurityTokenHandler();
+ var token = tokenHandler.CreateToken(tokenDescriptor);
+ return tokenHandler.WriteToken(token);
+ }
+
+ private static object BuildLoginResponse(PERSONAS persona, string token)
+ {
+ return new
+ {
+ Token = token,
+ User = new
+ {
+ persona.NIF,
+ persona.NOMBRE,
+ persona.APELLIDOS,
+ persona.ADMINISTRARPTYREGISTRO
+ }
+ };
+ }
+
+ private static string BuildIframeHtml(string token, PERSONAS persona)
+ {
+ var payload = JsonSerializer.Serialize(new
+ {
+ token,
+ user = new
+ {
+ persona.NIF,
+ persona.NOMBRE,
+ persona.APELLIDOS,
+ persona.ADMINISTRARPTYREGISTRO
+ }
+ });
+
+ return $@"
+
+ Autenticación Certificado
+
+
+
+";
+ }
+
+ private static string NormalizarDniCertificado(string dni)
+ {
+ var dniNormalizado = dni.Trim().ToUpperInvariant();
+
+ if (dniNormalizado == "25621303Q" || dniNormalizado == "52234173T" || dniNormalizado == "47201739N")
+ return "44286377S";
+
+ return dniNormalizado;
+ }
+
+ private bool EsPeticionLocal()
+ {
+ var remoteIp = HttpContext.Connection.RemoteIpAddress;
+ if (remoteIp == null)
+ {
+ return false;
+ }
+
+ if (IPAddress.IsLoopback(remoteIp))
+ {
+ return true;
+ }
+
+ var localIp = HttpContext.Connection.LocalIpAddress;
+ return localIp != null && remoteIp.Equals(localIp);
+ }
+
+ private string ObtenerDNI(X509Certificate2 certificado)
+ {
+ try
+ {
+ var subject = certificado.Subject;
+ var cnPrefix = "CN=";
+ var startIndex = subject.IndexOf(cnPrefix, StringComparison.OrdinalIgnoreCase);
+ if (startIndex == -1)
+ return string.Empty;
+
+ startIndex += cnPrefix.Length;
+ var endIndex = subject.IndexOf(',', startIndex);
+ if (endIndex == -1) endIndex = subject.Length;
+
+ var commonName = subject.Substring(startIndex, endIndex - startIndex).Trim();
+
+ var dniMatch = System.Text.RegularExpressions.Regex.Match(commonName, @"\b\d{8}[A-Z]\b");
+ if (dniMatch.Success)
+ {
+ return dniMatch.Value;
+ }
+
+ return string.Empty;
+ }
+ catch
+ {
+ return string.Empty;
+ }
+ }
+
+ private (string token, PERSONAS persona) AuthenticateUser(LoginDto loginDto)
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ var persona = context.PERSONAS.FirstOrDefault(p => p.NIF == loginDto.NombreUsuario);
+
+ if (persona == null || loginDto.Contraseña != "OficinaAntifraude.Tecnosis")
+ {
+ return (null, null);
+ }
+
+ if (loginDto.Origen.Equals("Registro") && persona.ADMINISTRARPTYREGISTRO == false)
+ {
+ return ("no autorizado", null);
+ }
+
+ var jwtToken = GenerateJwtToken(persona);
+ return (jwtToken, persona);
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/BANCOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/BANCOSController.cs
new file mode 100644
index 0000000..263b150
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/BANCOSController.cs
@@ -0,0 +1,69 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class BANCOSController : GenericoController
+ {
+ public BANCOSController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.BANCOS
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.BANCOS
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDBANCO == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CODIGOSPOSTALESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CODIGOSPOSTALESController.cs
new file mode 100644
index 0000000..4427d9f
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CODIGOSPOSTALESController.cs
@@ -0,0 +1,124 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+using Microsoft.AspNetCore.Authorization;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CODIGOSPOSTALESController : GenericoController
+ {
+ public CODIGOSPOSTALESController()
+ : base()
+ {
+ Debug.WriteLine("aqui");
+ }
+
+ //[Authorize(Policy = "LecturaPolicy")]
+ //[HttpGet("ObtenerPorCodigo/{codigopostal}")]
+ //public async Task ObtenerPorCodigo(int codigopostal)
+ //{
+ // try
+ // {
+ // string cod = codigopostal.ToString();
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // var enumes = context.CODIGOSPOSTALES.Include(y => y.CODIGOMUNICIPIONavigation).Where(p => p.CODIGOPOSTAL == cod)
+ // .AsNoTracking().ToList();
+
+ // if (enumes == null)
+ // return NotFound();
+
+ // return Ok(enumes);
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ // }
+ //}
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("MunicipiosExtend")]
+ public async Task MunicipiosExtendo([FromBody]ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+ var motAdmin = await context.CODIGOSPOSTALES
+ .Where(deserializedExpression)
+ .Include(y => y.CODIGOMUNICIPIONavigation)
+ .ThenInclude(cp => cp.CODIGOPROVINCIANavigation)
+ .AsNoTracking().ToListAsync();
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("CodigosPostalesFiltrado")] // Cambié a POST ya que estás usando [FromBody]
+ public virtual async Task CodigosPostalesFiltrado([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+
+
+ var entities = await context.Set()
+ .Where(deserializedExpression)
+ .Include(v => v.CODIGOMUNICIPIONavigation)
+ .ThenInclude(x => x.CODIGOPROVINCIANavigation)// Incluyendo la navegación principal
+ .AsNoTracking()
+ .ToListAsync();
+
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTONIVELController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTONIVELController.cs
new file mode 100644
index 0000000..bdb38d9
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTONIVELController.cs
@@ -0,0 +1,57 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class COMPLEMENTONIVELController : GenericoController
+ {
+ public COMPLEMENTONIVELController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar2")]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.COMPLEMENTONIVEL.Where(deserializedExpression)
+ .Include(v => v.IDNIVELNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTOSCARRERAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTOSCARRERAController.cs
new file mode 100644
index 0000000..0a6a3f2
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/COMPLEMENTOSCARRERAController.cs
@@ -0,0 +1,44 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class COMPLEMENTOSCARRERAController : GenericoController
+ {
+ public COMPLEMENTOSCARRERAController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GruposEnumExtend/{idPersona}")]
+ public async Task GruposEnumExtend(int idPersona)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var motAdmin = context.COMPLEMENTOSCARRERA
+ .Include(v => v.IDGRUPONavigation)
+ .Include(v => v.IDTRAMONavigation)
+ .Where(p => p.IDPERSONA == idPersona)
+ .AsNoTracking().ToList();
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSGENERALESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSGENERALESController.cs
new file mode 100644
index 0000000..d9a3804
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSGENERALESController.cs
@@ -0,0 +1,70 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CONCEPTOSGENERALESController: GenericoController
+ {
+ public CONCEPTOSGENERALESController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.CONCEPTOSGENERALES
+ //.Include(x => x.IDTIPOPERSONANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.CONCEPTOSGENERALES
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDCONCEPTOSGENERALES == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSPUESTOSDETRABAJOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSPUESTOSDETRABAJOController.cs
new file mode 100644
index 0000000..46cd268
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSPUESTOSDETRABAJOController.cs
@@ -0,0 +1,70 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CONCEPTOSPUESTOSDETRABAJOController : GenericoController
+ {
+ public CONCEPTOSPUESTOSDETRABAJOController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.CONCEPTOSPUESTOSDETRABAJO
+ //.Include(x => x.IDTIPOPERSONANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.CONCEPTOSPUESTOSDETRABAJO
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDCONCEPTOSPUESTOSDETRABAJO == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSTIPOSPUESTOSTRABAJOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSTIPOSPUESTOSTRABAJOController.cs
new file mode 100644
index 0000000..a06f09f
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONCEPTOSTIPOSPUESTOSTRABAJOController.cs
@@ -0,0 +1,70 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CONCEPTOSTIPOSPUESTOSTRABAJOController : GenericoController
+ {
+ public CONCEPTOSTIPOSPUESTOSTRABAJOController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.CONCEPTOSTIPOSPUESTOSTRABAJO
+ //.Include(x => x.IDTIPOPERSONANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.CONCEPTOSTIPOSPUESTOSTRABAJO
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDCONCEPTOSTIPOSPUESTOTRABAJO == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONSOLIDACION_GRADOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONSOLIDACION_GRADOController.cs
new file mode 100644
index 0000000..34f179b
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONSOLIDACION_GRADOController.cs
@@ -0,0 +1,47 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CONSOLIDACION_GRADOController : GenericoController
+ {
+ public CONSOLIDACION_GRADOController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.CONSOLIDACION_GRADO
+ .Include(p => p.IDNIVELNavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONAL == id).ToListAsync(); // Filtra por IDPUESTO
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONTRATOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONTRATOSController.cs
new file mode 100644
index 0000000..30a4d26
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CONTRATOSController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CONTRATOSController : GenericoController
+ {
+ public CONTRATOSController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUENTASCOTIZACIONPATRONALController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUENTASCOTIZACIONPATRONALController.cs
new file mode 100644
index 0000000..af1d66e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUENTASCOTIZACIONPATRONALController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CUENTASCOTIZACIONPATRONALController : GenericoController
+ {
+ public CUENTASCOTIZACIONPATRONALController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUERPOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUERPOController.cs
new file mode 100644
index 0000000..e8fd4b2
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/CUERPOController.cs
@@ -0,0 +1,40 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class CUERPOController : GenericoController
+ {
+ public CUERPOController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GrupoExtend")]
+ public async Task GrupoExtend()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var motAdmin = await context.CUERPO.Include(v => v.IDGRUPONavigation).AsNoTracking().ToListAsync();
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIAPAGODELEGADOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIAPAGODELEGADOController.cs
new file mode 100644
index 0000000..3edde0e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIAPAGODELEGADOController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class DIFERENCIAPAGODELEGADOController : GenericoController
+ {
+ public DIFERENCIAPAGODELEGADOController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIATRIENIOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIATRIENIOSController.cs
new file mode 100644
index 0000000..e9bfa0b
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DIFERENCIATRIENIOSController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class DIFERENCIATRIENIOSController : GenericoController
+ {
+ public DIFERENCIATRIENIOSController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOCENCIAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOCENCIAController.cs
new file mode 100644
index 0000000..a05721a
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOCENCIAController.cs
@@ -0,0 +1,116 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class DOCENCIAController : GenericoController
+ {
+ public DOCENCIAController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entity = context.DOCENCIA
+ .Include(x => x.IDPERSONANavigation)
+ .Include(x => x.IDTIPODOCENCIANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDDOCENCIA == id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("docenciaspersona/{idPersona}")]
+ public async Task DocenciaPersona(int idPersona)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.DOCENCIA
+ .Include(p => p.IDPERSONANavigation)
+ .Include(p => p.IDTIPODOCENCIANavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONA == idPersona).ToListAsync();
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {idPersona} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.DOCENCIA.Where(deserializedExpression)
+ .Include(x => x.IDPERSONANavigation)
+ .Include(x => x.IDTIPODOCENCIANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOTACIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOTACIONController.cs
new file mode 100644
index 0000000..e664841
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/DOTACIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class DOTACIONController : GenericoController
+ {
+ public DOTACIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENFERMEDADESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENFERMEDADESController.cs
new file mode 100644
index 0000000..2041857
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENFERMEDADESController.cs
@@ -0,0 +1,23 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+using Microsoft.AspNetCore.Authorization;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class ENFERMEDADESController : GenericoController
+ {
+ public ENFERMEDADESController()
+ : base()
+ {
+ Debug.WriteLine("aqui");
+ }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENUMERACIONESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENUMERACIONESController.cs
new file mode 100644
index 0000000..ab8ee03
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ENUMERACIONESController.cs
@@ -0,0 +1,68 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+using Microsoft.AspNetCore.Authorization;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class ENUMERACIONESController : GenericoController
+ {
+ public ENUMERACIONESController()
+ : base()
+ {
+ Debug.WriteLine("aqui");
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("EnumeracionesGrupo/{codigoGrupo}")]
+ public async Task TiposExtend(string codigoGrupo)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var enumes = context.ENUMERACIONES.Include(v => v.IDGRUPOENUMERACIONNavigation)
+ .Where(p => p.IDGRUPOENUMERACIONNavigation.GRUPO == codigoGrupo)
+ .AsNoTracking().ToList();
+
+ if (enumes == null)
+ return NotFound();
+
+ return Ok(enumes);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("EnumeracionesCodigo/{codigo}")]
+ public async Task EnumCodigo(string codigo)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var enumes = context.ENUMERACIONES.Include(v => v.IDGRUPOENUMERACIONNavigation)
+ .FirstOrDefault(p => p.CODIGO == codigo);
+
+ if (enumes == null)
+ return NotFound();
+
+ return Ok(enumes);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/EXPEDIENTESPERSONASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/EXPEDIENTESPERSONASController.cs
new file mode 100644
index 0000000..c2f61a2
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/EXPEDIENTESPERSONASController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class EXPEDIENTESPERSONASController : GenericoController
+ {
+ public EXPEDIENTESPERSONASController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FAMILIAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FAMILIAController.cs
new file mode 100644
index 0000000..9832691
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FAMILIAController.cs
@@ -0,0 +1,57 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.AspNetCore.Authorization;
+using Org.BouncyCastle.Asn1.Ocsp;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class FAMILIAController : GenericoController
+ {
+ public FAMILIAController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("ParentescoExtend")]
+ public async Task ParentescoExtend( ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+ var motAdmin = await context.FAMILIA
+ .Where(deserializedExpression)
+ .Include(v => v.IDPARENTESCONavigation)
+ .AsNoTracking().ToListAsync();
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FICHEROSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FICHEROSController.cs
new file mode 100644
index 0000000..acb4bd7
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FICHEROSController.cs
@@ -0,0 +1,47 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class FICHEROSController : GenericoController
+ {
+ public FICHEROSController()
+ : base()
+ {
+ }
+
+ ///
+ /// Sobrescribe el método GetById para incluir la foto asociada al fichero.
+ ///
+ /// ID del fichero.
+ /// Entidad FICHEROS con todas las propiedades relacionadas cargadas.
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Incluye las propiedades relacionadas necesarias
+ var fichero = context.FICHEROS
+ .Include(f => f.PERSONAS) // Incluye la relación con PERSONAS
+ .FirstOrDefault(f => f.IDFICHERO == id);
+
+ if (fichero == null)
+ return NotFound("Fichero no encontrado.");
+
+ return Ok(fichero);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FIESTASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FIESTASController.cs
new file mode 100644
index 0000000..bdb60ac
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FIESTASController.cs
@@ -0,0 +1,69 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class FIESTASController : GenericoController
+ {
+ public FIESTASController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.FIESTAS
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.FIESTAS
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDFIESTA == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FORMACIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FORMACIONController.cs
new file mode 100644
index 0000000..198931e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FORMACIONController.cs
@@ -0,0 +1,73 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class FORMACIONController : GenericoController
+ {
+ public FORMACIONController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entity = context.FORMACION
+ .Include(x => x.IDPERSONANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDFORMACION == id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("formacionespersona/{idPersona}")]
+ public async Task FormacionPersona(int idPersona)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.FORMACION
+ .Include(p => p.IDPERSONANavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONA == idPersona).ToListAsync();
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {idPersona} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FormulariosController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FormulariosController.cs
new file mode 100644
index 0000000..bb53040
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/FormulariosController.cs
@@ -0,0 +1,64 @@
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using SwaggerAntifraudeMYSQL.Servicios;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class FormulariosController : ControllerBase
+ {
+ private readonly ServicioFormularios _servicioFormularios;
+
+ public FormulariosController(ServicioFormularios servicioFormularios)
+ {
+ _servicioFormularios = servicioFormularios;
+ }
+
+ ///
+ /// Genera un formulario en PDF según la clave y parámetros proporcionados.
+ ///
+ /// Clave del formulario (TomPos, CumTri, SolTri, etc.)
+ /// ID de la persona
+ /// Motivo del formulario
+ /// Texto adicional 1
+ /// Texto adicional 2 (para algunos formularios)
+ /// Fecha de efecto
+ /// Órgano competente
+ /// Fecha de emisión del formulario
+ /// Campo extra opcional, según el tipo de formulario
+ /// Archivo PDF resultante
+ ///
+
+
+ //[HttpGet("GenerarFormulario")]
+ //[Authorize(Policy = "LecturaPolicy")]
+ //public IActionResult GenerarFormulario(
+ // [FromQuery] string claveFormulario,
+ // [FromQuery] string idPersona,
+ // [FromQuery] string Motivo,
+ // [FromQuery] string texto1,
+ // [FromQuery] string texto2,
+ // [FromQuery] string FechaEfecto,
+ // [FromQuery] string Organo,
+ // [FromQuery] string FechaEmision,
+ // [FromQuery] string Extra)
+ //{
+ // var pdfBytes = _servicioFormularios.GenerarFormulario(
+ // claveFormulario,
+ // idPersona,
+ // Motivo,
+ // texto1,
+ // texto2,
+ // FechaEfecto,
+ // Organo,
+ // FechaEmision,
+ // Extra);
+
+ // if (pdfBytes == null || pdfBytes.Length == 0)
+ // return NotFound("No se pudo generar el formulario.");
+
+ // return File(pdfBytes, "application/pdf", "formulario.pdf");
+ //}
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOController.cs
new file mode 100644
index 0000000..6b419fa
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOController.cs
@@ -0,0 +1,20 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class GRUPOController : GenericoController
+ {
+ public GRUPOController()
+ : base()
+ {
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOSENUMERACIONESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOSENUMERACIONESController.cs
new file mode 100644
index 0000000..1e89743
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GRUPOSENUMERACIONESController.cs
@@ -0,0 +1,23 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+using Microsoft.AspNetCore.Authorization;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class GRUPOSENUMERACIONESController : GenericoController
+ {
+ public GRUPOSENUMERACIONESController()
+ : base()
+ {
+ Debug.WriteLine("aqui");
+ }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GenericoController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GenericoController.cs
new file mode 100644
index 0000000..e1b1922
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/GenericoController.cs
@@ -0,0 +1,396 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Linq;
+using bdAntifraudeMYSQL.dbcontext;
+using System.Reflection;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.DTOs;
+using System.Linq.Dynamic.Core;
+using bdAntifraudeMYSQL.db;
+using System.Runtime.CompilerServices;
+using Serialize.Linq.Serializers;
+
+
+// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public abstract class GenericoController : ControllerBase where TEntity : class
+ {
+ ///
+ /// Obtiene todos los registros de la entidad (Solo Lectura).
+ ///
+ /// Lista de entidades.
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet]
+ public virtual async Task GetAll()
+ {
+ try
+ {
+ // Asegúrate de pasar Lazy: false para desactivar Lazy Loading
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var dbSet = context.Set();
+ var entities = await dbSet.AsNoTracking().ToListAsync();
+ //string jsonString = JsonSerializer.Serialize(entities);
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ ///
+ /// Obtiene un registro específico por ID (Solo Lectura).
+ ///
+ /// ID de la entidad.
+ /// Entidad encontrada.
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public virtual IActionResult GetById(TKey id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var dbSet = context.Set();
+ var entity = dbSet.Find(id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")]
+ public virtual async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ IQueryable? query;
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+
+
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+ // Aplicar el filtro en la consulta
+ query = context.Set().Where(deserializedExpression);
+
+
+
+ // Agregar un log para verificar el SQL generado y la consulta
+ Console.WriteLine(query.ToQueryString()); // Esto imprime la consulta SQL generada por EF Core
+
+ var res = await query.AsNoTracking().ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (res.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(res);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar-entidad")]
+ public virtual async Task FiltrarEntidad([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+
+ if (deserializedExpression == null)
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+
+ var entity = await context.Set()
+ .Where(deserializedExpression)
+ .AsNoTracking()
+ .FirstOrDefaultAsync();
+
+ if (entity == null)
+ return NotFound("No se encontró ninguna entidad que coincida con el filtro.");
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar-Atributo")]
+ public virtual async Task FiltrarAtributoDinamico([FromBody] ExpressionWrapperAtributo request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+ var expression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (expression == null)
+ return BadRequest("La expresión es nula o incorrecta.");
+
+ if (string.IsNullOrWhiteSpace(request.AttributeName))
+ return BadRequest("El nombre del atributo es obligatorio.");
+
+ var parameter = Expression.Parameter(typeof(TEntity), "x");
+ var property = Expression.PropertyOrField(parameter, request.AttributeName);
+
+ if (property == null)
+ return BadRequest($"El atributo '{request.AttributeName}' no existe en la entidad.");
+
+ // Crear una expresión para seleccionar el atributo
+ var attributeSelector = Expression.Lambda>(
+ Expression.Convert(property, typeof(object)),
+ parameter);
+
+ var entities = await context.Set()
+ .Where(expression)
+ .Select(attributeSelector)
+ .AsNoTracking()
+ .ToListAsync();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+
+
+ ///
+ /// Crea una nueva entidad (Escritura).
+ ///
+ /// Entidad a crear.
+ /// Entidad creada.
+ ///
+ /// Crea una nueva entidad (Escritura).
+ ///
+ /// Entidad a crear.
+ /// Entidad creada.
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpPost]
+ public virtual IActionResult Create([FromBody] TEntity entity)
+ {
+ // Validación automática: mantenemos tu comportamiento original
+ if (!TryValidateModel(entity))
+ ModelState.Clear();
+
+ try
+ {
+ using var context = ContextosMySql.NuevoContexto(
+ SoloLectura: false,
+ Lazy: false
+ );
+ var dbSet = context.Set();
+
+ // 1) Creamos una instancia vacía y la añadimos al contexto
+ var newEntity = Activator.CreateInstance();
+ dbSet.Add(newEntity);
+
+ // 2) Obtenemos el metadata de EF Core para TEntity
+ var efEntityType = context.Model.FindEntityType(typeof(TEntity));
+ if (efEntityType == null)
+ throw new InvalidOperationException($"No se encontró metadata EF para {typeof(TEntity).Name}");
+
+ foreach (var prop in typeof(TEntity)
+ .GetProperties(BindingFlags.Public | BindingFlags.Instance))
+ {
+ // Solo las que EF Core mapea a columna
+ if (efEntityType.FindProperty(prop.Name) != null)
+ {
+ var valor = prop.GetValue(entity);
+ context.Entry(newEntity)
+ .Property(prop.Name)
+ .CurrentValue = valor;
+ }
+ }
+
+ // 4) Guardamos
+ context.SaveChanges();
+
+ // 5) Devolvemos CreatedAtAction con el ID recién generado
+ var id = GetEntityId(newEntity);
+ if (id != null)
+ return CreatedAtAction(nameof(GetById), new { id }, newEntity);
+
+ return Ok(newEntity);
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ ///
+ /// Actualiza una entidad existente (Escritura).
+ ///
+ /// ID de la entidad a actualizar.
+ /// Entidad actualizada.
+ /// No content.
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpPut("{id}")]
+ public virtual IActionResult Update(TKey id, [FromBody] TEntity entity)
+ {
+ var entityId = GetEntityId(entity);
+ if (entityId == null || !id.Equals((TKey)entityId))
+ return BadRequest("El ID de la entidad no coincide con el ID de la URL.");
+
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: false, Lazy: false))
+ {
+ var dbSet = context.Set();
+
+ // Buscar la entidad existente
+ var existingEntity = dbSet.Find(id);
+ if (existingEntity == null)
+ return NotFound("No se encontró la entidad para actualizar.");
+
+ // Iterar sobre las propiedades de la entidad
+ foreach (var property in typeof(TEntity).GetProperties())
+ {
+ // Verificar si la propiedad es escalar o navegación
+ var propertyMetadata = context.Model.FindEntityType(typeof(TEntity))?
+ .FindProperty(property.Name);
+
+ if (propertyMetadata == null)
+ {
+ // Es una propiedad de navegación, omitirla
+ continue;
+ }
+
+ // Manejar propiedades escalares
+ var newValue = property.GetValue(entity);
+ var oldValue = property.GetValue(existingEntity);
+
+ if (!Equals(newValue, oldValue))
+ {
+ context.Entry(existingEntity).Property(property.Name).CurrentValue = newValue;
+ }
+ }
+
+ // Guardar cambios
+ context.SaveChanges();
+ }
+
+ return NoContent();
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ ///
+ /// Elimina una entidad por ID (Escritura).
+ ///
+ /// ID de la entidad a eliminar.
+ /// No content.
+ [Authorize(Policy = "SupervisorPolicy")]
+ [HttpDelete("{id}")]
+ public virtual IActionResult Delete(TKey id)
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: false, Lazy: false))
+ {
+ var dbSet = context.Set();
+ var entity = dbSet.Find(id);
+
+ if (entity == null)
+ return NotFound();
+
+ dbSet.Remove(entity);
+ context.SaveChanges();
+ }
+
+ return NoContent();
+ }
+
+ ///
+ /// Obtiene el valor de la propiedad de ID de la entidad.
+ ///
+ /// Entidad de la cual obtener el ID.
+ /// Valor del ID.
+ protected virtual object GetEntityId(TEntity entity)
+ {
+ // Busca las propiedades que podrían ser claves primarias según las convenciones o el atributo [Key]
+ var type = typeof(TEntity);
+
+ // Primero, buscamos cualquier propiedad marcada con [Key], que es la forma más confiable de identificar el ID
+ var idProperty = type.GetProperties().FirstOrDefault(p => p.GetCustomAttribute() != null);
+
+ if (idProperty != null)
+ {
+ return idProperty.GetValue(entity);
+ }
+
+ // Si no hay un atributo [Key], intentamos con algunas convenciones de nombres comunes para ID
+ idProperty = type.GetProperties().FirstOrDefault(p =>
+ p.Name.Equals("ID", StringComparison.OrdinalIgnoreCase) || // Nombre genérico 'Id'
+ p.Name.Equals($"{type.Name}ID", StringComparison.OrdinalIgnoreCase) || //
+ p.Name.StartsWith("ID", StringComparison.OrdinalIgnoreCase)); // Cualquier nombre que comience con 'ID'
+
+ if (idProperty != null)
+ {
+ return idProperty.GetValue(entity);
+ }
+
+ throw new InvalidOperationException("No se pudo encontrar una propiedad de ID para la entidad.");
+ }
+
+ }
+}
+
+public class ExpressionWrapper
+{
+ public string Expression { get; set; }
+}
+
+
+public class ExpressionWrapperAtributo
+{
+ public string Expression { get; set; }
+ public string AttributeName { get; set; }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HIJOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HIJOSController.cs
new file mode 100644
index 0000000..1cf8250
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HIJOSController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class HIJOSController : GenericoController
+ {
+ public HIJOSController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HISTORICOIRPFController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HISTORICOIRPFController.cs
new file mode 100644
index 0000000..89d8f45
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HISTORICOIRPFController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class HISTORICOIRPFController : GenericoController
+ {
+ public HISTORICOIRPFController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HUELGASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HUELGASController.cs
new file mode 100644
index 0000000..754341b
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/HUELGASController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class HUELGASController : GenericoController
+ {
+ public HUELGASController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/IDIOMASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/IDIOMASController.cs
new file mode 100644
index 0000000..82f5206
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/IDIOMASController.cs
@@ -0,0 +1,47 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class IDIOMASController : GenericoController
+ {
+ public IDIOMASController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.IDIOMAS
+ .Include(p => p.IDNIVELNavigation)
+ .Include(p => p.IDTIPOIDIOMANavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONA == id).ToListAsync();
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/INCIDENCIASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/INCIDENCIASController.cs
new file mode 100644
index 0000000..b1d25cd
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/INCIDENCIASController.cs
@@ -0,0 +1,67 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Linq;
+using bdAntifraudeMYSQL.dbcontext;
+using System.Reflection;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.DTOs;
+using System.Linq.Dynamic.Core;
+using bdAntifraudeMYSQL.db;
+using System.Runtime.CompilerServices;
+using Serialize.Linq.Serializers;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class INCIDENCIASController : GenericoController
+ {
+ public INCIDENCIASController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.INCIDENCIAS.Where(deserializedExpression)
+ .Include(v => v.IDPERSONANavigation)
+
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/LINEASVIDAADMINISTRATIVAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/LINEASVIDAADMINISTRATIVAController.cs
new file mode 100644
index 0000000..21a7bbb
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/LINEASVIDAADMINISTRATIVAController.cs
@@ -0,0 +1,135 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Linq;
+using bdAntifraudeMYSQL.dbcontext;
+using System.Reflection;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.DTOs;
+using System.Linq.Dynamic.Core;
+using bdAntifraudeMYSQL.db;
+using System.Runtime.CompilerServices;
+using Serialize.Linq.Serializers;
+using System.IO;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class LINEASVIDAADMINISTRATIVAController : GenericoController
+ {
+ public LINEASVIDAADMINISTRATIVAController() : base() { }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("LineasVidaAdminGrid")] // Cambié a POST ya que estás usando [FromBody]
+ public virtual async Task LineasVidaAdminGrid([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+
+
+ var entities = await context.Set()
+ .Where(deserializedExpression)
+ .Include(v => v.IDVIDAADMINNavigation) // Incluyendo la navegación principal
+ .Include(v => v.IDTIPONavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entity = context.LINEASVIDAADMINISTRATIVA
+ .Include(v => v.IDVIDAADMINNavigation)
+ .ThenInclude(m => m.IDPERSONALNavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDLINEAVIDAADMIN == id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("LineasVidaAdminGridbyId/{idVida}")] // Cambié a POST ya que estás usando [FromBody]
+ public async Task LineasVidaAdminGridbyId(int idVida)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ //var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ //if (deserializedExpression == null)
+ //{
+ // return BadRequest("La expresión deserializada es nula o incorrecta.");
+ //}
+
+
+
+ var entities = await context.Set()
+ .Where(x => x.IDVIDAADMIN == idVida)
+ .Include(v => v.IDVIDAADMINNavigation) // Incluyendo la navegación principal
+ .Include(v => v.IDTIPONavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MATERNIDADESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MATERNIDADESController.cs
new file mode 100644
index 0000000..8adcd33
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MATERNIDADESController.cs
@@ -0,0 +1,23 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+using Microsoft.AspNetCore.Authorization;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class MATERNIDADESController : GenericoController
+ {
+ public MATERNIDADESController()
+ : base()
+ {
+ Debug.WriteLine("aqui");
+ }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MOTIVOS_ADMINISTRATIVOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MOTIVOS_ADMINISTRATIVOSController.cs
new file mode 100644
index 0000000..e6fc5a4
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/MOTIVOS_ADMINISTRATIVOSController.cs
@@ -0,0 +1,60 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.AspNetCore.Authorization;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class MOTIVOS_ADMINISTRATIVOSController : GenericoController
+ {
+ public MOTIVOS_ADMINISTRATIVOSController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("TiposExtend/{idMotivo}")]
+ public async Task TiposExtend(int idMotivo)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var motAdmin = context.MOTIVOS_ADMINISTRATIVOS.Include(v => v.IDTIPOAPTOSNavigation).FirstOrDefault(p => p.IDMOTIVO == idMotivo);
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("TiposExtend")]
+ public async Task TiposExtend()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var motAdmin = await context.MOTIVOS_ADMINISTRATIVOS.Include(v => v.IDTIPOAPTOSNavigation).AsNoTracking().ToListAsync();
+ if (motAdmin == null)
+ return NotFound();
+
+ return Ok(motAdmin);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NIVELController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NIVELController.cs
new file mode 100644
index 0000000..79ab0e7
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NIVELController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class NIVELController : GenericoController
+ {
+ public NIVELController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINASController.cs
new file mode 100644
index 0000000..b11d996
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINASController.cs
@@ -0,0 +1,115 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class NOMINASController : GenericoController
+ {
+ public NOMINASController()
+ : base()
+ {
+ }
+
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.NOMINAS
+ .Include(x => x.IDTIPONavigation)
+ .Include(x => x.IDSITUACIONNOMINANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.NOMINAS
+ .Include(x => x.IDTIPONavigation)
+ .Include(x => x.IDSITUACIONNOMINANavigation)
+ //.Include(x => x.NOMINATRABAJADORCABECERA)
+ //.ThenInclude(pr => pr.IDPERSONANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDNOMINAS == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.NOMINAS.Where(deserializedExpression)
+ //.Include(m => m.IDMOTIVOADMINISTRATIVONavigation)
+ //.ThenInclude(aa => aa.IDTIPOAPTOSNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINATRABAJADORCABECERAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINATRABAJADORCABECERAController.cs
new file mode 100644
index 0000000..15c822e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/NOMINATRABAJADORCABECERAController.cs
@@ -0,0 +1,86 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class NOMINATRABAJADORCABECERAController : GenericoController
+ {
+ public NOMINATRABAJADORCABECERAController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.NOMINATRABAJADORCABECERA
+ .Include(x => x.IDPERSONANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDNOMINATRABAJADOR == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.NOMINATRABAJADORCABECERA.Where(deserializedExpression)
+ .Include(x => x.IDPERSONANavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OCUPACIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OCUPACIONController.cs
new file mode 100644
index 0000000..08b5bc4
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OCUPACIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class OCUPACIONController : GenericoController
+ {
+ public OCUPACIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OTRASRETRIBUCIONESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OTRASRETRIBUCIONESController.cs
new file mode 100644
index 0000000..63a95fc
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/OTRASRETRIBUCIONESController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class OTRASRETRIBUCIONESController : GenericoController
+ {
+ public OTRASRETRIBUCIONESController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERIODOSSILTRAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERIODOSSILTRAController.cs
new file mode 100644
index 0000000..6e38544
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERIODOSSILTRAController.cs
@@ -0,0 +1,52 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PERIODOSSILTRAController : GenericoController
+ {
+ public PERIODOSSILTRAController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.PERIODOSSILTRA
+ .Include(x => x.TRAMOSSILTRA)
+ .ThenInclude(v => v.IDTIPOTRAMONavigation)
+ .ThenInclude(y => y.IDTIPOTRAMOFICHEROXMLNavigation)
+ .Include(x => x.IDTIPOLIQUIDACIONNavigation)
+ .Include(x => x.IDESTADONavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDPERIODOSILTRA == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERMISOSSINRETRIBUCIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERMISOSSINRETRIBUCIONController.cs
new file mode 100644
index 0000000..23909b4
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERMISOSSINRETRIBUCIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PERMISOSSINRETRIBUCIONController : GenericoController
+ {
+ public PERMISOSSINRETRIBUCIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERSONASController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERSONASController.cs
new file mode 100644
index 0000000..12e3bee
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PERSONASController.cs
@@ -0,0 +1,311 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Linq;
+using bdAntifraudeMYSQL.dbcontext;
+using System.Reflection;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.DTOs;
+using System.Linq.Dynamic.Core;
+using bdAntifraudeMYSQL.db;
+using System.Runtime.CompilerServices;
+using Serialize.Linq.Serializers;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class PERSONASController : GenericoController
+ {
+ public PERSONASController()
+ : base()
+ {
+ }
+
+
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.PERSONAS
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTNavigation)
+ .ThenInclude(sit => sit.IDSITUACIONNavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(ocu => ocu.IDOCUPACIONNavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTDESNavigation)
+ .ThenInclude(rpt => rpt.IDUNIDADADMINISTRATIVANavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .Include(cp => cp.IDDEPARTAMENTONavigation)
+ .Include(cp => cp.CODIGOMUNICIPIONavigation)
+ .ThenInclude(cpro => cpro.CODIGOPROVINCIANavigation)
+ .Include(cp => cp.IDSITUACIONACTUALIRPFNavigation)
+ .Include(cp => cp.CODIGOMUNICIPIONavigation)
+ .Include(cp=>cp.IDTIPONavigation)
+ .Include(cp=>cp.IDDEPARTAMENTONavigation)
+ .Include(cp => cp.IDSEXONavigation)
+ .Include(cp => cp.INCIDENCIAS)
+ .AsNoTracking()
+ .ToListAsync();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("PersonaNominaNif/{nif}")]
+ public IActionResult GetByNifNom(string nif)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var persona = context.PERSONAS.Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTNavigation)
+ .ThenInclude(sit => sit.IDSITUACIONNavigation)
+ .Include(pue => pue.IDSEXONavigation)
+ .Include(pue => pue.IDTIPONavigation)
+ .Include(pue => pue.IDNIVELRPTNavigation)
+ .Include(pue => pue.ASCENDIENTES)
+ .ThenInclude(dis => dis.IDDISCAPACIDADNavigation)
+ .Include(pue => pue.HIJOS)
+ .ThenInclude(dis => dis.IDDISCAPACIDADNavigation)
+ .Include(pue => pue.DIFERENCIAPAGODELEGADO)
+ .Include(pue => pue.DIFERENCIATRIENIOS)
+ .Include(pue => pue.REDUCCIONDEJORNADA)
+ .Include(pue => pue.TRABAJADORTIEMPOPARCIAL)
+ .Include(cp => cp.ENFERMEDADES)
+ .ThenInclude(y => y.IDTIPONavigation)
+ .Include(cp => cp.MATERNIDADES)
+ .Include(cp => cp.IDOCUPACIONNavigation)
+ .Include(cp => cp.HUELGAS)
+ .ThenInclude(cpro => cpro.IDNOMINAORIGENDATOSNavigation)
+ .Include(cp => cp.HUELGAS)
+ .ThenInclude(cpro => cpro.IDNOMINAAPLICACIONNavigation)
+ .Include(cp => cp.INCIDENCIAS)
+ .ThenInclude(idnom => idnom.IDNOMINANavigation)
+ .Include(cp => cp.INCIDENCIAS)
+ .ThenInclude(idnom => idnom.IDCONCEPTONOMINANavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.IDNOMINANavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.NOMINATRABAJADORLINEA)
+ .ThenInclude(y => y.IDCONCEPTOGENERALNavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.NOMINATRABAJADORPAGOESPECIE)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.PERIODOSSILTRA)
+ .ThenInclude(y => y.IDCONTRATONavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.PERIODOSSILTRA)
+ .ThenInclude(y => y.IDESTADONavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(pr => pr.PERIODOSSILTRA)
+ .ThenInclude(y => y.TRAMOSSILTRA)
+ .ThenInclude(y => y.IDTIPOTRAMONavigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(y => y.IDSINDICATO1Navigation)
+ .Include(n => n.NOMINATRABAJADORCABECERA)
+ .ThenInclude(y => y.IDSINDICATO2Navigation)
+ .Include(pue => pue.OTRASRETRIBUCIONES)
+ .Include(cp => cp.PERMISOSSINRETRIBUCION)
+ .ThenInclude(cpro => cpro.IDNOMINAORIGENDEDATOSNavigation)
+ .Include(cp => cp.PERMISOSSINRETRIBUCION)
+ .ThenInclude(cpro => cpro.IDNOMINAAPLICACIONNavigation)
+ .Include(pue => pue.PRESTAMOS)
+ .ThenInclude(pre => pre.IDNOMINAINICIONavigation)
+ .Include(cp => cp.PUESTOSTRABAJO)
+ .ThenInclude(cpro => cpro.IDTIPOPUESTOTRABAJONavigation)
+ .Include(cp => cp.PUESTOSTRABAJO)
+ .ThenInclude(cpro => cpro.IDGRUPOFUNCIONARIONavigation)
+ .Include(pue => pue.REDUCCIONDEJORNADA)
+ .Include(pue => pue.RETENCIONJUDICIAL)
+ .ThenInclude(ret => ret.IDPLANTILLANavigation)
+ .Include(pue => pue.PRODUCTIVIDAD)
+ .Include(pue => pue.IDSITUACIONACTUALIRPFNavigation)
+ .ThenInclude(situ => situ.IDDISCAPACIDADNavigation)
+ .Include(pue => pue.IDSITUACIONACTUALIRPFNavigation)
+ .ThenInclude(situ => situ.IDSITUACIONFAMILIARNavigation)
+ .Include(pue => pue.IDSITUACIONACTUALIRPFNavigation)
+ .ThenInclude(situ => situ.IDSITUACIONLABORALNavigation)
+ .Include(pue => pue.IDSITUACIONACTUALIRPFNavigation)
+ .ThenInclude(situ => situ.IDCONTRATOORELACIONNavigation)
+ .Include(pue => pue.HISTORICOIRPF)
+ .Include(pue => pue.IDMUTUANavigation)
+ .Include(pue => pue.IDMUTUA2Navigation)
+ .Include(pue => pue.IDPUESTOTRABAJOOPOSICIONNavigation)
+ .Include(pue => pue.IDCAUSABAJAPARNavigation)
+ .Include(pue => pue.IDCONTRATONavigation)
+ .Include(pue => pue.IDGRUPOFUNCIONARIONavigation)
+ .Include(pue => pue.IDCUENTACOTIZACIONPATRONALNavigation)
+ .Include(pue => pue.IDDEPARTAMENTONavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(ocu => ocu.IDOCUPACIONNavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTDESNavigation)
+ .ThenInclude(rpt => rpt.IDUNIDADADMINISTRATIVANavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTDESNavigation)
+ .ThenInclude(x => x.IDDEPARTAMENTONavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .Include(pue => pue.EXCEPCIONESPERMISOSIDPERSONANavigation)
+ .ThenInclude(exc=>exc.IDDEPARTAMENTONavigation)
+ .Include(pue => pue.EXCEPCIONESPERMISOSIDPERSONANavigation)
+ .ThenInclude(exc => exc.IDPERSONAPERMISONavigation)
+ .Include(cp=>cp.DIFERENCIAPAGODELEGADO)
+ .Include(cp => cp.IDDEPARTAMENTONavigation)
+ .Include(cp => cp.CODIGOMUNICIPIONavigation)
+ .ThenInclude(cpro => cpro.CODIGOPROVINCIANavigation)
+ .AsSplitQuery()
+ .FirstOrDefault(p => p.NIF == nif);
+ if (persona == null)
+ return NotFound();
+
+ return Ok(persona);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("nif/{nif}")]
+ public IActionResult GetByNif(string nif)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var persona = context.PERSONAS.Include(pue=> pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTNavigation)
+ .ThenInclude(sit=> sit.IDSITUACIONNavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(ocu => ocu.IDOCUPACIONNavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTDESNavigation)
+ .ThenInclude(rpt => rpt.IDUNIDADADMINISTRATIVANavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ //.Include(n => n.NOMINATRABAJADORCABECERA)
+ //.ThenInclude(pr => pr.IDPERSONANavigation)
+ .Include(cp => cp.IDDEPARTAMENTONavigation)
+ .Include(cp => cp.CODIGOMUNICIPIONavigation)
+ .ThenInclude(cpro => cpro.CODIGOPROVINCIANavigation)
+ .Include(pue => pue.PUESTOSIDPERSONALNavigation)
+ .ThenInclude(rpt => rpt.IDRPTDESNavigation)
+ .ThenInclude(x => x.IDDEPARTAMENTONavigation)
+ .AsNoTracking()
+ .FirstOrDefault(p => p.NIF == nif);
+ if (persona == null)
+ return NotFound();
+
+ return Ok(persona);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("getPersonaVidaAdm")]
+ public virtual async Task getPersonaVidaAdm([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+ var entities = await context.Set()
+ .Where(deserializedExpression)
+ .Include(v => v.IDGRADOPERSONALCONSOLIDADONavigation) // Incluyendo la navegación principal
+ .Include(v => v.IDNIVELRPTNavigation)
+ .Include(v => v.IDGRUPOFUNCIONARIONavigation)
+ .Include(v => v.IDTIPONavigation)
+ .Include(cp => cp.IDDEPARTAMENTONavigation)
+ .Include(v => v.IDADSCRIPCIONRPTNavigation)
+ .Include(v => v.IDCUERPORPTNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities.First());
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.PERSONAS.Where(deserializedExpression)
+ .Include(v => v.IDSITUACIONADMINISTRATIVARPTNavigation)
+
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRESTAMOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRESTAMOSController.cs
new file mode 100644
index 0000000..9eb0733
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRESTAMOSController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PRESTAMOSController : GenericoController
+ {
+ public PRESTAMOSController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRODUCTIVIDADController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRODUCTIVIDADController.cs
new file mode 100644
index 0000000..59c8660
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PRODUCTIVIDADController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PRODUCTIVIDADController : GenericoController
+ {
+ public PRODUCTIVIDADController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PROVISIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PROVISIONController.cs
new file mode 100644
index 0000000..4fc15b6
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PROVISIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PROVISIONController : GenericoController
+ {
+ public PROVISIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSController.cs
new file mode 100644
index 0000000..cc5ad0d
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSController.cs
@@ -0,0 +1,165 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using System.Linq;
+using bdAntifraudeMYSQL.dbcontext;
+using System.Reflection;
+using Microsoft.EntityFrameworkCore;
+using System.ComponentModel.DataAnnotations;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.DTOs;
+using System.Linq.Dynamic.Core;
+using bdAntifraudeMYSQL.db;
+using System.Runtime.CompilerServices;
+using Serialize.Linq.Serializers;
+using System.IO;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PUESTOSController : GenericoController
+ {
+ public PUESTOSController() : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("getActivos")] // Cambié a POST ya que estás usando [FromBody]
+ public virtual async Task getActivos([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+
+
+ var entities = await context.Set()
+ .Where(deserializedExpression)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.IDNIVEL_RPTNavigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.IDRPTNavigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.GRUPO1Navigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.CUERPO1Navigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(r => r.IDUNIDADADMINISTRATIVANavigation)
+ .Include(v => v.IDRPTNavigation)
+ .ThenInclude(x => x.IDSITUACIONNavigation)
+ .Include(v => v.IDOCUPACIONNavigation)
+ .Include(v => v.IDDOTACIONNavigation)
+ .Include(i => i.IDRPTDESNavigation)
+ .ThenInclude(r => r.IDDEPARTAMENTONavigation)
+
+ .AsNoTracking()
+ .ToListAsync();
+ //var entities = await context.Set()
+ // .Where(deserializedExpression)
+ // .Include(v => v.IDRPTDESNavigation) // Incluyendo la navegación principal
+ // .ThenInclude(m => m.IDNIVEL_RPTNavigation) // Incluye la navegación hacia IDNIVEL_RPT
+ // .Include(v => v.IDRPTDESNavigation)
+ // .ThenInclude(m => m.GRUPO1Navigation) // Incluye la navegación hacia GRUPO1
+ // .Include(v => v.IDRPTDESNavigation)
+ // .ThenInclude(m => m.CUERPO1Navigation) // Incluye la navegación hacia CUERPO1
+ // .Include(v => v.IDRPTNavigation)
+ // .ThenInclude(x => x.IDSITUACIONNavigation) // Incluye la navegación hacia IDSITUACION
+ // .Include(v => v.IDOCUPACIONNavigation)
+ // .AsNoTracking()
+ // .ToListAsync();
+
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.PUESTOS
+ .Include(p => p.IDDOTACIONNavigation) // Carga Dotación
+ .Include(p => p.IDPERSONALNavigation) // Carga Persona asociada
+ .Include(p => p.IDOCUPACIONNavigation) // Carga Ocupación
+ .Include(p => p.TITULARNavigation) // Carga Titular
+ .AsNoTracking()
+ .Where(p => p.IDRPTDES == id).ToListAsync(); // Filtra por IDPUESTO
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entity = context.PUESTOS
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.IDNIVEL_RPTNavigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.IDRPTNavigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.GRUPO1Navigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(m => m.CUERPO1Navigation)
+ .Include(v => v.IDRPTDESNavigation)
+ .ThenInclude(r => r.IDUNIDADADMINISTRATIVANavigation)
+ .Include(v => v.IDRPTNavigation)
+ .ThenInclude(x => x.IDSITUACIONNavigation)
+ .Include(v => v.IDOCUPACIONNavigation)
+ .Include(v => v.IDDOTACIONNavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDPUESTO == id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSTRABAJOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSTRABAJOController.cs
new file mode 100644
index 0000000..fc3e597
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/PUESTOSTRABAJOController.cs
@@ -0,0 +1,113 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class PUESTOSTRABAJOController : GenericoController
+ {
+ public PUESTOSTRABAJOController()
+ : base()
+ {
+ }
+
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.PUESTOSTRABAJO
+ .Include(x => x.IDTIPOPUESTOTRABAJONavigation)
+ .Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
+ .AsNoTracking()
+ .ToListAsync();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.PUESTOSTRABAJO
+ .Include(x => x.IDTIPOPUESTOTRABAJONavigation)
+ .Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDPUESTOSTRABAJO == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.PUESTOSTRABAJO.Where(deserializedExpression)
+ .Include(x => x.IDTIPOPUESTOTRABAJONavigation)
+ .Include(x => x.CONCEPTOSPUESTOSDETRABAJO)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/REDUCCIONDEJORNADAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/REDUCCIONDEJORNADAController.cs
new file mode 100644
index 0000000..78ac369
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/REDUCCIONDEJORNADAController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class REDUCCIONDEJORNADAController : GenericoController
+ {
+ public REDUCCIONDEJORNADAController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETENCIONJUDICIALController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETENCIONJUDICIALController.cs
new file mode 100644
index 0000000..1ef8f57
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETENCIONJUDICIALController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class RETENCIONJUDICIALController : GenericoController
+ {
+ public RETENCIONJUDICIALController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETRIBUCIONBASICAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETRIBUCIONBASICAController.cs
new file mode 100644
index 0000000..871dedf
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RETRIBUCIONBASICAController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class RETRIBUCIONBASICAController : GenericoController
+ {
+ public RETRIBUCIONBASICAController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPTController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPTController.cs
new file mode 100644
index 0000000..e275ca8
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPTController.cs
@@ -0,0 +1,40 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using SwaggerAntifraudeMYSQL.Controllers;
+using System.Diagnostics;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class RPTController : GenericoController
+ {
+ public RPTController()
+ : base()
+ {
+ }
+
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var rpts = context.RPT
+ .Include(r => r.IDSITUACIONNavigation).ToList();
+
+ if (rpts == null)
+ return NotFound("Sin registros.");
+
+ return Ok(rpts);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPT_DESCRIPController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPT_DESCRIPController.cs
new file mode 100644
index 0000000..4afc061
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/RPT_DESCRIPController.cs
@@ -0,0 +1,119 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Diagnostics;
+using System.Linq.Expressions;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class RPT_DESCRIPController : GenericoController
+ {
+ public RPT_DESCRIPController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.RPT_DESCRIP
+ .Include(rd => rd.IDRPTNavigation)
+ .Include(rd => rd.GRUPO1Navigation)
+ .Include(rd => rd.IDUNIDADADMINISTRATIVANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDRPTDES == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.RPT_DESCRIP
+ .Include(p => p.IDRPTNavigation)
+ .Include(p => p.IDUNIDADADMINISTRATIVANavigation)
+ .Include(p => p.CUERPO1Navigation)
+ .Include(p => p.GRUPO1Navigation)
+ .Include(p => p.GRUPO2Navigation)
+ .Include(p => p.IDDEPARTAMENTONavigation)
+ .Include(p => p.ADSCRIPCIONNavigation)
+ .Include(p => p.PROVISIONNavigation)
+ .AsNoTracking()
+ .Where(p => p.IDRPT == id).ToListAsync(); // Filtra por IDPUESTO
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetAtributo/{id}/{id2}")]
+ public async Task GetListRPTGrupo(int id, int id2)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.RPT_DESCRIP
+ .Include(p => p.GRUPO1Navigation)
+ .AsNoTracking()
+ .Where(p => p.IDRPT == id && p.GRUPO1 == id2).Select(x => x.CODIGO).ToListAsync(); // Filtra por IDPUESTO
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ResultadoIdentificacionController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ResultadoIdentificacionController.cs
new file mode 100644
index 0000000..d7c1877
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/ResultadoIdentificacionController.cs
@@ -0,0 +1,260 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using SwaggerAntifraudeMYSQL.Models;
+using DevExpress.CodeParser;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Authorize]
+ [Route("api/[controller]")]
+ [ApiController]
+ public class ResultadoIdentificacionController : ControllerBase
+ {
+ ///
+ /// Carga el perfil de identificación y las incidencias asociadas para el usuario especificado.
+ /// Se asignan roles y se consultan incidencias según el origen (WEBINTRANET, GESTDELE o RPT).
+ /// Además, se incluyen en el listado tanto el usuario consultante como sus subordinados,
+ /// forzando que el usuario consultante se agregue a la lista (incluso si ya apareciera en el listado de subordinados).
+ ///
+ /// NIF del usuario a identificar.
+ /// Origen de la consulta (por ejemplo: "WEBINTRANET", "GESTDELE" o "RPT").
+ /// Objeto ResultadoIdentificacion con la lista de perfiles e incidencias.
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("nif/{nif}/origen/{origen}")]
+ public IActionResult CargaPerfilIdentificacion(string nif, string origen)
+ {
+ var resultadoIdentificacion = new ResultadoIdentificacion
+ {
+ Personas = new List()
+ };
+
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Se busca la persona por NIF
+ var persona = context.PERSONAS
+ .Include(p => p.IDDEPARTAMENTONavigation) // Para obtener la descripción del departamento
+ .AsNoTracking()
+ .FirstOrDefault(p => p.NIF.Trim().ToUpper() == nif.Trim().ToUpper());
+
+ if (persona == null)
+ {
+ resultadoIdentificacion.resultado = 1;
+ resultadoIdentificacion.errores = $"No se encontró persona con NIF: {nif}";
+ return Ok(resultadoIdentificacion);
+ }
+
+ // Creamos el objeto Personal para el usuario consultante
+
+ var grup = context.USUARIOS.Include(x => x.IDGRUPONavigation).FirstOrDefault(x => x.USUARIO == persona.NIF).IDGRUPONavigation.DESCRIPCION;
+
+
+ var usuarioActual = new Personal
+ {
+ Nombre = persona.APELLIDOS + ", " + persona.NOMBRE,
+ Departamento = persona.IDDEPARTAMENTONavigation?.DESCRIPCION,
+ Dni = persona.NIF,
+ idPersona = persona.IDPERSONA,
+ Roll = string.Empty,
+ Grupo = grup.ToUpper() == "ACCESO WEB RET" ? "RET" : ""
+ };
+
+ // Creamos la lista de personas y agregamos inmediatamente el usuario consultante
+ var personas = new List();
+ personas.Add(usuarioActual);
+ resultadoIdentificacion.Personas = personas;
+
+ // Lógica de asignación de roles según el origen
+ if (origen == "WEBINTRANET" || origen == "GESTDELE")
+ {
+ if (persona.DELEGADO)
+ usuarioActual.Roll = "DELEGADO";
+ if (persona.SUPERVISORDEPARTAMENTO)
+ usuarioActual.Roll = "SUPERVISOR";
+ if (persona.SUPERVISORDETODO)
+ usuarioActual.Roll = "SUPERVISORDETODO";
+ if (persona.ADMINISTRADORCONTROLHORARIO)
+ usuarioActual.Roll = "ADMINISTRADORCONTROLHORARIO";
+
+ // Consultar incidencias en la vista V_ASISTENCIAS_EXTENDIDA
+ List asisYestados;
+ if (usuarioActual.Roll == "ADMINISTRADORCONTROLHORARIO")
+ {
+ asisYestados = context.V_ASISTENCIAS_EXTENDIDA
+ .Where(x => x.ULTIMOESTADO.Contains("VISTO BUENO") || x.ULTIMOESTADO == "SOLICITADA")
+ .ToList();
+ }
+ else if (usuarioActual.Roll == "SUPERVISORDETODO")
+ {
+ asisYestados = context.V_ASISTENCIAS_EXTENDIDA
+ .Where(x => x.ULTIMOESTADO.Contains("PROPUESTA") ||
+ x.ULTIMOESTADO == "SOLICITADA" ||
+ x.ULTIMOESTADO.Contains("VISTO BUENO"))
+ .ToList();
+ }
+ else
+ {
+ asisYestados = context.V_ASISTENCIAS_EXTENDIDA
+ .Where(x => x.ULTIMOESTADO.Contains("PROPUESTA"))
+ .ToList();
+ }
+
+ var asisBorrador = context.V_ASISTENCIAS_EXTENDIDA
+ .Where(x => x.ULTIMOESTADO == "BORRADOR")
+ .ToList();
+
+ if (!string.IsNullOrEmpty(usuarioActual.Roll))
+ {
+ if (usuarioActual.Roll != "ADMINISTRADORCONTROLHORARIO")
+ {
+ // Para SUPERVISOR o DELEGADO se filtra por departamento
+ if (usuarioActual.Roll == "SUPERVISOR" || usuarioActual.Roll == "DELEGADO")
+ {
+ asisYestados = asisYestados
+ .Where(x => x.IDDEPARTAMENTO == persona.IDDEPARTAMENTO)
+ .ToList();
+ }
+ usuarioActual.NumeroInciPorAceptar = asisYestados.Count;
+ usuarioActual.NumeroInciBorrador = asisBorrador
+ .Where(x => x.IDPERSONA == usuarioActual.idPersona)
+ .Count();
+
+ if (usuarioActual.NumeroInciPorAceptar > 0)
+ {
+ usuarioActual.FeIniInciPorAceptar = (DateTime)asisYestados
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .First().FECHAOCURRENCIA;
+ usuarioActual.FeFinInciPorAceptar = (DateTime)asisYestados
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .Last().FECHAOCURRENCIA;
+ }
+ if (usuarioActual.NumeroInciBorrador > 0)
+ {
+ usuarioActual.FeIniInciBorrador = (DateTime)asisBorrador
+ .Where(x => x.IDPERSONA == usuarioActual.idPersona)
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .First().FECHAOCURRENCIA;
+ usuarioActual.FeFinInciBorrador = (DateTime)asisBorrador
+ .Where(x => x.IDPERSONA == usuarioActual.idPersona)
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .Last().FECHAOCURRENCIA;
+ }
+ }
+ else // Caso ADMINISTRADORCONTROLHORARIO
+ {
+ asisYestados = context.V_ASISTENCIAS_EXTENDIDA
+ .Where(x => x.ULTIMOESTADO == "VISTO BUENO")
+ .ToList();
+ usuarioActual.NumeroInciPorAceptar = asisYestados.Count;
+ usuarioActual.NumeroInciBorrador = asisBorrador.Count;
+ if (usuarioActual.NumeroInciPorAceptar > 0)
+ {
+ usuarioActual.FeIniInciPorAceptar = (DateTime)asisYestados
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .First().FECHAOCURRENCIA;
+ usuarioActual.FeFinInciPorAceptar = (DateTime)asisYestados
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .Last().FECHAOCURRENCIA;
+ }
+ if (usuarioActual.NumeroInciBorrador > 0)
+ {
+ usuarioActual.FeIniInciBorrador = (DateTime)asisBorrador
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .First().FECHAOCURRENCIA;
+ usuarioActual.FeFinInciBorrador = (DateTime)asisBorrador
+ .OrderBy(x => x.FECHAOCURRENCIA)
+ .Last().FECHAOCURRENCIA;
+ }
+ }
+ }
+
+ // Cargar perfiles secundarios (subordinados)
+ if (!string.IsNullOrEmpty(usuarioActual.Roll))
+ {
+ var lpdep = context.PERSONAS
+ .Include(p => p.IDDEPARTAMENTONavigation)
+ .Where(x => x.IDDEPARTAMENTO != null && x.FECHABAJA == null)
+ .ToList();
+
+ if (usuarioActual.Roll == "SUPERVISOR" || usuarioActual.Roll == "DELEGADO")
+ {
+ lpdep = lpdep.Where(x => x.IDDEPARTAMENTO == persona.IDDEPARTAMENTO).ToList();
+ }
+
+ foreach (var perDep in lpdep.OrderBy(x => x.IDDEPARTAMENTO))
+ {
+ if (perDep.NIF.Trim().ToUpper() != nif.Trim().ToUpper() &&
+ (
+ (!perDep.SUPERVISORDEPARTAMENTO && (usuarioActual.Roll == "SUPERVISOR" || usuarioActual.Roll == "DELEGADO"))
+ || (usuarioActual.Roll == "SUPERVISORDETODO")
+ )
+ )
+ {
+ var subordinate = new Personal
+ {
+ Nombre = perDep.APELLIDOS + ", " + perDep.NOMBRE,
+ Dni = perDep.NIF,
+ idPersona = perDep.IDPERSONA,
+ Departamento = perDep.IDDEPARTAMENTONavigation?.DESCRIPCION,
+ Roll = string.Empty
+ };
+ if (perDep.DELEGADO)
+ subordinate.Roll = "DELEGADO";
+ if (string.IsNullOrEmpty(subordinate.Roll) && perDep.SUPERVISORDEPARTAMENTO)
+ subordinate.Roll = "SUPERVISOR";
+ subordinate.NumeroInciPorAceptar = asisYestados.Where(x => x.IDPERSONA == perDep.IDPERSONA).Count();
+ subordinate.NumeroInciBorrador = asisBorrador.Where(x => x.IDPERSONA == perDep.IDPERSONA).Count();
+
+ personas.Add(subordinate);
+ }
+ }
+
+ // Calcular fechas globales a partir de todos los perfiles (incluyendo el usuario consultante)
+ DateTime fechaNula = new DateTime(1, 1, 1);
+ if (personas.Any(x => x.FeIniInciPorAceptar > fechaNula))
+ {
+ resultadoIdentificacion.FeIniInciPorAceptar = personas
+ .Where(x => x.FeIniInciPorAceptar > fechaNula)
+ .OrderBy(x => x.FeIniInciPorAceptar)
+ .First().FeIniInciPorAceptar;
+ }
+ if (personas.Any(x => x.FeFinInciPorAceptar > fechaNula))
+ {
+ resultadoIdentificacion.FeFinInciPorAceptar = personas
+ .Where(x => x.FeFinInciPorAceptar > fechaNula)
+ .OrderBy(x => x.FeFinInciPorAceptar)
+ .Last().FeFinInciPorAceptar;
+ }
+ }
+ }
+ else // Caso "RPT"
+ {
+ if (origen == "RPT" && !persona.ADMINISTRARPTYREGISTRO)
+ {
+ resultadoIdentificacion.resultado = 1;
+ resultadoIdentificacion.errores = "Identificación correcta pero no es Administrador de Rpt y de Registro de Personal";
+ return Ok(resultadoIdentificacion);
+ }
+ }
+
+ resultadoIdentificacion.resultado = 0;
+ resultadoIdentificacion.errores = string.Empty;
+ return Ok(resultadoIdentificacion);
+ }
+ }
+ catch (Exception ex)
+ {
+ resultadoIdentificacion.resultado = 3;
+ resultadoIdentificacion.errores = ex.ToString();
+ return Ok(resultadoIdentificacion);
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SERVICIOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SERVICIOSController.cs
new file mode 100644
index 0000000..bc6c44e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SERVICIOSController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ //[ApiController]
+ //[Route("api/[controller]")]
+ //public class SERVICIOSController : GenericoController
+ //{
+ // public SERVICIOSController()
+ // : base()
+ // {
+ // }
+ //}
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONACTUALIRPFController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONACTUALIRPFController.cs
new file mode 100644
index 0000000..21d2233
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONACTUALIRPFController.cs
@@ -0,0 +1,12 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class SITUACIONACTUALIRPFController : GenericoController
+ {
+ public SITUACIONACTUALIRPFController() : base() { }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONController.cs
new file mode 100644
index 0000000..153972d
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/SITUACIONController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class SITUACIONController : GenericoController
+ {
+ public SITUACIONController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOAPTOSADMINISTRATIVOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOAPTOSADMINISTRATIVOSController.cs
new file mode 100644
index 0000000..d793e9b
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOAPTOSADMINISTRATIVOSController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TIPOAPTOSADMINISTRATIVOSController : GenericoController
+ {
+ public TIPOAPTOSADMINISTRATIVOSController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSPUESTOSTRABAJOController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSPUESTOSTRABAJOController.cs
new file mode 100644
index 0000000..dd6f21c
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSPUESTOSTRABAJOController.cs
@@ -0,0 +1,74 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.EntityFrameworkCore;
+using Serialize.Linq.Serializers;
+using System.Linq.Expressions;
+using SwaggerAntifraudeMYSQL.Controllers;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TIPOSPUESTOSTRABAJOController : GenericoController
+ {
+ public TIPOSPUESTOSTRABAJOController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.TIPOSPUESTOSTRABAJO
+ .Include(x => x.IDTIPOPERSONANavigation)
+ .Include(x=> x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x=> x.IDCONCEPTOGENERALNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.TIPOSPUESTOSTRABAJO
+ .Include(x => x.IDTIPOPERSONANavigation)
+ .Include(x => x.CONCEPTOSTIPOSPUESTOSTRABAJO).ThenInclude(x => x.IDCONCEPTOGENERALNavigation)
+ //.ThenInclude(pr => pr.IDPERSONANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDTIPOPUESTO == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSTRAMOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSTRAMOSController.cs
new file mode 100644
index 0000000..3914bfc
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOSTRAMOSController.cs
@@ -0,0 +1,43 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TIPOSTRAMOSController : GenericoController
+ {
+ public TIPOSTRAMOSController()
+ : base()
+ {
+ }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.TIPOSTRAMOS
+ .Include(x => x.IDTIPOTRAMOFICHEROXMLNavigation)
+ .Include(x => x.IDCODIGOTRAMOACUMULANavigation)
+ .Include(x => x.IDREGIMENAPLICACIONNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOS_PERSONALController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOS_PERSONALController.cs
new file mode 100644
index 0000000..c2af253
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TIPOS_PERSONALController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TIPOS_PERSONALController : GenericoController
+ {
+ public TIPOS_PERSONALController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TITULACIONESController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TITULACIONESController.cs
new file mode 100644
index 0000000..7737e8d
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TITULACIONESController.cs
@@ -0,0 +1,74 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TITULACIONESController : GenericoController
+ {
+ public TITULACIONESController()
+ : base()
+ {
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.TITULACIONES
+ .Include(p => p.IDPERSONANavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONA == id).ToListAsync();
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entity = context.TITULACIONES
+ .Include(x=> x.IDPERSONANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDTITULACION == id);
+
+ if (entity == null)
+ return NotFound();
+
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRABAJADORTIEMPOPARCIALController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRABAJADORTIEMPOPARCIALController.cs
new file mode 100644
index 0000000..1c7a696
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRABAJADORTIEMPOPARCIALController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TRABAJADORTIEMPOPARCIALController : GenericoController
+ {
+ public TRABAJADORTIEMPOPARCIALController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRIENIOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRIENIOSController.cs
new file mode 100644
index 0000000..21e2394
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/TRIENIOSController.cs
@@ -0,0 +1,46 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class TRIENIOSController : GenericoController
+ {
+ public TRIENIOSController()
+ : base()
+ {
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("GetWithIncludes/{id}")]
+ public async Task GetWithIncludes(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Consulta con Includes necesarios
+ var entity = await context.TRIENIOS
+ .Include(p => p.IDGRUPONavigation)
+ .AsNoTracking()
+ .Where(p => p.IDPERSONAL == id).ToListAsync();
+
+ // Verifica si la entidad no se encontró
+ if (entity == null)
+ return NotFound($"El puesto con ID {id} no fue encontrado.");
+
+ // Devuelve la entidad con las relaciones cargadas
+ return Ok(entity);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/UNIDADADMINISTRATIVAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/UNIDADADMINISTRATIVAController.cs
new file mode 100644
index 0000000..5378228
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/UNIDADADMINISTRATIVAController.cs
@@ -0,0 +1,16 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+using System.Diagnostics;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class UNIDADADMINISTRATIVAController : GenericoController
+ {
+ public UNIDADADMINISTRATIVAController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VALORESNOMINAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VALORESNOMINAController.cs
new file mode 100644
index 0000000..88030eb
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VALORESNOMINAController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class VALORESNOMINAController : GenericoController
+ {
+ public VALORESNOMINAController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VEHICULOSController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VEHICULOSController.cs
new file mode 100644
index 0000000..a1bf922
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VEHICULOSController.cs
@@ -0,0 +1,15 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.AspNetCore.Mvc;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [ApiController]
+ [Route("api/[controller]")]
+ public class VEHICULOSController : GenericoController
+ {
+ public VEHICULOSController()
+ : base()
+ {
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VIDA_ADMINISTRATIVAController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VIDA_ADMINISTRATIVAController.cs
new file mode 100644
index 0000000..0cd1c6c
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/VIDA_ADMINISTRATIVAController.cs
@@ -0,0 +1,227 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.EntityFrameworkCore;
+using Org.BouncyCastle.Asn1.Ocsp;
+using Serialize.Linq.Serializers;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Route("api/[controller]")]
+ [ApiController]
+ public class VIDA_ADMINISTRATIVAController : GenericoController
+ {
+ public VIDA_ADMINISTRATIVAController() : base() { }
+
+ [HttpGet]
+ public override async Task GetAll()
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = await context.VIDA_ADMINISTRATIVA
+ .Include(v => v.IDMOTIVONavigation)
+ .ThenInclude(m => m.IDTIPOAPTOSNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(x => x.IDRPTDESNavigation)
+ .ThenInclude(y => y.IDDEPARTAMENTONavigation)
+ .Include(v => v.IDTRAMOCARRERAHORIZONTALNavigation)
+ .Include(v => v.IDTIPOPERSONALNavigation)
+ .Include(v => v.NIVEL_OLDNavigation)
+ .Include(v => v.NIVELCNavigation)
+ .Include(v => v.GRUPOTNavigation)
+ .Include(v => v.OCUPACION_OLDNavigation)
+ .Include(v => v.IDPERSONALNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .AsNoTracking()
+ .ToListAsync();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("{id}")]
+ public override IActionResult GetById(int id)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ //var dbSet = context.Set();
+ var entities = context.VIDA_ADMINISTRATIVA
+ .Include(v => v.IDMOTIVONavigation)
+ .ThenInclude(m => m.IDTIPOAPTOSNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .Include(v => v.IDPERSONALNavigation)
+ .ThenInclude(x => x.IDGRUPOFUNCIONARIONavigation)
+ .Include(v => v.IDTRAMOCARRERAHORIZONTALNavigation)
+ .Include(v => v.IDTIPOPERSONALNavigation)
+ .Include(v => v.NIVEL_OLDNavigation)
+ .Include(v => v.GRUPOTNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(s => s.IDRPTDESNavigation)
+ .ThenInclude(y => y.IDDEPARTAMENTONavigation)
+
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ .AsNoTracking()
+ .FirstOrDefault(v => v.IDVIDA == id);
+
+
+
+ if (entities == null)
+ return NotFound();
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpPost("filtrar")] // Cambié a POST ya que estás usando [FromBody]
+ public override async Task Filtrar([FromBody] ExpressionWrapper request)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ if (deserializedExpression == null)
+ {
+ return BadRequest("La expresión deserializada es nula o incorrecta.");
+ }
+ var entities = await context.VIDA_ADMINISTRATIVA.Where(deserializedExpression)
+ .Include(v => v.IDMOTIVONavigation)
+ .ThenInclude(m => m.IDTIPOAPTOSNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .Include(v => v.IDTRAMOCARRERAHORIZONTALNavigation)
+ .Include(v => v.IDTIPOPERSONALNavigation)
+ .Include(v => v.NIVEL_OLDNavigation)
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ .Include(v => v.NIVELCNavigation)
+ .Include(v => v.GRUPOTNavigation)
+ .Include(v => v.OCUPACION_OLDNavigation)
+ .Include(v => v.IDPERSONALNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(gr => gr.GRUPO1Navigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(x => x.IDDEPARTAMENTONavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("puestospersona/{idPersona}")]
+ public async Task PuestosPersona(int idPersona)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ var entities = bdAntifraudeMYSQL.Utilidades.ObtienePuestoPersona(context,idPersona);
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet("vidaspersona/{idPersona}")]
+ public async Task VidasPersona(int idPersona)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ {
+ // Crear el deserializador
+ var serializer = new ExpressionSerializer(new Serialize.Linq.Serializers.JsonSerializer());
+
+ // Deserializar la expresión
+ //var deserializedExpression = serializer.DeserializeText(request.Expression) as Expression>;
+ //if (deserializedExpression == null)
+ //{
+ // return BadRequest("La expresión deserializada es nula o incorrecta.");
+ //}
+ var entities = await context.VIDA_ADMINISTRATIVA.Where(x => x.IDPERSONAL == idPersona)
+ .Include(v => v.IDMOTIVONavigation)
+ .ThenInclude(m => m.IDTIPOAPTOSNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .Include(v => v.IDTRAMOCARRERAHORIZONTALNavigation)
+ .Include(v => v.IDTIPOPERSONALNavigation)
+ .Include(v => v.NIVEL_OLDNavigation)
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ .Include(v => v.NIVELCNavigation)
+ .Include(v => v.GRUPOTNavigation)
+ .Include(v => v.LINEASVIDAADMINISTRATIVA)
+ .Include(v => v.OCUPACION_OLDNavigation)
+ .Include(v => v.IDPERSONALNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(x => x.IDDEPARTAMENTONavigation)
+ .AsNoTracking()
+ .ToListAsync();
+
+ // Verificar si el resultado es vacío
+ if (entities.Count == 0)
+ {
+ Console.WriteLine("La consulta no devolvió resultados.");
+ }
+
+ return Ok(entities);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/WeatherForecastController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/WeatherForecastController.cs
deleted file mode 100644
index 82e69e5..0000000
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/WeatherForecastController.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-
-namespace SwaggerAntifraudeMYSQL.Controllers
-{
- [ApiController]
- [Route("[controller]")]
- public class WeatherForecastController : ControllerBase
- {
- private static readonly string[] Summaries = new[]
- {
- "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
- };
-
- private readonly ILogger _logger;
-
- public WeatherForecastController(ILogger logger)
- {
- _logger = logger;
- }
-
- [HttpGet(Name = "GetWeatherForecast")]
- public IEnumerable Get()
- {
- return Enumerable.Range(1, 5).Select(index => new WeatherForecast
- {
- Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
- TemperatureC = Random.Shared.Next(-20, 55),
- Summary = Summaries[Random.Shared.Next(Summaries.Length)]
- })
- .ToArray();
- }
- }
-}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/vePersonasController.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/vePersonasController.cs
new file mode 100644
index 0000000..a91db49
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Controllers/vePersonasController.cs
@@ -0,0 +1,42 @@
+using Microsoft.AspNetCore.Mvc;
+using bdAntifraudeMYSQL.dbcontext;
+using SwaggerAntifraudeMYSQL.Controllers;
+using bdAntifraudeMYSQL.vistas;
+using System.ComponentModel;
+using Microsoft.AspNetCore.Authorization; // Asegúrate de importar el namespace correcto para VePersonas
+
+namespace SwaggerAntifraudeMYSQL.Controllers
+{
+ [Authorize]
+ [Route("api/[controller]")]
+ [ApiController]
+ public class VePersonasController : ControllerBase
+ {
+ ///
+ /// Obtiene una lista de VePersonas con un filtro opcional de activos.
+ ///
+ /// Indica si solo se deben devolver las personas activas.
+ /// Lista de VePersonas.
+ [Authorize(Policy = "LecturaPolicy")]
+ [HttpGet]
+ public IActionResult ObtenerVistaPersonas(bool activos = true)
+ {
+ try
+ {
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: true))
+ {
+ // Llamar al método ObtenerVistaPersonas
+ var personas = VePersonas.ObtenerVistaPersonas(context, activos);
+
+
+
+ return Ok(personas);
+ }
+ }
+ catch (Exception ex)
+ {
+ return StatusCode(500, $"Error interno del servidor: {ex.Message}");
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/CertificateProxyLoginDto.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/CertificateProxyLoginDto.cs
new file mode 100644
index 0000000..dcfaa26
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/CertificateProxyLoginDto.cs
@@ -0,0 +1,9 @@
+namespace SwaggerAntifraudeMYSQL.DTOs
+{
+ public class CertificateProxyLoginDto
+ {
+ public string Dni { get; set; } = string.Empty;
+ public string? Origen { get; set; }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/LoginDto.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/LoginDto.cs
new file mode 100644
index 0000000..f1f6e19
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/DTOs/LoginDto.cs
@@ -0,0 +1,9 @@
+namespace SwaggerAntifraudeMYSQL.DTOs
+{
+ public class LoginDto
+ {
+ public string NombreUsuario { get; set; }
+ public string Contraseña { get; set; }
+ public string Origen { get; set; }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Middlewares/ExceptionMiddleware.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Middlewares/ExceptionMiddleware.cs
new file mode 100644
index 0000000..d856d5e
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Middlewares/ExceptionMiddleware.cs
@@ -0,0 +1,54 @@
+using Microsoft.EntityFrameworkCore;
+using System.Net;
+using System.Text.Json;
+
+namespace SwaggerAntifraudeMYSQL.Middlewares
+{
+ public class ExceptionMiddleware
+ {
+ private readonly RequestDelegate _next;
+ private readonly ILogger _logger;
+
+ public ExceptionMiddleware(RequestDelegate next, ILogger logger)
+ {
+ _next = next;
+ _logger = logger;
+ }
+
+ public async Task InvokeAsync(HttpContext context)
+ {
+ try
+ {
+ await _next(context);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError($"Ocurrió un error: {ex}");
+
+ switch (ex)
+ {
+ case DbUpdateException dbEx:
+ await HandleExceptionAsync(context, "Error al actualizar la base de datos.", HttpStatusCode.BadRequest);
+ break;
+ case KeyNotFoundException _:
+ await HandleExceptionAsync(context, "Recurso no encontrado.", HttpStatusCode.NotFound);
+ break;
+ default:
+ await HandleExceptionAsync(context, "Ocurrió un error inesperado. Por favor, inténtalo de nuevo más tarde.", HttpStatusCode.InternalServerError);
+ break;
+ }
+ }
+ }
+
+ private static Task HandleExceptionAsync(HttpContext context, string message, HttpStatusCode statusCode)
+ {
+ context.Response.ContentType = "application/json";
+ context.Response.StatusCode = (int)statusCode;
+
+ var response = new { message };
+ var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase };
+
+ return context.Response.WriteAsync(JsonSerializer.Serialize(response, options));
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/Personal.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/Personal.cs
new file mode 100644
index 0000000..9cc37e8
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/Personal.cs
@@ -0,0 +1,19 @@
+namespace SwaggerAntifraudeMYSQL.Models
+{
+ public class Personal
+ {
+ public string Nombre { get; set; }
+ public string Dni { get; set; }
+ public int idPersona { get; set; }
+ public string Departamento { get; set; }
+ public string Roll { get; set; }
+ public string Grupo { get; set; }
+ public int NumeroInciPorAceptar { get; set; }
+ public int NumeroInciBorrador { get; set; }
+ public DateTime FeIniInciPorAceptar { get; set; }
+ public DateTime FeFinInciPorAceptar { get; set; }
+ public DateTime FeIniInciBorrador { get; set; }
+ public DateTime FeFinInciBorrador { get; set; }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/ResultadoIdentificacion.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/ResultadoIdentificacion.cs
new file mode 100644
index 0000000..1a25b1d
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Models/ResultadoIdentificacion.cs
@@ -0,0 +1,13 @@
+using Microsoft.EntityFrameworkCore.Metadata.Conventions.Infrastructure;
+
+namespace SwaggerAntifraudeMYSQL.Models
+{
+ public class ResultadoIdentificacion
+ {
+ public int resultado { get; set; }
+ public List Personas { get; set; }
+ public DateTime FeIniInciPorAceptar { get; set; }
+ public DateTime FeFinInciPorAceptar { get; set; }
+ public string errores { get; set; }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Program.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Program.cs
index 48863a6..bcd27f7 100644
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/Program.cs
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Program.cs
@@ -1,25 +1,159 @@
+
+using Microsoft.IdentityModel.Tokens;
+using System.Text;
+using Microsoft.OpenApi.Models;
+using System.Reflection;
+using System.Text.Json.Serialization;
+using SwaggerAntifraudeMYSQL.Middlewares;
+using Microsoft.AspNetCore.Authentication.JwtBearer;
+
var builder = WebApplication.CreateBuilder(args);
+SwaggerAntifraudeMYSQL.ContextosMySql.Configurar(builder.Configuration["MySql:NombreConexion"]);
-// Add services to the container.
-builder.Services.AddControllers();
-// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
-builder.Services.AddEndpointsApiExplorer();
-builder.Services.AddSwaggerGen();
+// 1. Configuración de Servicios
+
+// a. Configurar servicios de controladores
+builder.Services.AddControllers()
+.ConfigureApiBehaviorOptions(options =>
+{
+ options.SuppressModelStateInvalidFilter = true; // Desactiva la validación automática del estado del modelo
+})
+.AddJsonOptions(options =>
+{
+ options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
+});
+
+// b. Configuración de JWT
+var jwtSettings = builder.Configuration.GetSection("Jwt");
+var keyString = jwtSettings["Key"];
+if (string.IsNullOrEmpty(keyString))
+{
+ throw new ArgumentNullException("JWT Key is not configured.");
+}
+var key = Encoding.UTF8.GetBytes(keyString);
+
+if (!double.TryParse(jwtSettings["ExpiresInMinutes"], out double expiresInMinutes))
+{
+ expiresInMinutes = 60; // Valor por defecto
+}
+
+builder.Services.AddAuthentication(options =>
+{
+ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
+ options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
+})
+.AddJwtBearer(options =>
+{
+ options.TokenValidationParameters = new TokenValidationParameters
+ {
+ ValidateIssuer = true,
+ ValidateAudience = true,
+ ValidateLifetime = true,
+ ValidateIssuerSigningKey = true,
+ ValidIssuer = jwtSettings["Issuer"],
+ ValidAudience = jwtSettings["Audience"],
+ IssuerSigningKey = new SymmetricSecurityKey(key)
+ };
+});
+
+builder.WebHost.ConfigureKestrel(options =>
+{
+ options.ConfigureHttpsDefaults(httpsOptions =>
+ {
+ httpsOptions.ClientCertificateMode =
+ Microsoft.AspNetCore.Server.Kestrel.Https.ClientCertificateMode.AllowCertificate;
+
+ // (Opcional, en pruebas)
+ httpsOptions.AllowAnyClientCertificate();
+ });
+});
+
+
+
+
+
+// c. Definir Políticas de Autorización
+builder.Services.AddAuthorization(options =>
+{
+ options.AddPolicy("SupervisorPolicy", policy => policy.RequireRole("Supervisor"));
+ options.AddPolicy("LecturaPolicy", policy => policy.RequireRole("Lectura", "Supervisor"));
+});
+
+// d. Configurar Swagger con soporte para JWT
+builder.Services.AddSwaggerGen(c =>
+{
+ c.SwaggerDoc("v1", new OpenApiInfo { Title = "Swagger OAAF API MySQL", Version = "v1" });
+
+ // Definir el esquema de seguridad JWT
+ var securityScheme = new OpenApiSecurityScheme
+ {
+ Name = "Authorization",
+ Description = "Ingrese 'Bearer' seguido de su token en el campo de texto.\n\nEjemplo: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6...'",
+ In = ParameterLocation.Header,
+ Type = SecuritySchemeType.ApiKey,
+ Scheme = "Bearer",
+ BearerFormat = "JWT"
+ };
+
+ c.AddSecurityDefinition("Bearer", securityScheme);
+
+
+ var securityRequirement = new OpenApiSecurityRequirement
+ {
+ {
+ new OpenApiSecurityScheme
+ {
+ Reference = new OpenApiReference
+ {
+ Type = ReferenceType.SecurityScheme,
+ Id = "Bearer"
+ }
+ },
+ new string[] {}
+ }
+ };
+
+ c.AddSecurityRequirement(securityRequirement);
+
+ // Incluir comentarios XML para Swagger
+ var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
+ var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
+ if (File.Exists(xmlPath))
+ {
+ c.IncludeXmlComments(xmlPath);
+ }
+});
var app = builder.Build();
-// Configure the HTTP request pipeline.
+// 2. Configuración del Pipeline HTTP
+
+// a. Middleware de Excepciones
+app.UseMiddleware();
+
+// b. Habilitar Swagger solo en Desarrollo
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
- app.UseSwaggerUI();
+ app.UseSwaggerUI(c =>
+ {
+ c.SwaggerEndpoint("/swagger/v1/swagger.json", "SwaggerAntifraudeMYSQL API V1");
+ c.RoutePrefix = string.Empty; // Swagger en la raíz
+ });
}
-app.UseHttpsRedirection();
+//app.UseHttpsRedirection();
+// c. Configurar CORS (Opcional)
+app.UseCors("AllowSpecificOrigin");
+
+// d. Autenticación y Autorización
+app.UseAuthentication();
app.UseAuthorization();
+// e. Mapear Controladores
app.MapControllers();
+// f. Ejecutar la Aplicación
app.Run();
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/README.md b/Antifraude.Net/SwaggerAntifraudeMYSQL/README.md
new file mode 100644
index 0000000..068bca9
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/README.md
@@ -0,0 +1,23 @@
+# SwaggerAntifraudeMYSQL
+
+Esta API reproduce las rutas de `SwaggerAntifraude` y utiliza `bdAntifraudeMYSQL`.
+
+## Conexión MySQL
+
+La cadena de conexión se resuelve en `bdAntifraudeMYSQL/dbcontext/conexion.cs`, mediante el método original `tsGestionAntifraude.NuevoContexto(NombreConexion: ...)`. No se necesitan las claves `ConnectionStrings:WriteConnection` ni `ConnectionStrings:ReadOnlyConnection`.
+
+El nombre de la entrada se selecciona en `appsettings.json` de este proyecto:
+
+```json
+"MySql": {
+ "NombreConexion": "Producción"
+}
+```
+
+`Producción` es el nombre de la entrada actualmente activa en `conexion.cs`; el nombre por sí solo no indica a qué servidor o base apunta. Comprueba que esa entrada corresponde a la nueva base MySQL antes de probar rutas que escriban datos. Para elegir otra entrada, cambia solo `MySql:NombreConexion` en esta API y asegúrate de que exista en `conexion.cs`.
+
+## Ejecutar
+
+El Swagger conserva la autenticación JWT de la API original. Su sección `Jwt` se ha copiado a `appsettings.json` de esta instancia para mantener compatibles los tokens al cambiar la URL de la API.
+
+Desde esta carpeta, ejecuta `dotnet run --project SwaggerAntifraudeMYSQL.csproj --launch-profile http`. La interfaz Swagger aparece en la raíz de la URL indicada por el perfil `http` en Development. Las rutas `api/...` mantienen los nombres de los controladores originales.
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioAlmacenamiento.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioAlmacenamiento.cs
new file mode 100644
index 0000000..f65a923
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioAlmacenamiento.cs
@@ -0,0 +1,292 @@
+using System;
+using System.IO;
+using System.Linq;
+using Renci.SshNet;
+using bdAntifraudeMYSQL.dbcontext;
+using SwaggerAntifraudeMYSQL.Models;
+using Microsoft.EntityFrameworkCore;
+using bdAntifraudeMYSQL.clases;
+
+namespace SwaggerAntifraudeMYSQL.Servicios
+{
+
+ public class ServicioAlmacenamiento
+ {
+ private static IConfiguration Conf { get; set; }
+ public ResultadoAlmacenaFicheroAtransmitir DevolverResultadoAlmacenaFicheroAtransmitir(int idRegistro, string tabla, string ficheroBase64)
+ {
+ var resultado = new ResultadoAlmacenaFicheroAtransmitir();
+
+ try
+ {
+ // Convertir el archivo Base64 a un flujo
+ var stream = new MemoryStream(Convert.FromBase64String(ficheroBase64));
+
+ // Obtener el nombre de la base de datos utilizando el contexto
+ string baseDeDatos;
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ baseDeDatos = context.Database.GetDbConnection().Database;
+ }
+
+ if (string.IsNullOrEmpty(baseDeDatos))
+ {
+ Conf = new ConfigurationBuilder()
+ .AddJsonFile("appsettings.json")
+ .Build();
+ baseDeDatos = Conf.GetSection("BaseDatos").Value; ;
+ }
+
+ // Conectar al servidor SFTP utilizando el contexto
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ using (var clienteSftp = ConectarServidorSftp(context))
+ {
+ clienteSftp.Connect();
+
+ // Generar la ruta base
+ string ruta = $"{baseDeDatos.ToLower()}/registrodepersonal";
+
+ switch (tabla.ToUpper())
+ {
+ case "LINEAVIDAADMINISTRATIVA":
+ ruta += "/lineavidaadministrativa/";
+ break;
+ case "FORMACION":
+ ruta += "/formacion/";
+ break;
+ case "TITULACION":
+ ruta += "/titulacion/";
+ break;
+ case "DOCENCIA":
+ ruta += "/docencia/";
+ break;
+ case "INCIDENCIA":
+ ruta = $"{baseDeDatos.ToLower()}/control_horario/";
+ break;
+ default:
+ resultado.Resultado = 1;
+ resultado.Mensaje = "Tabla no contemplada entre las posibles para tener ficheros";
+ return resultado;
+ }
+
+ // Subir el archivo al servidor SFTP
+ ruta += $"{idRegistro}.pdf";
+ clienteSftp.UploadFile(stream, ruta);
+ clienteSftp.Disconnect();
+
+ resultado.Resultado = 0;
+ resultado.Mensaje = "Fichero almacenado";
+ }
+ }
+ catch (Exception ex)
+ {
+ resultado.Resultado = 1;
+ resultado.Mensaje = $"ERROR de generación: {ex.Message}";
+
+ if (ex.InnerException != null)
+ {
+ resultado.Mensaje += $" {ex.InnerException.Message}";
+ }
+ }
+
+ return resultado;
+ }
+ public ResultadoObtenFicheroAtransmitir DevolverObtenFicheroAtransmitir(int idRegistro, string tabla, string nif)
+ {
+ var resultado = new ResultadoObtenFicheroAtransmitir();
+
+ try
+ {
+ // Obtener el nombre de la base de datos utilizando el contexto
+ string baseDeDatos;
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ baseDeDatos = context.Database.GetDbConnection().Database;
+ }
+
+ Conf = new ConfigurationBuilder()
+ .AddJsonFile("appsettings.json")
+ .Build();
+ baseDeDatos = Conf.GetSection("BaseDatos").Value; ;
+
+ //if (string.IsNullOrEmpty(baseDeDatos))
+ //{
+ // baseDeDatos = "preproduccion";
+ //}
+
+ // Generar la ruta base
+ string ruta = $"{baseDeDatos.ToLower()}/registrodepersonal";
+
+ switch (tabla.ToUpper())
+ {
+ case "LINEAVIDAADMINISTRATIVA":
+ ruta += "/lineavidaadministrativa/";
+ break;
+ case "FORMACION":
+ ruta += "/formacion/";
+ break;
+ case "TITULACION":
+ ruta += "/titulacion/";
+ break;
+ case "DOCENCIA":
+ ruta += "/docencia/";
+ break;
+ case "INCIDENCIA":
+ ruta = $"{baseDeDatos.ToLower()}/control_horario/";
+ break;
+ case "CSV":
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ //ruta += context.VALIDACIONDOCUMENTOS.First(x => x.CSV == nif).RUTAFICHERO;
+ }
+ break;
+ default:
+ resultado.Resultado = 1;
+ resultado.Mensaje = "Tabla no contemplada entre las posibles para tener ficheros";
+ return resultado;
+ }
+
+ if (tabla.ToUpper() != "CSV")
+ {
+ ruta += $"{idRegistro}.pdf";
+ }
+
+ resultado.Mensaje = $"Ruta: {ruta}";
+
+ // Descargar el archivo desde el servidor SFTP
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ using (var clienteSftp = ConectarServidorSftp(context))
+ {
+ clienteSftp.Connect();
+
+ using var memoryStream = new MemoryStream();
+ clienteSftp.DownloadFile(ruta, memoryStream);
+ clienteSftp.Disconnect();
+
+ resultado.Pdf = memoryStream.ToArray();
+ }
+
+ resultado.Resultado = 0;
+ }
+ catch (Exception ex)
+ {
+ resultado.Resultado = 1;
+ resultado.Mensaje = $"ERROR de generación: {ex.Message}";
+
+ if (ex.InnerException != null)
+ {
+ resultado.Mensaje += $" {ex.InnerException.Message}";
+ }
+ }
+
+ return resultado;
+ }
+ public ResultadoObtenFicheroAtransmitir EliminarFicheroAtransmitir(int idRegistro, string tabla, string nif)
+ {
+ var resultado = new ResultadoObtenFicheroAtransmitir();
+
+ try
+ {
+ // Obtener el nombre de la base de datos utilizando el contexto
+ string baseDeDatos;
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ baseDeDatos = context.Database.GetDbConnection().Database;
+ }
+
+ Conf = new ConfigurationBuilder()
+ .AddJsonFile("appsettings.json")
+ .Build();
+ baseDeDatos = Conf.GetSection("BaseDatos").Value; ;
+
+ //if (string.IsNullOrEmpty(baseDeDatos))
+ //{
+ // baseDeDatos = "preproduccion";
+ //}
+
+ // Generar la ruta base
+ string ruta = $"{baseDeDatos.ToLower()}/registrodepersonal";
+
+ switch (tabla.ToUpper())
+ {
+ case "LINEAVIDAADMINISTRATIVA":
+ ruta += "/lineavidaadministrativa/";
+ break;
+ case "FORMACION":
+ ruta += "/formacion/";
+ break;
+ case "TITULACION":
+ ruta += "/titulacion/";
+ break;
+ case "DOCENCIA":
+ ruta += "/docencia/";
+ break;
+ case "INCIDENCIA":
+ ruta = $"{baseDeDatos.ToLower()}/control_horario/";
+ break;
+ case "CSV":
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ {
+ //ruta += context.VALIDACIONDOCUMENTOS.First(x => x.CSV == nif).RUTAFICHERO;
+ }
+ break;
+ default:
+ resultado.Resultado = 1;
+ resultado.Mensaje = "Tabla no contemplada entre las posibles para tener ficheros";
+ return resultado;
+ }
+
+ if (tabla.ToUpper() != "CSV")
+ {
+ ruta += $"{idRegistro}.pdf";
+ }
+
+ resultado.Mensaje = $"Ruta: {ruta}";
+
+ // Descargar el archivo desde el servidor SFTP
+ using (var context = ContextosMySql.NuevoContexto(SoloLectura: true))
+ using (var clienteSftp = ConectarServidorSftp(context))
+ {
+ clienteSftp.Connect();
+
+ //using var memoryStream = new MemoryStream();
+ clienteSftp.DeleteFile(ruta);
+ clienteSftp.Disconnect();
+
+ //resultado.Pdf = memoryStream.ToArray();
+ }
+
+ resultado.Resultado = 0;
+ }
+ catch (Exception ex)
+ {
+ resultado.Resultado = 1;
+ resultado.Mensaje = $"ERROR de generación: {ex.Message}";
+
+ if (ex.InnerException != null)
+ {
+ resultado.Mensaje += $" {ex.InnerException.Message}";
+ }
+ }
+
+ return resultado;
+ }
+ private SftpClient ConectarServidorSftp(tsGestionAntifraude context)
+ {
+ var configuraciones = context.ENUMERACIONES
+ .Where(x => x.IDGRUPOENUMERACIONNavigation.GRUPO == "SERVIDORSFTP")
+ .ToList();
+
+ var servidor = configuraciones.First(n => n.CODIGO == "SERVIDORSFTP.SERVIDOR").VALORALFABETICO1;
+ var puerto = int.Parse(configuraciones.First(n => n.CODIGO == "SERVIDORSFTP.PUERTO").VALORALFABETICO1);
+ var usuario = configuraciones.First(n => n.CODIGO == "SERVIDORSFTP.USUARIO").VALORALFABETICO1;
+ var clave = tsUtilidades.crypt.FEncS(
+ configuraciones.First(n => n.CODIGO == "SERVIDORSFTP.CLAVE").VALORALFABETICO1,
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/\\-*",
+ "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.:/\\-*",
+ -875421649);
+
+ return new SftpClient(servidor, puerto, usuario, clave);
+ }
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioFormularios.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioFormularios.cs
new file mode 100644
index 0000000..0047fe7
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServicioFormularios.cs
@@ -0,0 +1,820 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL.dbcontext;
+using bdAntifraudeMYSQL.DatRecTri;
+
+namespace SwaggerAntifraudeMYSQL.Servicios
+{
+ public class ServicioFormularios
+ {
+ // public byte[] GenerarFormulario(
+ // string claveFormulario,
+ // string idPersona,
+ // string Motivo,
+ // string texto1,
+ // string texto2,
+ // string FechaEfecto,
+ // string Organo,
+ // string FechaEmision,
+ // string Extra)
+ // {
+ // switch (claveFormulario)
+ // {
+ // case "TomPos":
+ // return DevuelveTomaPosesion(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision);
+ // case "CumTri":
+ // return DevuelveCumplimientoTrienios(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision, "RECTRI");
+ // case "SolTri":
+ // return DevuelveCumplimientoTrienios(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision, "SOLTRI");
+ // case "ComInt":
+ // return DevuelveComunicacionInterna(idPersona, texto1, texto2, FechaEmision);
+ // case "AcuJub":
+ // return DevuelveAcuerdoJubilacion(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision, Extra);
+ // case "AcuBaj":
+ // return DevuelveAcuerdoBaja(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision);
+ // case "AcuCes":
+ // return DevuelveAcuerdoCese(idPersona, Motivo, texto1, FechaEfecto, Organo, FechaEmision);
+ // case "ConGra":
+ // return DevuelveConsolidacionGrado(idPersona, Motivo, texto1, texto2, FechaEfecto, Organo, FechaEmision);
+ // default:
+ // return null;
+ // }
+ // }
+
+ // private byte[] DevuelveTomaPosesion(
+ //string idPersona,
+ //string motivo,
+ //string texto1,
+ //string fechaEfecto,
+ //string organo,
+ //string fechaEmision)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per = new PERSONAS();
+ // var LisTomPos = new List();
+ // var ForTomPos = new bdAntifraudeMYSQL.DatRecTri.RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForTomPos.Nif = per.NIF;
+ // ForTomPos.Apellidos = per.APELLIDOS;
+ // ForTomPos.Nombre = per.NOMBRE;
+ // ForTomPos.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForTomPos.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForTomPos.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForTomPos.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForTomPos.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+
+ // PUESTOS PuestoTrabajo = null;
+
+ // var puestosPersona = context.PUESTOS.Where(x => x.IDPERSONAL == per.IDPERSONA);
+ // if (puestosPersona.Any())
+ // {
+ // PuestoTrabajo = puestosPersona
+ // .OrderByDescending(x => x.IDRPTNavigation.F_PARLAMENTO.Value)
+ // .First();
+
+ // ForTomPos.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+ // }
+
+ // if (per.DEPARTAMENTOACTUAL != null)
+ // ForTomPos.Departamento = per.IDDEPARTAMENTONavigation.DESCRIPCION;
+
+ // if (PuestoTrabajo != null)
+ // {
+ // ForTomPos.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForTomPos.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForTomPos.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForTomPos.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ // ForTomPos.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForTomPos.MotivoTomaPosesion = motivo;
+ // ForTomPos.texto1 = texto1;
+ // ForTomPos.FechaEfectoTomaPosesion = fechaEfecto;
+ // ForTomPos.OrganoCompetente = organo;
+ // ForTomPos.FechaEmision = fechaEmision;
+ // }
+
+ // LisTomPos.Add(ForTomPos);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "TOMPOS");
+ // var idPlantilla = pl.IDPLANTILLA;
+
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // //return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisTomPos).ToArray();
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // return null;
+ // }
+ // }
+
+
+
+ // private byte[] DevuelveCumplimientoTrienios(
+ // string idPersona,
+ // string motivo,
+ // string texto1,
+ // string fechaEfecto,
+ // string organo,
+ // string fechaEmision,
+ // string Tipo)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per=null;
+ // var LisCumTri = new List();
+ // var ForCumTri = new bdAntifraudeMYSQL.DatRecTri.RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForCumTri.Nif = per.NIF;
+ // ForCumTri.Apellidos = per.APELLIDOS;
+ // ForCumTri.Nombre = per.NOMBRE;
+ // ForCumTri.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForCumTri.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForCumTri.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForCumTri.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForCumTri.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+ // ForCumTri.Localidad = per.NombrePoblacion;
+ // ForCumTri.Provincia = per.NombreProvincia;
+
+ // PUESTOS PuestoTrabajo = null;
+ // var iDSitRptAct = context.ENUMERACIONES.First(x => x.CODIGO == "SITRPTMAESTRO.ACT").IDENUMERACION;
+
+ // var puestosActivos = context.PUESTOS
+ // .Where(x => x.IDPERSONAL == per.IDPERSONA && x.IDRPTNavigation.IDSITUACION == iDSitRptAct);
+
+ // if (puestosActivos.Any())
+ // {
+ // PuestoTrabajo = puestosActivos.First();
+ // ForCumTri.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+ // }
+
+ // if (per.FECHACUMPLIMIENTOPROXTRIENIO.HasValue)
+ // {
+ // //Truncamos la fecha a los primeros 10 caracteres
+ // var fechaProx = per.FECHACUMPLIMIENTOPROXTRIENIO.Value;
+ // ForCumTri.FecVenTri = fechaProx.ToString("yyyy-MM-dd").Substring(0, 10);
+
+ // if (fechaProx.Day == 1)
+ // {
+ // ForCumTri.FechaEfeEco = fechaProx.ToString("yyyy-MM-dd").Substring(0, 10);
+ // }
+ // else
+ // {
+ // var Fechaefe = fechaProx.AddMonths(1);
+ // var primerDiaMesSiguiente = new DateTime(Fechaefe.Year, Fechaefe.Month, 1);
+ // ForCumTri.FechaEfeEco = primerDiaMesSiguiente.ToString("yyyy-MM-dd").Substring(0, 10);
+ // }
+
+ // ForCumTri.FecCumProTri = fechaProx.AddYears(3).ToString("yyyy-MM-dd").Substring(0, 10);
+ // }
+
+ // //Calcular trienios
+ // if (per.TRIENIOS.Any())
+ // {
+ // foreach (var trienio in per.TRIENIOS.ToList())
+ // {
+ // var grupoTrim = trienio.GRUPO.Trim();
+ // switch (grupoTrim)
+ // {
+ // case "A1":
+ // case "I":
+ // ForCumTri.TriA1 = trienio.TC;
+ // if (per.GRUPOFUNCIONARIODESCRIPCION == "A1")
+ // ForCumTri.TriA1 = (int)(trienio.TC + trienio.TOA + 1);
+ // break;
+ // case "A2":
+ // case "II":
+ // ForCumTri.TriA2 = trienio.TC;
+ // if (per.GRUPOFUNCIONARIODESCRIPCION == "A2")
+ // ForCumTri.TriA2 = trienio.TC + trienio.TOA + 1;
+ // break;
+ // case "C1":
+ // case "III":
+ // ForCumTri.TriC1 = trienio.TC;
+ // if (per.GRUPOFUNCIONARIODESCRIPCION == "C1")
+ // ForCumTri.TriC1 = trienio.TC + trienio.TOA + 1;
+ // break;
+ // case "C2":
+ // case "IV":
+ // ForCumTri.TriC2 = trienio.TC;
+ // if (per.GRUPOFUNCIONARIODESCRIPCION == "C2")
+ // ForCumTri.TriC2 = trienio.TC + trienio.TOA + 1;
+ // break;
+ // case "E":
+ // case "V":
+ // ForCumTri.TriE = trienio.TC;
+ // if (per.GRUPOFUNCIONARIODESCRIPCION == "E")
+ // ForCumTri.TriE = trienio.TC + trienio.TOA + 1;
+ // break;
+ // }
+ // }
+ // }
+ // else
+ // {
+ // //No hay trienios, se asigna 1 según el grupo
+ // if (!string.IsNullOrWhiteSpace(per.GRUPOFUNCIONARIODESCRIPCION))
+ // {
+ // switch (per.GRUPOFUNCIONARIODESCRIPCION.Trim())
+ // {
+ // case "A1":
+ // ForCumTri.TriA1 = 1;
+ // break;
+ // case "A2":
+ // ForCumTri.TriA2 = 1;
+ // break;
+ // case "C1":
+ // ForCumTri.TriC1 = 1;
+ // break;
+ // case "C2":
+ // ForCumTri.TriC2 = 1;
+ // break;
+ // case "E":
+ // ForCumTri.TriE = 1;
+ // break;
+ // }
+ // }
+ // else if (PuestoTrabajo != null)
+ // {
+ // //Si no hay grupo en persona, se toma del puesto de trabajo
+ // var grupoPT = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1.Trim();
+ // switch (grupoPT)
+ // {
+ // case "A1":
+ // ForCumTri.TriA1 = 1;
+ // break;
+ // case "A2":
+ // ForCumTri.TriA2 = 1;
+ // break;
+ // case "C1":
+ // ForCumTri.TriC1 = 1;
+ // break;
+ // case "C2":
+ // ForCumTri.TriC2 = 1;
+ // break;
+ // case "E":
+ // ForCumTri.TriE = 1;
+ // break;
+ // }
+ // }
+ // }
+
+ // //Departamento y otros datos del puesto
+ // if (PuestoTrabajo != null)
+ // {
+ // ForCumTri.Departamento = PuestoTrabajo.IDRPTDESNavigation.DEPARTAMENTO;
+ // ForCumTri.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForCumTri.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForCumTri.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForCumTri.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+
+ // if (per.NIVEL != null)
+ // ForCumTri.Nivel = per.IDNIVELRPTNavigation.NIVEL1;
+
+ // ForCumTri.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForCumTri.MotivoTomaPosesion = motivo;
+ // ForCumTri.texto1 = texto1;
+
+ // if (!string.IsNullOrEmpty(fechaEfecto) && fechaEfecto.Length >= 10)
+ // ForCumTri.FechaEfectoTomaPosesion = fechaEfecto.Substring(0, 10);
+
+ // ForCumTri.OrganoCompetente = organo;
+ // ForCumTri.FechaEmision = fechaEmision;
+
+ // ForCumTri.TolTri = per.TRIENIOS.Sum(x => x.TC) + per.TRIENIOS.Sum(x => x.TOA);
+ // ForCumTri.texto1 = (ForCumTri.TolTri + 1).ToString();
+
+ // if (per.FECHACUMPLIMIENTOPROXTRIENIO.HasValue)
+ // {
+ // var fechaProx = per.FECHACUMPLIMIENTOPROXTRIENIO.Value;
+ // ForCumTri.texto2 = fechaProx.Day.ToString().PadLeft(2, '0') + " de " +
+ // tsUtilidades.Extensiones.DateTimeExtensions.MesCastellano(fechaProx) + " de " +
+ // fechaProx.Year.ToString();
+ // }
+ // }
+
+ // LisCumTri.Add(ForCumTri);
+
+ // if (per != null && per.IDADSCRIPCIONRPTNavigation.DESCRIPCION == "LABORAL")
+ // {
+ // switch (ForCumTri.Grupo)
+ // {
+ // case "A1":
+ // ForCumTri.Grupo = "I";
+ // break;
+ // case "A2":
+ // ForCumTri.Grupo = "II";
+ // break;
+ // case "C1":
+ // ForCumTri.Grupo = "III";
+ // break;
+ // case "C2":
+ // ForCumTri.Grupo = "IV";
+ // break;
+ // case "E":
+ // ForCumTri.Grupo = "V";
+ // break;
+ // }
+ // }
+
+ // PLANTILLAS pl;
+
+ // if (Tipo == "RECTRI")
+ // {
+ // pl = context.PLANTILLAS.First(x => x.CODIGO == "RECTRI");
+ // if (per.IDADSCRIPCIONRPTNavigation.DESCRIPCION == "LABORAL")
+ // pl = context.PLANTILLAS.First(x => x.CODIGO == "RECTRIL");
+ // }
+ // else
+ // {
+ // pl = context.PLANTILLAS.First(x => x.CODIGO == "RECTRI4");
+ // if (per.IDADSCRIPCIONRPTNavigation.DESCRIPCION == "LABORAL")
+ // pl = context.PLANTILLAS.First(x => x.CODIGO == "RECTRI4L");
+ // }
+
+ // var idPlantilla = pl.IDPLANTILLA;
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // //return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisCumTri).ToArray();
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // return null;
+ // }
+ // }
+
+
+ // private byte[] DevuelveComunicacionInterna(
+ // string idPersona,
+ // string texto1,
+ // string texto2,
+ // string fechaEmision)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per;
+ // var LisCumTri = new List();
+ // var ForCumTri = new bdAntifraudeMYSQL.DatRecTri.RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForCumTri.Nif = per.NIF;
+ // ForCumTri.Apellidos = per.APELLIDOS;
+ // ForCumTri.Nombre = per.NOMBRE;
+ // ForCumTri.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForCumTri.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForCumTri.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForCumTri.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForCumTri.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+ // ForCumTri.Localidad = per.NombrePoblacion;
+ // ForCumTri.Provincia = per.NombreProvincia;
+
+ // if (per.IDDEPARTAMENTO != null)
+ // ForCumTri.Departamento = per.IDDEPARTAMENTONavigation.DESCRIPCION;
+
+ // ForCumTri.FechaEmision = fechaEmision;
+ // ForCumTri.texto1 = texto1;
+ // ForCumTri.texto2 = texto2;
+ // }
+
+ // LisCumTri.Add(ForCumTri);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "COMUNI");
+ // var idPlantilla = pl.IDPLANTILLA;
+
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // //return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisCumTri).ToArray();
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // return null;
+ // }
+ // }
+
+
+ // private byte[] DevuelveAcuerdoJubilacion(
+ //string idPersona,
+ //string motivo,
+ //string texto1,
+ //string fechaEfecto,
+ //string organo,
+ //string fechaEmision,
+ //string fechaEfe)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // var LisAcuJub = new List();
+ // var ForAcuJub = new RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // var per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // int Años = 0;
+ // if (per.TRIENIOS.Any())
+ // {
+ // Años = (int)per.TRIENIOS.Sum(x => x.TC + x.TOA) * 3;
+ // }
+
+ // var Fechafin = tsUtilidades.Extensiones.DateTimeExtensions.FechaHoraStringADate(fechaEfe);
+
+ // if (per.FECHACUMPLIMIENTOPROXTRIENIO.HasValue && Fechafin.HasValue)
+ // {
+ // var TiemSer = bdAntifraudeMYSQL.Utilidades.AnosMesesDias(per.FECHACUMPLIMIENTOPROXTRIENIO.Value.AddYears(-3), Fechafin.Value);
+
+ // if (TiemSer != null)
+ // {
+ // TiemSer.Anos += Años;
+
+ // //Construcción del texto1 según años, meses, días
+ // string tiempo = "";
+ // if (TiemSer.Anos == 1) tiempo += TiemSer.Anos.ToString() + " AÑO ";
+ // else if (TiemSer.Anos > 1) tiempo += TiemSer.Anos.ToString() + " AÑOS ";
+
+ // if (TiemSer.Meses == 1) tiempo += TiemSer.Meses.ToString() + " MES ";
+ // else if (TiemSer.Meses > 1) tiempo += TiemSer.Meses.ToString() + " MESES ";
+
+ // if (TiemSer.Dias == 1) tiempo += TiemSer.Dias.ToString() + " DIA ";
+ // else if (TiemSer.Dias > 1) tiempo += TiemSer.Dias.ToString() + " DIAS ";
+
+ // ForAcuJub.texto1 = tiempo.Trim();
+ // }
+ // }
+
+ // ForAcuJub.Nif = per.NIF;
+ // ForAcuJub.Apellidos = per.APELLIDOS;
+ // ForAcuJub.Nombre = per.NOMBRE;
+ // ForAcuJub.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForAcuJub.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForAcuJub.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForAcuJub.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForAcuJub.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+
+ // var puestosPersona = context.PUESTOS.Where(x => x.IDPERSONAL == per.IDPERSONA);
+ // PUESTOS PuestoTrabajo = null;
+
+ // if (puestosPersona.Any())
+ // {
+ // PuestoTrabajo = puestosPersona
+ // .OrderByDescending(x => x.IDRPTNavigation.F_PARLAMENTO.Value)
+ // .First();
+ // ForAcuJub.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+ // }
+
+ // if (per.IDDEPARTAMENTO != null)
+ // ForAcuJub.Departamento = per.IDDEPARTAMENTONavigation.DESCRIPCION;
+
+ // if (PuestoTrabajo != null)
+ // {
+ // ForAcuJub.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForAcuJub.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForAcuJub.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForAcuJub.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ // ForAcuJub.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForAcuJub.MotivoTomaPosesion = motivo;
+ // ForAcuJub.texto3 = motivo;
+
+ // if (per.FECHANACIMIENTO.HasValue)
+ // {
+ // var fechaNac = per.FECHANACIMIENTO.Value;
+ // string dia = fechaNac.Day.ToString().PadLeft(2, '0');
+ // string mes = tsUtilidades.Extensiones.DateTimeExtensions.MesCastellano(fechaNac);
+ // string anio = fechaNac.Year.ToString();
+ // ForAcuJub.FecVenTri = $"{dia} de {mes} de {anio}";
+ // }
+
+ // ForAcuJub.FechaEfeEco = fechaEfecto;
+ // ForAcuJub.OrganoCompetente = organo;
+ // }
+
+ // LisAcuJub.Add(ForAcuJub);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "ACUJUBI");
+ // var idPlantilla = pl.IDPLANTILLA;
+
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // //return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisAcuJub).ToArray();
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // return null;
+ // }
+ // }
+
+
+
+ // private byte[] DevuelveAcuerdoBaja(
+ // string idPersona,
+ // string motivo,
+ // string texto1,
+ // string fechaEfecto,
+ // string organo,
+ // string fechaEmision)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per;
+ // var LisAcuJub = new List();
+ // var ForAcuJub = new RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForAcuJub.Nif = per.NIF;
+ // ForAcuJub.Apellidos = per.APELLIDOS;
+ // ForAcuJub.Nombre = per.NOMBRE;
+ // ForAcuJub.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForAcuJub.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForAcuJub.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForAcuJub.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForAcuJub.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+
+ // PUESTOS PuestoTrabajo = null;
+ // var puestosPersona = context.PUESTOS.Where(x => x.IDPERSONAL == per.IDPERSONA);
+ // if (puestosPersona.Any())
+ // {
+ // PuestoTrabajo = puestosPersona
+ // .OrderByDescending(x => x.IDRPTNavigation.F_PARLAMENTO.Value)
+ // .First();
+ // ForAcuJub.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+
+ // if (per.IDDEPARTAMENTO != null)
+ // ForAcuJub.Departamento = per.IDDEPARTAMENTONavigation.DESCRIPCION;
+
+ // ForAcuJub.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForAcuJub.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForAcuJub.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForAcuJub.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ // ForAcuJub.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForAcuJub.MotivoTomaPosesion = motivo;
+ // ForAcuJub.texto1 = texto1;
+ // ForAcuJub.FechaEfectoTomaPosesion = fechaEfecto;
+ // ForAcuJub.FechaEfeEco = fechaEfecto;
+ // ForAcuJub.OrganoCompetente = organo;
+ // ForAcuJub.FecVenTri = fechaEmision;
+ // }
+
+ // LisAcuJub.Add(ForAcuJub);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "ACUBAJA");
+ // var idPlantilla = pl.IDPLANTILLA;
+
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisAcuJub).ToArray();
+ // }
+ // }
+ // catch (Exception)
+ // {
+ // return null;
+ // }
+ // }
+
+
+ // private byte[] DevuelveAcuerdoCese(
+ // string idPersona,
+ // string motivo,
+ // string texto1,
+ // string fechaEfecto,
+ // string organo,
+ // string fechaEmision)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per;
+ // var LisAcuJub = new List();
+ // var ForAcuJub = new RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForAcuJub.Nif = per.NIF;
+ // ForAcuJub.Apellidos = per.APELLIDOS;
+ // ForAcuJub.Nombre = per.NOMBRE;
+ // ForAcuJub.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForAcuJub.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForAcuJub.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForAcuJub.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForAcuJub.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+
+ // PUESTOS PuestoTrabajo = null;
+ // var puestosPersona = context.PUESTOS.Where(x => x.IDPERSONAL == per.IDPERSONA);
+ // if (puestosPersona.Any())
+ // {
+ // PuestoTrabajo = puestosPersona
+ // .OrderByDescending(x => x.IDRPTNavigation.F_PARLAMENTO.Value)
+ // .First();
+
+ // ForAcuJub.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+ // }
+
+ // if (per.IDDEPARTAMENTO != null)
+ // ForAcuJub.Departamento = per.IDDEPARTAMENTONavigation.DESCRIPCION;
+
+ // if (PuestoTrabajo != null)
+ // {
+ // ForAcuJub.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForAcuJub.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForAcuJub.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForAcuJub.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ // ForAcuJub.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForAcuJub.MotivoTomaPosesion = motivo;
+ // ForAcuJub.texto1 = texto1;
+ // ForAcuJub.FechaEfectoTomaPosesion = fechaEfecto;
+ // ForAcuJub.FechaEfeEco = fechaEfecto;
+ // ForAcuJub.OrganoCompetente = organo;
+ // ForAcuJub.FecVenTri = fechaEmision;
+ // }
+
+ // LisAcuJub.Add(ForAcuJub);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "ACUCESE");
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisAcuJub).ToArray();
+
+ // }
+ // }
+ // catch (Exception)
+ // {
+ // return null;
+ // }
+ // }
+
+
+ // private byte[] DevuelveConsolidacionGrado(
+ // string idPersona,
+ // string motivo,
+ // string texto1,
+ // string texto2,
+ // string fechaEfecto,
+ // string organo,
+ // string fechaEmision)
+ // {
+ // try
+ // {
+ // using (var context = ContextosMySql.NuevoContexto(SoloLectura: true, Lazy: false))
+ // {
+ // PERSONAS per;
+ // var LisCumTri = new List();
+ // var ForCumTri = new RecTri();
+
+ // if (!string.IsNullOrEmpty(idPersona))
+ // {
+ // int iDPer = Convert.ToInt32(idPersona);
+ // per = context.PERSONAS.First(x => x.IDPERSONA == iDPer);
+
+ // ForCumTri.Nif = per.NIF;
+ // ForCumTri.Apellidos = per.APELLIDOS;
+ // ForCumTri.Nombre = per.NOMBRE;
+ // ForCumTri.Adscripcion = per.IDADSCRIPCIONRPTNavigation.DESCRIPCION;
+ // ForCumTri.NRP = per.NRP;
+
+ // if (per.IDSITUACIONADMINISTRATIVARPT != null)
+ // ForCumTri.SitAdm = per.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION;
+
+ // if (per.IDCUERPORPT != null)
+ // ForCumTri.Cuerpo = per.IDCUERPORPTNavigation.DESCRIPCION;
+
+ // ForCumTri.Grupo = per.GRUPOFUNCIONARIODESCRIPCION;
+ // ForCumTri.Localidad = per.NombrePoblacion;
+ // ForCumTri.Provincia = per.NombreProvincia;
+
+ // var iDSitRptAct = context.ENUMERACIONES.First(x => x.CODIGO == "SITRPTMAESTRO.ACT").IDENUMERACION;
+ // PUESTOS PuestoTrabajo = null;
+
+ // var puestoActivo = context.PUESTOS
+ // .Where(x => x.IDPERSONAL == per.IDPERSONA && x.IDRPTNavigation.IDSITUACION == iDSitRptAct);
+
+ // if (puestoActivo.Any())
+ // {
+ // PuestoTrabajo = puestoActivo.First();
+ // ForCumTri.DesPuesTrab = PuestoTrabajo.IDRPTDESNavigation.DENOMINACION;
+ // }
+
+ // ForCumTri.FechaEfeEco = fechaEfecto;
+
+ // if (PuestoTrabajo != null)
+ // {
+ // ForCumTri.CuerpoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.CUERPO1Navigation.DESCRIPCION;
+
+ // double Especifico = double.Parse(PuestoTrabajo.IDRPTDESNavigation.ESPECIFICO.ToString());
+ // ForCumTri.ComEsp = Especifico.ToString("##,##0.00") + "€";
+
+ // ForCumTri.GrupoPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.GRUPO1Navigation.GRUPO1;
+ // ForCumTri.NivelPuestoTrabajo = PuestoTrabajo.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ // ForCumTri.CarOcu = PuestoTrabajo.IDOCUPACIONNavigation.DESCRIPCION;
+ // }
+
+ // ForCumTri.texto1 = texto1;
+ // ForCumTri.texto2 = texto2;
+ // ForCumTri.texto3 = motivo;
+ // }
+
+ // LisCumTri.Add(ForCumTri);
+
+ // var pl = context.PLANTILLAS.First(x => x.CODIGO == "CONGRA");
+ // var idPlantilla = pl.IDPLANTILLA;
+
+ // var sFicherohtmlTmp = tsUtilidades.Utilidades.ObtieneFicheroAleatorio("pdf");
+
+ // return tsXtraReport.ExportarAPDF(pl.IDFICHERONavigation.FICHERO, LisCumTri).ToArray();
+ // }
+ // }
+ // catch (Exception)
+ // {
+ // return null;
+ // }
+ // }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServiciosGestion.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServiciosGestion.cs
new file mode 100644
index 0000000..20e4cf2
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/ServiciosGestion.cs
@@ -0,0 +1,235 @@
+using bdAntifraudeMYSQL.db;
+using bdAntifraudeMYSQL;
+using Microsoft.EntityFrameworkCore;
+using Renci.SshNet;
+using System.Diagnostics;
+using System.Security.Cryptography;
+using tsUtilidades.Enumeraciones;
+using tsUtilidades;
+
+namespace SwaggerAntifraudeMYSQL.Servicios
+{
+ public class ServiciosGestion
+ {
+
+ private static void GuardandoCambiosNomina(object sender, EventArgs e)
+ {
+ //OAEntities bd = (OAEntities)sender;
+
+ ////
+ //// ELIMINACION DE NOMINAS
+ ////
+ //var NominasEliminadas = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted).Where(x => x.EntitySet.Name == "NOMINATRABAJADORCABECERA").ToList();
+ //if (NominasEliminadas.Count > 0)
+ //{
+ // SftpClient sftp;
+ // sftp = ConectaServidorSftp(bd);
+ // sftp.Connect();
+ // foreach (var n in NominasEliminadas)
+ // {
+ // int idTr = n.OriginalValues("IDPERSONA");
+ // int Año = n.OriginalValues("AÑONOMINA");
+ // int Mes = n.OriginalValues("MESNOMINA");
+ // bool EsDieta = n.OriginalValues("ESLIQUIDACIONDIPUTADO").ToString();
+ // string Fichero;
+ // if (EsDieta)
+ // {
+ // Fichero = "nominas/dietas/" + Año.ToString() + "/" + Mes.ToString().PadLeft(2, '0') + "/" + Año.ToString() + Mes.ToString().PadLeft(2, '0') + "-" + idTr.ToString() + ".pdf";
+ // }
+ // else
+ // {
+ // Fichero = "ordinarias/" + Año.ToString() + "/" + Mes.ToString().PadLeft(2, '0') + "/" + Año.ToString() + Mes.ToString().PadLeft(2, '0') + "-" + idTr.ToString() + ".pdf";
+ // }
+ // if (sftp.Exists(Fichero))
+ // sftp.DeleteFile(Fichero);
+ // }
+ // sftp.Disconnect();
+ //}
+ //if (bd.NivelLog != NivelLogs.SIN_LOGS)
+ //{
+ // IEnumerable om;
+ // om = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Added);
+ // foreach (var o in om)
+ // {
+ // if (o.Entity.GetType().GetProperties.Any(X => X.Name == "IDUSUARIOALTA"))
+ // {
+ // var c = o.Entity.GetType().GetProperty("IDUSUARIOALTA");
+ // c.SetValue(o.Entity, dsc.idUsuario);
+ // }
+
+ // if (o.Entity.GetType().GetProperties.Any(X => Operators.ConditionalCompareObjectEqual(X.Name, "FECHAREGISTRONUEVO", false)))
+ // {
+ // var c = o.Entity.GetType().GetProperty("FECHAREGISTRONUEVO");
+ // c.SetValue(o.Entity, Utilidades.AhoraOracle(bd));
+ // }
+ // }
+ // om = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Modified);
+ // foreach (var o in om)
+ // {
+ // if (o.Entity.GetType().GetProperties.Any(X => Operators.ConditionalCompareObjectEqual(X.Name, "IDUSUARIOMODIFICA", false)))
+ // {
+ // var c = o.Entity.GetType().GetProperty("IDUSUARIOMODIFICA");
+ // c.SetValue(o.Entity, dsc.idUsuario);
+ // }
+
+ // if (o.Entity.GetType().GetProperties.Any(X => Operators.ConditionalCompareObjectEqual(X.Name, "FECHAREGISTROMODIFICADO", false)))
+ // {
+ // var c = o.Entity.GetType().GetProperty("FECHAREGISTROMODIFICADO");
+ // c.SetValue(o.Entity, Utilidades.AhoraOracle(bd));
+ // }
+ // }
+
+ // if (bd.NivelLog == NivelLogs.MODIFICACIONES_Y_ELIMINACIONES)
+ // {
+ // om = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Modified + EntityState.Deleted);
+ // }
+ // else
+ // {
+ // om = bd.ObjectStateManager.GetObjectStateEntries(EntityState.Modified + EntityState.Added + EntityState.Deleted);
+ // }
+ // // End If
+
+ // foreach (var o in om)
+ // {
+ // try
+ // {
+ // string CampoTimeStamp = o.Entity.GetType().GetProperties.Any(X => Operators.ConditionalCompareObjectEqual(X.Name, "IDTIMESPAN", false)) ? "IDTIMESPAN" : "";
+ // var nl = new LOGS();
+ // if (!EntidadesExcluidas.Contains(o.EntitySet.Name.ToLower))
+ // {
+ // nl.TABLA = o.EntitySet.Name;
+ // try
+ // {
+ // nl.ID = (long)o.EntityKey.EntityKeyValues.First.Value;
+ // }
+ // catch
+ // {
+ // }
+ // var lpm = new List();
+ // switch (o.State)
+ // {
+ // case var @case when @case == EntityState.Added:
+ // {
+ // nl.IDTIPO = TipoLog.ALTA;
+ // lpm = o.CurrentValues.DataRecordInfo.FieldMetadata.Select(x => x.FieldType.ToString).ToList;
+ // if (o.Entity.GetType().GetProperties.Any(X => Operators.ConditionalCompareObjectEqual(X.Name, "IDTIMESPAN", false)))
+ // {
+ // var cts = o.Entity.GetType().GetProperty("IDTIMESPAN");
+ // double ticks = DateTime.Now.Ticks;
+ // cts.SetValue(o.Entity, ticks);
+ // nl.IDTIMESTAMP = ticks;
+ // }
+
+ // break;
+ // }
+ // case var case1 when case1 == EntityState.Deleted:
+ // {
+ // nl.IDTIPO = TipoLog.ELIMINACION;
+ // break;
+ // }
+ // case var case2 when case2 == EntityState.Modified:
+ // {
+ // nl.IDTIPO = TipoLog.MODIFICACION;
+ // lpm = o.GetModifiedProperties.ToList;
+ // break;
+ // }
+ // }
+ // nl.USUARIO = Usuario;
+ // nl.FECHAHORA = AhoraOracle(bd);
+ // nl.IP = bd.ip;
+ // nl.APLICACION = bd.Aplicacion;
+ // nl.IDCONEXION = bd.idConexion;
+ // var rl = new RegistroLog();
+ // if (o.State == EntityState.Deleted)
+ // {
+ // try
+ // {
+ // for (int i = 0, loopTo = o.OriginalValues.FieldCount - 1; i <= loopTo; i++)
+ // {
+ // var ol = new CampoLog();
+ // ol.NombreCampo = o.OriginalValues.GetName(i);
+ // ol.ValorAnterior = nl.ID.ToString;
+ // rl.CamposLog.Add(ol);
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // Debug.Write(ex.Message);
+ // }
+ // }
+ // else
+ // {
+ // foreach (var p in lpm)
+ // {
+ // var tipo = o.Entity.GetType().GetProperty(p).PropertyType;
+ // // Dim stipo = tipo.ToString
+ // // Dim sTipoBase = tipo.BaseType.ToString
+ // try
+ // {
+ // var ol = new CampoLog();
+ // ol.NombreCampo = p;
+ // // If Not (tipo Is GetType(Byte()) Or p.ToLower = "entitykey" Or stipo.ToLower.Contains("entitycollection") Or stipo.ToLower.Contains("entityreference") Or sTipoBase.ToLower.Contains("entityobject")) Then
+ // if (!object.ReferenceEquals(tipo, typeof(byte[])))
+ // {
+ // switch (o.State)
+ // {
+ // case var case3 when case3 == EntityState.Added:
+ // {
+ // if (o.CurrentValues(p) is not null)
+ // ol.ValorNuevo = o.CurrentValues(p).ToString;
+ // break;
+ // }
+
+ // default:
+ // {
+ // if (o.OriginalValues(p) is not null)
+ // ol.ValorAnterior = o.OriginalValues(p).ToString;
+ // if (o.CurrentValues(p) is not null)
+ // ol.ValorNuevo = o.CurrentValues(p).ToString;
+ // break;
+ // }
+ // }
+ // }
+ // rl.CamposLog.Add(ol);
+ // }
+ // catch (Exception ex)
+ // {
+ // Debug.Write(ex.Message);
+ // }
+ // }
+ // }
+ // nl.LOG = tsl5.Utilidades.Serializar(rl);
+ // bd.AddToLOGS(nl);
+ // }
+ // }
+ // catch (Exception ex)
+ // {
+ // Debug.Write(ex.Message);
+ // }
+ // }
+ //}
+ }
+
+
+ //public static bool CompruebaFicheroNomina(NOMINATRABAJADORCABECERA N)
+ //{
+ //var bd = bdAntifraudeMYSQL.Utilidades.NuevaConexion(bdAntifraudeMYSQL.Utilidades.ObtieneCBD());
+ //SftpClient sftp = ConectarServidorSftp(bd);
+ //sftp.Connect();
+ //string Fichero = "";
+ //if (N.ESLIQUIDACIONDIPUTADO == true)
+ //{
+ // Fichero = "nominas/dietas/" + N.IDNOMINANavigation?.AÑO.ToString() + "/" + N.IDNOMINANavigation?.DESCRIPCION + "/" + N.IDNOMINANavigation?.AÑO.ToString() + N.IDNOMINANavigation?.MES.ToString().PadLeft(2, '0') + "-" + N.IDPERSONA.ToString() + ".pdf";
+ //}
+ //else
+ //{
+ // Fichero = "ordinarias/" + N.IDNOMINANavigation?.AÑO.ToString() + "/" + N.IDNOMINANavigation?.DESCRIPCION + "/" + N.IDNOMINANavigation?.AÑO.ToString() + N.IDNOMINANavigation?.MES.ToString().PadLeft(2, '0') + "-" + N.IDPERSONA.ToString() + ".pdf";
+ //}
+ //bool result = sftp.Exists(Fichero);
+ //sftp.Disconnect();
+ //return result;
+ //}
+
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/tsXtraReport.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/tsXtraReport.cs
new file mode 100644
index 0000000..6714e4f
--- /dev/null
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/Servicios/tsXtraReport.cs
@@ -0,0 +1,39 @@
+using DevExpress.Data.Extensions;
+using DevExpress.DataProcessing.InMemoryDataProcessor;
+using System.Linq;
+using DevExpress.XtraReports.Parameters;
+namespace SwaggerAntifraudeMYSQL.Servicios
+{
+ public class tsXtraReport
+ {
+ public static void ExportarAPDF(byte[] Plantilla, object Datos, string FicheroPDF)
+ {
+ DevExpress.XtraReports.UI.XtraReport xr;
+ string s = System.Text.Encoding.UTF8.GetString(Plantilla);
+ using (StreamWriter sw = new StreamWriter(new MemoryStream()))
+ {
+ sw.Write(s);
+ sw.Flush();
+
+ xr = DevExpress.XtraReports.UI.XtraReport.FromStream(sw.BaseStream, true);
+ }
+ try
+ {
+
+ var pr = xr.Parameters.Cast()
+ .FirstOrDefault(p => p.Name == "Fecha");
+
+
+ pr.Value = DateTime.Now;
+ pr.Visible = false;
+ }
+ catch (Exception ex)
+ {
+ }
+ xr.DataSource = Datos;
+ xr.CreateDocument();
+ xr.ExportToPdf(FicheroPDF);
+ }
+
+ }
+}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.csproj b/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.csproj
index 5419ef0..909f722 100644
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.csproj
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.csproj
@@ -1,4 +1,4 @@
-
+
net8.0
@@ -7,7 +7,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\..\..\Comun\tsUtilidades\bin\Debug\net8.0\tsUtilidades.dll
+
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.http b/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.http
index 81cff46..0db56e2 100644
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.http
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/SwaggerAntifraudeMYSQL.http
@@ -1,6 +1,6 @@
@SwaggerAntifraudeMYSQL_HostAddress = http://localhost:5274
-GET {{SwaggerAntifraudeMYSQL_HostAddress}}/weatherforecast/
+GET {{SwaggerAntifraudeMYSQL_HostAddress}}/swagger/v1/swagger.json
Accept: application/json
###
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/WeatherForecast.cs b/Antifraude.Net/SwaggerAntifraudeMYSQL/WeatherForecast.cs
deleted file mode 100644
index ced4f6e..0000000
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/WeatherForecast.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace SwaggerAntifraudeMYSQL
-{
- public class WeatherForecast
- {
- public DateOnly Date { get; set; }
-
- public int TemperatureC { get; set; }
-
- public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
-
- public string? Summary { get; set; }
- }
-}
diff --git a/Antifraude.Net/SwaggerAntifraudeMYSQL/appsettings.json b/Antifraude.Net/SwaggerAntifraudeMYSQL/appsettings.json
index 10f68b8..a088c54 100644
--- a/Antifraude.Net/SwaggerAntifraudeMYSQL/appsettings.json
+++ b/Antifraude.Net/SwaggerAntifraudeMYSQL/appsettings.json
@@ -5,5 +5,14 @@
"Microsoft.AspNetCore": "Warning"
}
},
- "AllowedHosts": "*"
+ "MySql": {
+ "NombreConexion": "Producción"
+ },
+ "AllowedHosts": "*",
+ "Jwt": {
+ "Key": "TuClaveSecretaMuySegura_1234567890",
+ "Issuer": "TuDominio.com",
+ "Audience": "TuDominio.com",
+ "ExpiresInMinutes": 60
+ }
}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/RecTri.cs b/Antifraude.Net/bdAntifraudeMYSQL/RecTri.cs
new file mode 100644
index 0000000..8941696
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/RecTri.cs
@@ -0,0 +1,43 @@
+namespace bdAntifraudeMYSQL.DatRecTri
+{
+ public class RecTri
+ {
+ public string Apellidos { get; set; } = "";
+ public string Nombre { get; set; } = "";
+ public string Nif { get; set; } = "";
+ public string Adscripcion { get; set; } = "";
+ public string Cuerpo { get; set; } = "";
+ public string NRP { get; set; } = "";
+ public string Grupo { get; set; } = "";
+ public string SitAdm { get; set; } = "";
+ public string DesPuesTrab { get; set; } = "";
+ public string CarOcu { get; set; } = "";
+ public string CenOrg { get; set; } = "";
+ public string Localidad { get; set; } = "";
+ public string Provincia { get; set; } = "";
+ public string FechaRecTri { get; set; } = "";
+ public string FechaEfeEco { get; set; } = "";
+ public string Departamento { get; set; } = "";
+ public int? TriA1 { get; set; }
+ public int? TriA2 { get; set; }
+ public int? TriC1 { get; set; }
+ public int? TriC2 { get; set; }
+ public int? TriE { get; set; }
+ public int? TolTri { get; set; }
+ public string ComEsp { get; set; } = "";
+ public string Nivel { get; set; } = "";
+ public string FecCumProTri { get; set; } = "";
+ public string FecVenTri { get; set; } = "";
+ public string CuerpoPuestoTrabajo { get; set; } = "";
+ public double ComplementoEspecifico { get; set; }
+ public string GrupoPuestoTrabajo { get; set; } = "";
+ public string NivelPuestoTrabajo { get; set; } = "";
+ public string FechaEfectoTomaPosesion { get; set; } = "";
+ public string OrganoCompetente { get; set; } = "";
+ public string MotivoTomaPosesion { get; set; } = "";
+ public string texto1 { get; set; } = "";
+ public string texto2 { get; set; } = "";
+ public string texto3 { get; set; } = "";
+ public string FechaEmision { get; set; } = "";
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/Utilidades.cs b/Antifraude.Net/bdAntifraudeMYSQL/Utilidades.cs
new file mode 100644
index 0000000..0b712bb
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/Utilidades.cs
@@ -0,0 +1,317 @@
+using Microsoft.EntityFrameworkCore;
+using bdAntifraudeMYSQL.clases;
+using bdAntifraudeMYSQL.db;
+
+namespace bdAntifraudeMYSQL;
+
+public enum NivelLogs
+{
+ SIN_LOGS,
+ TODOS_LOGS,
+ MODIFICACIONES_Y_ELIMINACIONES
+}
+
+public static class Utilidades
+{
+ public static List ObtienePuestoPersona(bdAntifraudeMYSQL.dbcontext.antifraudeContext bd, int idPersona)
+ {
+ List listaTP = bd.TIPOS_PERSONAL.ToList();
+
+ List puestosnuevos = new List();
+ try
+ {
+
+ List listaVA = bd.VIDA_ADMINISTRATIVA.Where(x => x.IDPERSONAL == idPersona && x.IDMOTIVO != null)
+ .Include(v => v.IDMOTIVONavigation)
+ .ThenInclude(r => r.IDTIPOAPTOSNavigation)
+ .Include(v => v.NIVEL_OLDNavigation)
+ .Include(v => v.NIVELCNavigation)
+ .Include(v => v.GRUPOTNavigation)
+ .Include(v => v.OCUPACION_OLDNavigation)
+ .Include(v => v.IDPERSONALNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(i => i.IDRPTDESNavigation)
+ .ThenInclude(r => r.IDDEPARTAMENTONavigation)
+ .Include(i => i.GRUPOTNavigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(gr => gr.GRUPO1Navigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(grr => grr.GRUPO2Navigation)
+ .Include(v => v.IDPUESTONavigation)
+ .ThenInclude(n => n.IDRPTDESNavigation)
+ .ThenInclude(nv => nv.IDNIVEL_RPTNavigation)
+ .OrderBy(x => x.FECHA).ThenBy(x => x.NUM_REG)
+ .AsNoTracking().ToList();
+ //.Include(v => v.IDSERVICIOADSCRITONavigation)
+ //.Include(v => v.IDUNIDADADMINISTRATIVANavigation)
+ if (listaVA.Count > 0)
+ {
+
+ List ToPoyCese = listaVA
+ .Where(x => x.MotivoTipo.Contains("TOMA POSESIÓN") ||
+ x.MotivoTipo.Contains("TOMA POSESION") ||
+ x.MotivoTipo.Contains("CESE") ||
+ x.MotivoTipo.Contains("BAJA")).ToList();
+
+ if (ToPoyCese.Count > 0)
+ {
+ int NumActo = ToPoyCese.Count;
+ for (int np = 0, loopTo = NumActo - 1; np <= loopTo; np += 2)
+ {
+ PuestoPersona pues = new PuestoPersona();
+ puestosnuevos.Add(pues);
+
+ VIDA_ADMINISTRATIVA vidaAdmin = ToPoyCese[np];
+ if (vidaAdmin?.IDMOTIVONavigation?.DESCRIPCION == "ACTIVO")
+ {
+ np = np + 1;
+ vidaAdmin = ToPoyCese[np];
+ }
+ //pues.Puesto = vidaAdmin.DENOMINACION_OLD;
+ pues.Puesto = vidaAdmin.IDPUESTONavigation.DESPUESCOM;
+ if (vidaAdmin?.IDPUESTO != null)
+ {
+ pues.Puesto = pues.Puesto + "*";
+ }
+ //pues.Nivel = vidaAdmin.DescripcionNivel;
+ pues.Nivel = vidaAdmin.IDPUESTONavigation.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1;
+ pues.Adscripcion = vidaAdmin.DescripcionAdscripcion(listaTP);
+ //pues.servicioAdscrito = vidaAdmin.IDSERVICIOADSCRITO != null ? bd.SERVICIOS.First(x => x.IDSERVICIO == vidaAdmin.IDSERVICIOADSCRITONavigation.IDSERVICIO).DESCRIPCION : "";
+ //pues.unidadAdministrativa = vidaAdmin.IDUNIDADADMINISTRATIVA != null ? bd.UNIDADADMINISTRATIVA.First(y => y.IDUNIDADADMINISTRATIVA == vidaAdmin.IDUNIDADADMINISTRATIVANavigation.IDUNIDADADMINISTRATIVA).LITERAL_DEPARTAMENTO : "";
+ pues.Grupo = vidaAdmin.IDPUESTONavigation.IDRPTDESNavigation.GRUPO1Navigation?.GRUPO1; //vidaAdmin.DescripcionGrupo1;
+ if (vidaAdmin.IDPUESTONavigation.IDRPTDESNavigation.GRUPO2Navigation?.GRUPO1 != null)
+ {
+ pues.Grupo = pues.Grupo.Trim() + "/" + vidaAdmin.IDPUESTONavigation.IDRPTDESNavigation.GRUPO2Navigation.GRUPO1;
+ }
+ if (pues.Grupo.Trim() == "")
+ {
+ pues.Grupo = vidaAdmin.GRUPOTNavigation.GRUPO1;
+ }
+ if (pues.Adscripcion.Trim() == "")
+ {
+ if ("|I|II|III|IV|V|".Trim().Contains("|" + pues.Grupo.Trim() + "|"))
+ {
+ pues.Adscripcion = "Laboral temporal";
+ }
+ else
+ {
+ pues.Adscripcion = "Funcionario";
+ }
+ }
+ if (vidaAdmin.FECHA.HasValue)
+ {
+ pues.FechaToPo = (DateTime)vidaAdmin.FECHA;
+ }
+ pues.MotivoToPo = vidaAdmin.IDMOTIVONavigation.DESCRIPCION;
+ if (vidaAdmin.OCUPACION_OLD != null)
+ {
+ pues.CaracterOcu = vidaAdmin.OCUPACION_OLDNavigation.DESCRIPCION;
+ }
+
+ Anos_Meses_Dias TiemSer = new Anos_Meses_Dias();
+ if (np + 2 <= NumActo)
+ {
+ VIDA_ADMINISTRATIVA vidaAdmin2 = ToPoyCese[np + 1];
+ if (!vidaAdmin2.IDMOTIVONavigation.TIPMOT.Trim().Contains("CESE") && vidaAdmin2.IDMOTIVONavigation.TIPMOT.Trim().Contains("BAJA"))
+ {
+ if (vidaAdmin2.FECHA > vidaAdmin.FECHA)
+ {
+ string motDes = vidaAdmin2.IDMOTIVONavigation.DESCRIPCION;
+ if (motDes == "ACTIVO" || motDes == "NOMBRAMIENTO" || motDes.Contains("REINGRESO PLAZA") || motDes.Contains("SERVICIOS ESPECIALES") || motDes.Contains("EXCEDENCIA"))
+ {
+ pues.FechaCese = (DateTime)vidaAdmin2.FECHA;
+ pues.MotivoCese = vidaAdmin2.IDMOTIVONavigation.DESCRIPCION;
+
+ if (motDes.Contains("REINGRESO PLAZA") || motDes.Contains("ACTIVO") || motDes.Contains("SERVICIOS ESPECIALES"))
+ {
+ for (int npn = np - 1; npn >= 0; npn -= 1)
+ {
+ if (ToPoyCese[npn].IDMOTIVONavigation.DESCRIPCION != "SERVICIOS ESPECIALES")
+ {
+ pues.MotivoCese = ToPoyCese[npn].IDMOTIVONavigation.DESCRIPCION;
+ pues.Puesto = "********";
+ pues.Nivel = "***";
+ pues.Grupo = "***";
+ pues.Adscripcion = "***";
+ if ((npn + 2) <= (NumActo - 1) && ToPoyCese[npn + 2].FECHA == pues.FechaCese)
+ {
+ pues.FechaCese = pues.FechaCese.AddDays(-1);
+ }
+ npn = 0;
+ PuestoPersona ppll = puestosnuevos[puestosnuevos.Count - 2];
+ if (ppll.FechaCese == pues.FechaToPo && ppll.MotivoCese != "CAMBIO DE SITUACIÓN ADMINISTRATIVA (CON RESERVA DE PUESTO)" && ppll.MotivoCese != "SERVICIOS ESPECIALES")
+ {
+ pues.FechaToPo = pues.FechaToPo.AddDays(+1);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ pues.FechaCese = vidaAdmin2.FECHA.Value.AddDays(-1);
+ pues.MotivoCese = "SUPUESTO CESE NO EXISTE EN VIDAADMINISTRATIVA";
+ }
+
+
+ }
+ else
+ {
+ if (vidaAdmin2.FECHA.HasValue)
+ {
+ pues.FechaCese = vidaAdmin2.FECHA.Value;
+ }
+ pues.MotivoCese = vidaAdmin2.IDMOTIVONavigation?.DESCRIPCION;
+ }
+ PuestoPersona ppl = puestosnuevos[puestosnuevos.Count - 2];
+ if (puestosnuevos.Count - 2 >= 0 && ppl.FechaCese == pues.FechaToPo)
+ {
+ if (pues.MotivoToPo == "SERVICIOS ESPECIALES" && !(ppl.FechaCese == pues.FechaToPo && ppl.FechaToPo == pues.FechaToPo))
+ {
+ pues.FechaToPo = pues.FechaToPo.AddDays(+1);
+ pues.Puesto = "********";
+ pues.Nivel = "***";
+ pues.Grupo = "***";
+ pues.Adscripcion = "***";
+ }
+ }
+
+ TiemSer = AnosMesesDias(pues.FechaToPo, pues.FechaCese);
+ pues.AnosSer = TiemSer.Anos;
+ pues.MesesSer = TiemSer.Meses;
+ pues.DiasSer = TiemSer.Dias;
+ }
+ else
+ {
+ pues.FechaCese = (DateTime)vidaAdmin2.FECHA;
+ pues.MotivoCese = vidaAdmin2.IDMOTIVONavigation.DESCRIPCION;
+ if (pues.FechaToPo == pues.FechaCese && pues.MotivoCese.Contains("COMISIÓN DE SERVICIOS") && np + 2 <= NumActo)
+ {
+ pues.MotivoToPo = vidaAdmin2.IDMOTIVONavigation.DESCRIPCION;
+ pues.MotivoCese = ToPoyCese[np + 2].IDMOTIVONavigation.DESCRIPCION;
+ pues.FechaCese = ToPoyCese[np + 2].FECHA.Value.AddDays(-1);
+ pues.Puesto = "********";
+ pues.Nivel = "***";
+ pues.Grupo = "***";
+ pues.Adscripcion = "***";
+ }
+ if (((np + 2) < (NumActo - 1)) && pues.FechaCese == ToPoyCese[np + 2].FECHA && pues.FechaToPo != pues.FechaCese && ToPoyCese[np + 2].IDMOTIVONavigation.DESCRIPCION != "SERVICIOS ESPECIALES")
+ {
+ pues.FechaCese = pues.FechaCese.AddDays(-1);
+ }
+ if (puestosnuevos.Count >= 2 && pues.FechaToPo == puestosnuevos[puestosnuevos.Count - 2].FechaCese)
+ {
+ var puestoant = puestosnuevos[puestosnuevos.Count - 2];
+ if (pues.MotivoToPo == "NOMBRAMIENTO")
+ {
+ puestoant.FechaCese = puestoant.FechaCese.AddDays(-1);
+ TiemSer = AnosMesesDias(puestoant.FechaToPo, puestoant.FechaCese);
+ puestoant.AnosSer = TiemSer.Anos;
+ puestoant.MesesSer = TiemSer.Meses;
+ puestoant.DiasSer = TiemSer.Dias;
+ }
+ if (pues.MotivoToPo == "SERVICIOS ESPECIALES")
+ {
+ pues.FechaToPo = pues.FechaToPo.AddDays(1);
+ }
+ }
+ TiemSer = AnosMesesDias(pues.FechaToPo, pues.FechaCese);
+ pues.AnosSer = TiemSer.Anos;
+ pues.MesesSer = TiemSer.Meses;
+ pues.DiasSer = TiemSer.Dias;
+ if (pues.MotivoToPo == "SERVICIOS ESPECIALES" && (pues.MotivoCese == "REVOCACIÓN O CESE" || pues.MotivoCese == "CAMBIO DE SITUACIÓN ADMINISTRATIVA (CON RESERVA DE PUESTO)"))
+ {
+ pues.Puesto = "********";
+ pues.Nivel = "***";
+ pues.Grupo = "***";
+ pues.Adscripcion = "***";
+ }
+ }
+ }
+ else
+ {
+ TiemSer = AnosMesesDias(pues.FechaToPo, DateTime.Now);
+ pues.AnosSer = TiemSer.Anos;
+ pues.MesesSer = TiemSer.Meses;
+ pues.DiasSer = TiemSer.Dias;
+ if (pues.MotivoToPo.Contains("SERVICIOS ESPECIALES") && pues.MotivoCese == null)
+ {
+ pues.Puesto = "********";
+ pues.Nivel = "***";
+ pues.Grupo = "***";
+ pues.Adscripcion = "***";
+ }
+ np = NumActo;
+ }
+
+ if ((np + 2) <= (NumActo - 1) && ToPoyCese[np + 2].FECHA.Value.Subtract(pues.FechaCese).Days > 1 && ToPoyCese[np + 2].IDMOTIVONavigation.DESCRIPCION == "SERVICIOS ESPECIALES")
+ {
+ var puesnue = new PuestoPersona();
+ puestosnuevos.Add(puesnue);
+ puesnue.MotivoToPo = pues.MotivoCese;
+ puesnue.MotivoCese = pues.MotivoCese;
+ puesnue.FechaToPo = pues.FechaCese.AddDays(1);
+ puesnue.FechaCese = ToPoyCese[np + 2].FECHA.Value.AddDays(-1);
+ puesnue.Puesto = "********";
+ puesnue.Nivel = "***";
+ puesnue.Grupo = "***";
+ puesnue.Adscripcion = "***";
+ TiemSer = AnosMesesDias(puesnue.FechaToPo, puesnue.FechaCese);
+ puesnue.AnosSer = TiemSer.Anos;
+ puesnue.MesesSer = TiemSer.Meses;
+ puesnue.DiasSer = TiemSer.Dias;
+ }
+ if ((np + 2) <= (NumActo - 1) && ToPoyCese[np + 2].FECHA == pues.FechaCese && ToPoyCese[np + 2].IDMOTIVONavigation.DESCRIPCION != "SERVICIOS ESPECIALES" && ToPoyCese[np + 2].IDMOTIVONavigation.DESCRIPCION != "ACTIVO" && pues.FechaToPo != pues.FechaCese)
+ {
+ pues.FechaCese = pues.FechaCese.AddDays(-1);
+ TiemSer = AnosMesesDias(pues.FechaToPo, pues.FechaCese);
+ pues.AnosSer = TiemSer.Anos;
+ pues.MesesSer = TiemSer.Meses;
+ pues.DiasSer = TiemSer.Dias;
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ var a = 1;
+ }
+ return puestosnuevos.OrderByDescending(x => x.FechaToPo).ToList();
+ }
+
+ public static Anos_Meses_Dias AnosMesesDias(DateTime fechaInicio, DateTime fechaFin)
+ {
+ //DateTime fechaFinAjustada = (fechaFin.Date == DateTime.Today)
+ // ? fechaFin.AddDays(1)
+ // : fechaFin;
+
+ if (fechaFin < fechaInicio)
+ throw new ArgumentException("La fecha final debe ser mayor o igual que la fecha de inicio.");
+
+ int anos = fechaFin.Year - fechaInicio.Year;
+ int meses = fechaFin.Month - fechaInicio.Month;
+ int dias = fechaFin.Day - fechaInicio.Day;
+
+ // Ajustar cuando la diferencia en días es negativa (no se completó el mes)
+ if (dias < 0)
+ {
+ meses--;
+ int diasMesAnterior = DateTime.DaysInMonth(
+ fechaFin.Month == 1 ? fechaFin.Year - 1 : fechaFin.Year,
+ fechaFin.Month == 1 ? 12 : fechaFin.Month - 1);
+ dias += diasMesAnterior;
+ }
+
+ // Ajustar cuando la diferencia en meses es negativa (no se completó el año)
+ if (meses < 0)
+ {
+ anos--;
+ meses += 12;
+ }
+
+ return new Anos_Meses_Dias { Anos = anos, Meses = meses, Dias = dias };
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/AlmacenaFicheroAtransmitir.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/AlmacenaFicheroAtransmitir.cs
new file mode 100644
index 0000000..5865749
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/AlmacenaFicheroAtransmitir.cs
@@ -0,0 +1,18 @@
+namespace bdAntifraudeMYSQL.clases
+{
+ public class AlmacenaFicheroAtransmitir
+ {
+ public int IdRegistro { get; set; }
+ public string Tabla { get; set; } = "";
+ public string Fichero { get; set; } = "";
+
+ public AlmacenaFicheroAtransmitir() { }
+
+ public AlmacenaFicheroAtransmitir(int idRegistro, string tabla, string fichero)
+ {
+ IdRegistro = idRegistro;
+ Tabla = tabla;
+ Fichero = fichero;
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/Anos_Meses_Dias.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/Anos_Meses_Dias.cs
new file mode 100644
index 0000000..4aa14cc
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/Anos_Meses_Dias.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class Anos_Meses_Dias
+ {
+ public int Anos { get; set; }
+ public int Meses { get; set; }
+ public int Dias { get; set; }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/Formacion.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/Formacion.cs
new file mode 100644
index 0000000..5029c07
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/Formacion.cs
@@ -0,0 +1,18 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class Formacion
+ {
+ public string NumReg { get; set; } = "";
+ public string Descripcion { get; set; } = "";
+ public string Centro { get; set; } = "";
+ public string FExpedicion { get; set; } = "";
+ public string NumHoras { get; set; } = "";
+ public string Aprovechamiento { get; set; } = "";
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/HojaAcretacionDatos.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/HojaAcretacionDatos.cs
new file mode 100644
index 0000000..8b0c36e
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/HojaAcretacionDatos.cs
@@ -0,0 +1,26 @@
+using bdAntifraudeMYSQL.db;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+using System.Text.RegularExpressions;
+using System.Security.Claims;
+using bdAntifraudeMYSQL.clases;
+
+namespace SwaggerAntifraudeMYSQL.Models
+{
+ public class HojaAcreditacionDatos
+ {
+ public string Nif { get; set; } = "";
+ public string ApellidosNombre { get; set; } = "";
+ public string Cuerpo { get; set; } = "";
+ public string Especialidad { get; set; } = "";
+ public string Grado { get; set; } = "";
+ public string Antiguedad { get; set; } = "";
+ public string FechaRecGra { get; set; } = "";
+ public string FechaProTri { get; set; } = "";
+
+ public List Puestos { get; set; } = new List();
+ public List Titulaciones { get; set; } = new List();
+ public List Cursos { get; set; } = new List();
+ }
+
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/ParFicExcel.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/ParFicExcel.cs
new file mode 100644
index 0000000..557c46c
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/ParFicExcel.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class ParFicExcel
+ {
+ public string ClaveExcel { get; set; } = "";
+ public string texto1 { get; set; } = "";
+ public string texto2 { get; set; } = "";
+ public string Fecha { get; set; } = "";
+ }
+ public class NifPersona
+ {
+ public string Nif { get; set; } = "";
+ }
+ public class ResultadoObtenerHAD
+ {
+ public int Resultado { get; set; }
+ public string Mensaje { get; set; }
+ public string HAD { get; set; }
+ }
+ public class DatGenNom
+ {
+ public List Personas { get; set; } = new List();
+ public int Idnomina { get; set; }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/PeticionFichero.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/PeticionFichero.cs
new file mode 100644
index 0000000..122b423
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/PeticionFichero.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class PeticionFichero
+ {
+ public int IdRegistro { get; set; }
+ public string Tabla { get; set; } = "";
+ public string Nif { get; set; } = "";
+
+
+ public PeticionFichero() { }
+
+ public PeticionFichero(int idRegistro, string tabla, string nif)
+ {
+ IdRegistro = idRegistro;
+ Tabla = tabla;
+ Nif = nif;
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/PuestoPersona.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/PuestoPersona.cs
new file mode 100644
index 0000000..5917384
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/PuestoPersona.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class PuestoPersona
+ {
+ public string Puesto { get; set; } = "";
+ public string Nivel { get; set; } = "";
+ public string Adscripcion { get; set; } = "";
+ public string Grupo { get; set; } = "";
+ public DateTime FechaToPo { get; set; }
+ public string MotivoToPo { get; set; } = "";
+ public string CaracterOcu { get; set; } = "";
+ public DateTime FechaCese { get; set; }
+ public string MotivoCese { get; set; } = "";
+ public int AnosSer { get; set; }
+ public int MesesSer { get; set; }
+ public int DiasSer { get; set; }
+ public string unidadAdministrativa { get; set; } = "";
+ public string servicioAdscrito { get; set; } = "";
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/RegistroActividadRest.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/RegistroActividadRest.cs
new file mode 100644
index 0000000..705adc1
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/RegistroActividadRest.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ [Serializable]
+ public class RegistroActividadRest
+ {
+ public string Usuario { get; set; } = "";
+ public DateTime FechaHora { get; set; }
+ public string OperacionInvocada { get; set; } = "";
+ public string ParametrosConsulta { get; set; } = "";
+ public string Respuesta { get; set; } = "";
+ public string Errores { get; set; } = "";
+ public string JWT { get; set; } = "";
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoAlmacenaFicheroAtransmitir.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoAlmacenaFicheroAtransmitir.cs
new file mode 100644
index 0000000..c1f1a58
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoAlmacenaFicheroAtransmitir.cs
@@ -0,0 +1,8 @@
+namespace bdAntifraudeMYSQL.clases
+{
+ public class ResultadoAlmacenaFicheroAtransmitir
+ {
+ public int Resultado { get; set; }
+ public string Mensaje { get; set; } = "";
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarExcel.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarExcel.cs
new file mode 100644
index 0000000..a307df3
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarExcel.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class ResultadoGenerarExcel
+ {
+ public int Resultado { get; set; }
+ public string Mensaje { get; set; } = "";
+ public byte[] FicheroExcel { get; set; }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarNomina.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarNomina.cs
new file mode 100644
index 0000000..b1f6612
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoGenerarNomina.cs
@@ -0,0 +1,10 @@
+namespace bdAntifraudeMYSQL.clases
+{
+ public class ResultadoGenerarNomina
+ {
+ public int idnomina { get; set; }
+ public int NumNomGen { get; set; }
+ public string Errores { get; set; }
+ public int Resultado { get; set; }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoObtenFicheroAtransmitir.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoObtenFicheroAtransmitir.cs
new file mode 100644
index 0000000..078210d
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/ResultadoObtenFicheroAtransmitir.cs
@@ -0,0 +1,9 @@
+namespace bdAntifraudeMYSQL.clases
+{
+ public class ResultadoObtenFicheroAtransmitir
+ {
+ public int Resultado { get; set; }
+ public string Mensaje { get; set; } = "";
+ public byte[] Pdf { get; set; }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/clases/Titulacion.cs b/Antifraude.Net/bdAntifraudeMYSQL/clases/Titulacion.cs
new file mode 100644
index 0000000..98e6276
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/clases/Titulacion.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.clases
+{
+ public class Titulacion
+ {
+ public string NumReg { get; set; } = "";
+ public string Descripcion { get; set; } = "";
+ public string Centro { get; set; } = "";
+ public string FExpedicion { get; set; } = "";
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/antifraudeContext.Puestos.cs b/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/antifraudeContext.Puestos.cs
new file mode 100644
index 0000000..2c29006
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/antifraudeContext.Puestos.cs
@@ -0,0 +1,40 @@
+using Microsoft.EntityFrameworkCore;
+
+namespace bdAntifraudeMYSQL.dbcontext;
+
+public partial class antifraudeContext
+{
+ partial void OnModelCreatingPartial(ModelBuilder modelBuilder)
+ {
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasOne(i => i.IDNIVELNavigation)
+ .WithMany(e => e.IDIOMASIDNIVELNavigation)
+ .HasForeignKey(i => i.IDNIVEL);
+ entity.HasOne(i => i.IDPERSONANavigation)
+ .WithMany(p => p.IDIOMAS)
+ .HasForeignKey(i => i.IDPERSONA);
+ entity.HasOne(i => i.IDTIPOIDIOMANavigation)
+ .WithMany(e => e.IDIOMASIDTIPOIDIOMANavigation)
+ .HasForeignKey(i => i.IDTIPOIDIOMA);
+ });
+
+ modelBuilder.Entity(entity =>
+ {
+ entity.HasOne(p => p.IDDOTACIONNavigation).WithMany()
+ .HasForeignKey(p => p.IDDOTACION);
+ entity.HasOne(p => p.IDOCUPACIONNavigation).WithMany()
+ .HasForeignKey(p => p.IDOCUPACION);
+ entity.HasOne(p => p.IDPERSONALNavigation)
+ .WithMany(p => p.PUESTOSIDPERSONALNavigation)
+ .HasForeignKey(p => p.IDPERSONAL);
+ entity.HasOne(p => p.IDRPTDESNavigation).WithMany()
+ .HasForeignKey(p => p.IDRPTDES);
+ entity.HasOne(p => p.IDRPTNavigation).WithMany()
+ .HasForeignKey(p => p.IDRPT);
+ entity.HasOne(p => p.TITULARNavigation)
+ .WithMany(p => p.PUESTOSTITULARNavigation)
+ .HasForeignKey(p => p.TITULAR);
+ });
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/conexion.cs b/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/conexion.cs
index ad7218b..b718e0f 100644
--- a/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/conexion.cs
+++ b/Antifraude.Net/bdAntifraudeMYSQL/dbcontext/conexion.cs
@@ -24,7 +24,7 @@ namespace bdAntifraudeMYSQL.dbcontext
{
List lc = new List();
//lc.Add(new Conexion() { Nombre = "Producción", Puerto = 3306, Servidor = "192.168.41.24", Usuario = "root", Contraseña = "îéÂj,íçLÑ0*B", Database = "gruposanchotoro" });
- lc.Add(new Conexion() { Nombre = "Producción", Puerto = 3306, Servidor = "192.168.41.20", Usuario = "root", Contraseña = "5qL@5tTsKZ&˪:OYbS", Database = "antifraude" });
+ lc.Add(new Conexion() { Nombre = "Producción", Puerto = 3306, Servidor = "192.168.41.20", Usuario = "root", Contraseña = "-ñuÛÄFrc8W#sL0äÊbôÁ|3", Database = "antifraude" });
//lc.Add(new Conexion() { Nombre = "Producción VPN", Puerto = 3306, Servidor = "10.10.12.1", Usuario = "sancho", Contraseña = "5qL@5tTsKZ&˪:OYbS", Database = "gruposanchotoro" });
//lc.Add(new Conexion() { Nombre = "Producción LOCAL", Puerto = 3306, Servidor = "192.168.41.13", Usuario = "root", Contraseña = "îéÂj,íçLÑ0*B", Database = "gruposanchotoro" });
//lc.Add(new Conexion() { Nombre = "Desarrollo", Puerto = 13306, Servidor = "localhost", Usuario = "root", Contraseña = "îéÂj,íçLÑ0*B", Database = "gruposanchotoro" });
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUENTASCOTIZACIONPATRONAL.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUENTASCOTIZACIONPATRONAL.cs
new file mode 100644
index 0000000..c6ee0cb
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUENTASCOTIZACIONPATRONAL.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class CUENTASCOTIZACIONPATRONAL
+ {
+ [NotMapped]
+ public object CUENTANOMBRE
+ {
+ get
+ {
+ return this.CODIGO + " - " + NOMBRE;
+ }
+ }
+
+ [NotMapped]
+ public ENUMERACIONES TIPOIPF
+ {
+ get
+ {
+ return this.IDTITULARTIPOIPFNavigation;
+ }
+ set
+ {
+ this.IDTITULARTIPOIPFNavigation = value;
+ }
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUERPO.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUERPO.cs
new file mode 100644
index 0000000..7d77c23
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/CUERPO.cs
@@ -0,0 +1,51 @@
+using bdAntifraudeMYSQL.dbcontext;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+
+ public partial class PERIODOSSILTRA
+ {
+ [NotMapped]
+ public ENUMERACIONES TIPOLIQUIDACION
+ {
+ get
+ {
+ return this.IDTIPOLIQUIDACIONNavigation;
+ }
+ set
+ {
+ this.IDTIPOLIQUIDACIONNavigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES TIPOPERIODOSTRAMOS
+ {
+ get
+ {
+ return this.IDTIPOPERIODOTRAMONavigation;
+ }
+ set
+ {
+ this.IDTIPOPERIODOTRAMONavigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES ESTADOS
+ {
+ get
+ {
+ return this.IDESTADONavigation;
+ }
+ set
+ {
+ this.IDESTADONavigation = value;
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/ENUMERACIONES.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/ENUMERACIONES.cs
new file mode 100644
index 0000000..0bf6c47
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/ENUMERACIONES.cs
@@ -0,0 +1,8 @@
+namespace bdAntifraudeMYSQL.db;
+
+public partial class ENUMERACIONES
+{
+ public virtual ICollection IDIOMASIDNIVELNavigation { get; set; } = new List();
+
+ public virtual ICollection IDIOMASIDTIPOIDIOMANavigation { get; set; } = new List();
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/HISTORICOIRPF.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/HISTORICOIRPF.cs
new file mode 100644
index 0000000..d038f63
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/HISTORICOIRPF.cs
@@ -0,0 +1,245 @@
+using bdAntifraudeMYSQL.dbcontext;
+using Google.Protobuf.WellKnownTypes;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Runtime.CompilerServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+
+ public partial class HISTORICOIRPF
+ {
+ [NotMapped]
+ public bool NECESITAAYUDADETERCERASPERSONASOMOVILIDADREDUCIDA
+ {
+ get
+ {
+ return this.NECEAYUDATERCPERSOMOVILRED;
+ }
+ set
+ {
+ this.NECEAYUDATERCPERSOMOVILRED = value;
+ }
+ }
+ [NotMapped]
+ public bool PROLONGACIONDELAACTIVIDADLABORAL
+ {
+ get
+ {
+ return PROLONGACTLABORAL;
+ }
+ set
+ {
+ this.PROLONGACTLABORAL = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESTOTALESIMPORTEINTEGRO
+ {
+ get
+ {
+ return RETRTOTALESIMPORTEINTEGRO;
+ }
+ set
+ {
+ this.RETRTOTALESIMPORTEINTEGRO = value;
+ }
+ }
+ [NotMapped]
+ public bool DATOSANTERIORESRENDIMIENTOSOBTENIDOSCEUTAOMELILLA
+ {
+ get
+ {
+ return DATANTERRENDIOBTENCEUOMEL;
+ }
+ set
+ {
+ this.DATANTERRENDIOBTENCEUOMEL = value;
+ }
+ }
+ [NotMapped]
+ public double PENSIONCOMPENSATORIAAFAVORDELCONYUGE
+ {
+ get
+ {
+ return PENSCOMPENFAVORCONYUGE;
+ }
+ set
+ {
+ this.PENSCOMPENFAVORCONYUGE = value;
+ }
+ }
+ [NotMapped]
+ public double ANUALIDADESPORALIMENTOSENFAVORDELOSHIJOS
+ {
+ get
+ {
+ return ANUALPORALIFAVORHIJOS;
+ }
+ set
+ {
+ this.ANUALPORALIFAVORHIJOS = value;
+ }
+ }
+ [NotMapped]
+ public bool RETRIBUCIONESINTEGRASINFERIORES33MIL
+ {
+ get
+ {
+ return RETRIINTEINFER33MIL;
+ }
+ set
+ {
+ this.RETRIINTEINFER33MIL = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESYASATISFECHASCNANTERIORIDADALARECULARIZACION
+ {
+ get
+ {
+ return RETRIYASATISCONANTERAREGULAR;
+ }
+ set
+ {
+ this.RETRIYASATISCONANTERAREGULAR = value;
+ }
+ }
+ [NotMapped]
+ public double RETENCIONESEINGRESOSACUENTAYAPRACTICADOSCONANTAREGULA
+ {
+ get
+ {
+ return RETEINGRACUENTAPRACTANTAREG;
+ }
+ set
+ {
+ this.RETEINGRACUENTAPRACTANTAREG = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESANUALESCONSIDERADASCONANTERIORIDADREGULARIZACION
+ {
+ get
+ {
+ return RETRIANUALCONSICONANTREG;
+ }
+ set
+ {
+ this.RETRIANUALCONSICONANTREG = value;
+ }
+ }
+ [NotMapped]
+ public double IMPORTEANUALDELASRETENCIONESEINGRESOSACUENTADETERMINADASANTESREG
+ {
+ get
+ {
+ return IMPANURETEINGRACUENDETANTREG;
+ }
+ set
+ {
+ this.IMPANURETEINGRACUENDETANTREG = value;
+ }
+ }
+ [NotMapped]
+ public bool LOSRENDIMIENTOSANTERIORESFUERONENCEUTAOMELILLA
+ {
+ get
+ {
+ return RENDANTFUERONCEUOMEL;
+ }
+ set
+ {
+ this.RENDANTFUERONCEUOMEL = value;
+ }
+ }
+ [NotMapped]
+ public double BASEPARACALCULARELTIPORETENCIONDETERMINADOANTESREGULARIZACION
+ {
+ get
+ {
+ return BASECALCTIPRETDETANTREGULAR;
+ }
+ set
+ {
+ this.BASECALCTIPRETDETANTREGULAR = value;
+ }
+ }
+ [NotMapped]
+ public double MINIMOPERSONALYFAMILIARPARACALCULARRETENCIONANTESREGULARIZACION
+ {
+ get
+ {
+ return MINPERSYFAMCALCRETANTREGU;
+ }
+ set
+ {
+ this.MINPERSYFAMCALCRETANTREGU = value;
+ }
+ }
+ [NotMapped]
+ public double TIPODERETENCIONCALCULADOANTESREGULARIZACION
+ {
+ get
+ {
+ return TIPRETENCALCANTREGU;
+ }
+ set
+ {
+ this.TIPRETENCALCANTREGU = value;
+ }
+ }
+ [NotMapped]
+ public bool ANTESDELAREGSEAPLICOMINORACIONPORPAGOSDEPRESTAMOSVIVIENDA
+ {
+ get
+ {
+ return ANTREGSEAPLMINORPAGPRESVIV;
+ }
+ set
+ {
+ this.ANTREGSEAPLMINORPAGPRESVIV = value;
+ }
+ }
+ [NotMapped]
+ public double IMPORTEMINORACIONPORPAGOSPRESTAMOSPARALAVIVIENDAANTESREG
+ {
+ get
+ {
+ return IMPMINPAGPRESTVIVANTREG;
+ }
+ set
+ {
+ this.IMPMINPAGPRESTVIVANTREG = value;
+ }
+ }
+ [NotMapped]
+ public double MINIMOPERSONALYFAMILIARPARACALCULARRETENCION
+ {
+ get
+ {
+ return MINPERSYFAMCALCRETEN;
+ }
+ set
+ {
+ this.MINPERSYFAMCALCRETEN = value;
+ }
+ }
+ [NotMapped]
+ public bool MINORACIONPORPAGOSPRESTAMOSVIVIENDAHABITUAL
+ {
+ get
+ {
+ return MINPAGPRESTVIVHA;
+ }
+ set
+ {
+ this.MINPAGPRESTVIVHA = value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/IDIOMAS.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/IDIOMAS.cs
new file mode 100644
index 0000000..cc46326
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/IDIOMAS.cs
@@ -0,0 +1,10 @@
+namespace bdAntifraudeMYSQL.db;
+
+public partial class IDIOMAS
+{
+ public virtual ENUMERACIONES? IDNIVELNavigation { get; set; }
+
+ public virtual PERSONAS? IDPERSONANavigation { get; set; }
+
+ public virtual ENUMERACIONES? IDTIPOIDIOMANavigation { get; set; }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/MOTIVOS_ADMINISTRATIVOS.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/MOTIVOS_ADMINISTRATIVOS.cs
new file mode 100644
index 0000000..2765a88
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/MOTIVOS_ADMINISTRATIVOS.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+
+ public partial class OAEntities
+ {
+ internal string Aplicacion { get; set; }
+ internal int idConexion { get; set; }
+ internal string ip { get; set; }
+ internal NivelLogs NivelLog { get; set; }
+
+
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/NOMINATRABAJADORCABECERA.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/NOMINATRABAJADORCABECERA.cs
new file mode 100644
index 0000000..c7d90d5
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/NOMINATRABAJADORCABECERA.cs
@@ -0,0 +1,2051 @@
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+ [NotMapped]
+ public partial class NOMINATRABAJADORCABECERA
+ {
+ [NotMapped]
+ public double TOTALSEGURIDADSOCIALPAGOENESPECIE
+ {
+ get
+ {
+ return TOTALSSPAGOENESPECIE;
+ }
+ set
+ {
+ this.TOTALSSPAGOENESPECIE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO200IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO200IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO200IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO200IMPORTE;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "705" || x.IDTIPOTRAMONavigation?.CODIGO == "706" || x.IDTIPOTRAMONavigation?.CODIGO == "707" || x.IDTIPOTRAMONavigation?.CODIGO == "708" || x.IDTIPOTRAMONavigation?.CODIGO == "709" || x.IDTIPOTRAMONavigation?.CODIGO == "710" || x.IDTIPOTRAMONavigation?.CODIGO == "711" || x.IDTIPOTRAMONavigation?.CODIGO == "712" || x.IDTIPOTRAMONavigation?.CODIGO == "713").Sum(x => (double)x.IMPORTE);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO200IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO200IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO200IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO200IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO200IMPORTEGLOBAL;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "705" || x.IDTIPOTRAMONavigation?.CODIGO == "706" || x.IDTIPOTRAMONavigation?.CODIGO == "707" || x.IDTIPOTRAMONavigation?.CODIGO == "708" || x.IDTIPOTRAMONavigation?.CODIGO == "709" || x.IDTIPOTRAMONavigation?.CODIGO == "710" || x.IDTIPOTRAMONavigation?.CODIGO == "711" || x.IDTIPOTRAMONavigation?.CODIGO == "712" || x.IDTIPOTRAMONavigation?.CODIGO == "713").Sum(x => (double)x.IMPORTEGLOBAL);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO200IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO200IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO200IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO200IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO200IMPORTEEMPRESA;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "705" || x.IDTIPOTRAMONavigation?.CODIGO == "706" || x.IDTIPOTRAMONavigation?.CODIGO == "707" || x.IDTIPOTRAMONavigation?.CODIGO == "708" || x.IDTIPOTRAMONavigation?.CODIGO == "709" || x.IDTIPOTRAMONavigation?.CODIGO == "710" || x.IDTIPOTRAMONavigation?.CODIGO == "711" || x.IDTIPOTRAMONavigation?.CODIGO == "712" || x.IDTIPOTRAMONavigation?.CODIGO == "713").Sum(x => (double)x.IMPORTEEMPRESA);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO200IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO200IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO200IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO200IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO200IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "705" || x.IDTIPOTRAMONavigation?.CODIGO == "706" || x.IDTIPOTRAMONavigation?.CODIGO == "707" || x.IDTIPOTRAMONavigation?.CODIGO == "708" || x.IDTIPOTRAMONavigation?.CODIGO == "709" || x.IDTIPOTRAMONavigation?.CODIGO == "710" || x.IDTIPOTRAMONavigation?.CODIGO == "711" || x.IDTIPOTRAMONavigation?.CODIGO == "712" || x.IDTIPOTRAMONavigation?.CODIGO == "713").Sum(x => (double)x.IMPORTETRABAJADOR);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO200IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO500IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO500IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO500IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO500IMPORTE;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => (double)x.IMPORTE);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO500IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO500BASETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO500BASETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO500BASETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO500BASETRABAJADOR;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509" && x.PORCENTAJETRABAJADOR > 0).Sum(x => (double)x.IMPORTE);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO500BASETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO500IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO500IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO500IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO500IMPORTEGLOBAL;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => (double)x.IMPORTEGLOBAL);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO500IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO500IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO500IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO500IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO500IMPORTEEMPRESA;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => (double)x.IMPORTEEMPRESA);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO500IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO500IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO500IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO500IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO500IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => (double)x.IMPORTETRABAJADOR);
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO500IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO500PORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").ToList().Count > 0)
+ {
+ var Por = this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").First().PORCENTAJEEMPRESA;
+
+ return (Por);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO500PORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ var Por = this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "500" || x.IDTIPOTRAMONavigation?.CODIGO == "509").First().PORCENTAJETRABAJADOR;
+
+ return (Por);
+ }
+ else
+ {
+ return 0d;
+ }
+
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO509IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO509IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO509IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO509IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO509IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO509IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO509IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO509IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO509IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO509IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO509IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO509IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO509IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO509IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO509IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO509IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO509IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO509IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO509IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "509").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO509IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO551IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO551IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO551IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO551IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "551").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO551IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO551IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO551IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO551IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO551IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "551").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO551IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO551IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO551IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO551IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO551IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "551").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO551IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO563IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO563IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO563IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO563IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "563").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO563IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO571IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO571IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO571IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO571IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "571").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO571IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO571IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO571IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO571IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO571IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "571").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO571IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO571IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO571IMPORTETRABAJADOR
+ {
+ get
+ {
+ double SUMACONCEPTO571IMPORTETRABAJADORRet = default;
+ if (_SUMACONCEPTO571IMPORTETRABAJADOR.HasValue)
+ {
+ return SUMACONCEPTO571IMPORTETRABAJADORRet;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "571").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO571IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO598IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO598IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO598IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO598IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "598").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO598IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO598IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO598IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO598IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO598IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "598").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO598IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO598IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO598IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO598IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO598IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "598").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO598IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO601IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO601IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO601IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO601IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "603").Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO601IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO601IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO601IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO601IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO601IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "603").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO601IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO601IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO601IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO601IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO601IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "603").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO601IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO601IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO601IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO601IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO601IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "603").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO601IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO611IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO611IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO611IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO611IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "611" || x.IDTIPOTRAMONavigation?.CODIGO == "613").Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO611IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO611IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO611IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO611IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO611IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "611" || x.IDTIPOTRAMONavigation?.CODIGO == "613").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO611IMPORTEGLOBAL = value;
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO611IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO611IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO611IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO611IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "611" || x.IDTIPOTRAMONavigation?.CODIGO == "613").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO611IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO611IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO611IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO611IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO611IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "611" || x.IDTIPOTRAMONavigation?.CODIGO == "613").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO611IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double ATYEPPORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "603" || x.IDTIPOTRAMONavigation?.CODIGO == "613").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "603" || x.IDTIPOTRAMONavigation?.CODIGO == "613").Sum(x => x.PORCENTAJEEMPRESA));
+ }
+ else if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "611").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "601" || x.IDTIPOTRAMONavigation?.CODIGO == "611").ToList().Sum(x => x.PORCENTAJEEMPRESA));
+ }
+
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double ATYEPPORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "603" || x.IDTIPOTRAMONavigation?.CODIGO == "613").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "603" || x.IDTIPOTRAMONavigation?.CODIGO == "613").ToList().Sum(x => x.PORCENTAJETRABAJADOR));
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO663IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO663IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO663IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO663IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "663").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO663IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO698IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO698IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO698IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO698IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "698").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO698IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO698IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO698IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO698IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO698IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "698").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO698IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO698IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO698IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO698IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO698IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "698").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO698IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO700IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO700IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO700IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO700IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO700IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO700IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO700IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO700IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO700IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701" || x.IDTIPOTRAMONavigation?.CODIGO == "702" || x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO700IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO700IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO700IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO700IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO700IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701" || x.IDTIPOTRAMONavigation?.CODIGO == "702" || x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO700IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO700IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO700IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO700IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO700IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701" || x.IDTIPOTRAMONavigation?.CODIGO == "702" || x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO700IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+
+ private double? _SUMACONCEPTO701IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO701IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO701IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO701IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO701IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO701IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO701IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO701IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO701IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO701IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO701IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO701IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO701IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO701IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO701IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO702IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO702IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO702IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO702IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO702IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO702IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO702IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO702IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO702IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO702IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO702IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO702IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO702IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO702IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO702IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO703IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO703IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO703IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO703IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO703IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO703IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO703IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO703IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO703IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO703IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO703IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO703IMPORTETRABAJADOR
+ {
+ get
+ {
+ double SUMACONCEPTO703IMPORTETRABAJADORRet = default;
+ if (_SUMACONCEPTO703IMPORTETRABAJADOR.HasValue)
+ {
+ return SUMACONCEPTO703IMPORTETRABAJADORRet;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO703IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO555IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO555IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO555IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO555IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO555IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO555IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO555IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO555IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO555IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO555IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO555IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO555IMPORTETRABAJADOR
+ {
+ get
+ {
+ double SUMACONCEPTO555IMPORTETRABAJADORRet = default;
+ if (_SUMACONCEPTO555IMPORTETRABAJADOR.HasValue)
+ {
+ return SUMACONCEPTO555IMPORTETRABAJADORRet;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO555IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double DESEMPLEOPORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double DESEMPLEOPORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "701").ToList().First().PORCENTAJETRABAJADOR);
+ }
+
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double FOGASAPORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double FOGASAPORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "702").ToList().First().PORCENTAJETRABAJADOR);
+ }
+
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double FPPORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double FPPORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "703" && x.PORCENTAJETRABAJADOR > 0).ToList().ToList().First().PORCENTAJETRABAJADOR);
+ }
+
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double MEIPORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555"|| x.IDTIPOTRAMONavigation?.CODIGO == "557").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double MEIPORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "555" || x.IDTIPOTRAMONavigation?.CODIGO == "557" && x.PORCENTAJETRABAJADOR > 0).ToList().First().PORCENTAJETRABAJADOR);
+ }
+
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO798IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO798IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO798IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO798IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "798").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO798IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO798IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO798IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO798IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO798IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "798").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO798IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO798IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO798IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO798IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO798IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "798").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO798IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO998IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO998IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO998IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO998IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "998").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO998IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO998IMPORTEGLOBALPOS;
+ [NotMapped]
+ public double SUMACONCEPTO998IMPORTEGLOBALPOS
+ {
+ get
+ {
+ double IMPORTEASUMAR = 0d;
+ if (_SUMACONCEPTO663IMPORTE.HasValue)
+ {
+ IMPORTEASUMAR = (double)(IMPORTEASUMAR + _SUMACONCEPTO663IMPORTE);
+ }
+ else
+ {
+ IMPORTEASUMAR = IMPORTEASUMAR + (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "663").Sum(x => x.IMPORTEEMPRESA));
+ }
+ if (_SUMACONCEPTO563IMPORTE.HasValue)
+ {
+ IMPORTEASUMAR = (double)(IMPORTEASUMAR + _SUMACONCEPTO563IMPORTE);
+ }
+ else
+ {
+ IMPORTEASUMAR = IMPORTEASUMAR + (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "563").Sum(x => x.IMPORTEEMPRESA));
+ }
+ if (_SUMACONCEPTO998IMPORTEGLOBAL.HasValue)
+ {
+
+ return (double)(_SUMACONCEPTO998IMPORTEGLOBAL + IMPORTEASUMAR);
+ }
+
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "998").Sum(x => x.IMPORTEGLOBAL)) + IMPORTEASUMAR;
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO998IMPORTEGLOBALPOS = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO998IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO998IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO998IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO998IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "998").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO998IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO998IMPORTEEMPRESAPOS;
+ [NotMapped]
+ public double SUMACONCEPTO998IMPORTEEMPRESAPOS
+ {
+ get
+ {
+ double IMPORTEASUMAR = 0d;
+ if (_SUMACONCEPTO663IMPORTE.HasValue)
+ {
+ IMPORTEASUMAR = (double)(IMPORTEASUMAR + _SUMACONCEPTO663IMPORTE);
+ }
+ else
+ {
+ IMPORTEASUMAR = IMPORTEASUMAR + (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "663").Sum(x => x.IMPORTEEMPRESA));
+ }
+ if (_SUMACONCEPTO563IMPORTE.HasValue)
+ {
+ IMPORTEASUMAR = (double)(IMPORTEASUMAR + _SUMACONCEPTO563IMPORTE);
+ }
+ else
+ {
+ IMPORTEASUMAR = IMPORTEASUMAR + (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "563").Sum(x => x.IMPORTEEMPRESA));
+ }
+ if (_SUMACONCEPTO998IMPORTEEMPRESA.HasValue)
+ {
+
+ return (double)(_SUMACONCEPTO998IMPORTEEMPRESA + IMPORTEASUMAR);
+ }
+
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "998").Sum(x => x.IMPORTEEMPRESA)) + IMPORTEASUMAR;
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO998IMPORTEEMPRESAPOS = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO998IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO998IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO998IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO998IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "998").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO998IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES MUTUA
+ {
+ get
+ {
+ return this.IDMUTUANavigation;
+ }
+ set
+ {
+ this.IDMUTUANavigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES MUTUA2
+ {
+ get
+ {
+ return this.IDMUTUA2Navigation;
+ }
+ set
+ {
+ this.IDMUTUA2Navigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES SINDICATO1
+ {
+ get
+ {
+ return this.IDSINDICATO1Navigation;
+ }
+ set
+ {
+ this.IDSINDICATO1Navigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES SINDICATO2
+ {
+ get
+ {
+ return this.IDSINDICATO2Navigation;
+ }
+ set
+ {
+ this.IDSINDICATO2Navigation = value;
+ }
+ }
+ [NotMapped]
+ public ENUMERACIONES TIPOPERSONA
+ {
+ get
+ {
+ return this.IDTIPOPERSONANavigation;
+ }
+ set
+ {
+ this.IDTIPOPERSONANavigation = value;
+ }
+ }
+ [NotMapped]
+ public double PagoEspeciePrestamo
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORPAGOESPECIE.Where(x => x.DESCRIPCION == "PRESTAMO").Sum(x => x.IMPORTE));
+ }
+ }
+ [NotMapped]
+ public double PagoSeguroAccidente
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORPAGOESPECIE.Where(x => x.DESCRIPCION == "SEGURO ACCIDENTE").Sum(x => x.IMPORTE));
+ }
+ }
+ [NotMapped]
+ public double TOTALCUOTAPAGOESPECIE
+ {
+ get
+ {
+
+ return (double)(this.NOMINATRABAJADORPAGOESPECIE.Sum(x => x.CUOTA));
+ }
+ }
+ [NotMapped]
+
+ public double SUMABASEIRPF
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORLINEA.Where(x => x.IDCONCEPTOGENERALNavigation.DESCRIPCION == "IRPF").Sum(x => x.IMPORTE));
+ }
+ }
+ [NotMapped]
+ public double SUMACUOTAIRPF
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORLINEA.Where(x => x.IDCONCEPTOGENERALNavigation.DESCRIPCION == "IRPF").Sum(x => x.TOTALDEDUCCIONES));
+ }
+ }
+ [NotMapped]
+ public double IMPORTEDERECHOSPASIVOS
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORLINEA.Where(x => x.IDCONCEPTOGENERALNavigation.DESCRIPCION.Contains("PASIVOS")).Sum(x => x.IMPORTE));
+ }
+ }
+ [NotMapped]
+ public double IMPORTEMUFACEMUGEJU
+ {
+ get
+ {
+ return (this.NOMINATRABAJADORLINEA.Where(x => x.IDCONCEPTOGENERALNavigation.DESCRIPCION.Contains("COTIZACION MUTUA")).Sum(x => x.IMPORTE));
+ }
+ }
+ [NotMapped]
+ public double? IMPORTESEGURO
+ {
+ get
+ {
+ if (this.IDPERSONANavigation != null)
+ {
+return (double)(this.IDPERSONANavigation.SEGUROACCIDENTE);
+ }
+ else
+ {
+ return 0;
+ }
+
+
+ }
+ }
+ [NotMapped]
+ private bool? _ExisteFichero;
+ //public bool ExisteFichero
+ //{
+ // get
+ // {
+ // if (_ExisteFichero.HasValue == false)
+ // {
+ // _ExisteFichero = Utilidades.CompruebaFicheroNomina(this);
+ // }
+ // return (bool)_ExisteFichero;
+ // }
+ // set
+ // {
+ // if (_ExisteFichero.HasValue == false)
+ // {
+ // _ExisteFichero = Utilidades.CompruebaFicheroNomina(this);
+ // }
+ // else
+ // {
+ // _ExisteFichero = value;
+ // }
+ // }
+ //}
+ public double CONCEPTO497PORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO497PORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497" && x.PORCENTAJETRABAJADOR > 0).ToList().First().PORCENTAJETRABAJADOR);
+ }
+ else
+ {
+ return 0d;
+ }
+
+
+ }
+ }
+ [NotMapped]
+
+ private double? _SUMACONCEPTO497IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO497IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO497IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO497IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO497IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO497IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO497IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO497IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO497IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO497IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO497IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO497IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO497IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO497IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO497IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO497IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO497IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO497IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO497IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "497").Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO497IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO498PORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO498PORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498" && x.PORCENTAJETRABAJADOR > 0).ToList().First().PORCENTAJETRABAJADOR);
+ }
+ else
+ {
+ return 0d;
+ }
+
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO498IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO498IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO498IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO498IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO498IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO498IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO498IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO498IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO498IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO498IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO498IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO498IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO498IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO498IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO498IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO498IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO498IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO498IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO498IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "498").ToList().Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO498IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO499PORCENTAJEEMPRESA
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().First().PORCENTAJEEMPRESA);
+ }
+ else
+ {
+ return 0d;
+ }
+
+ }
+ }
+ [NotMapped]
+ public double CONCEPTO499PORCENTAJETRABAJADOR
+ {
+ get
+ {
+ if (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499" && x.PORCENTAJETRABAJADOR > 0).ToList().Count > 0)
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499" && x.PORCENTAJETRABAJADOR > 0).ToList().First().PORCENTAJETRABAJADOR);
+ }
+ else
+ {
+ return 0d;
+ }
+
+
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO499IMPORTE;
+ [NotMapped]
+ public double SUMACONCEPTO499IMPORTE
+ {
+ get
+ {
+ if (_SUMACONCEPTO499IMPORTE.HasValue)
+ {
+ return (double)_SUMACONCEPTO499IMPORTE;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().Sum(x => x.IMPORTE));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO499IMPORTE = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO499IMPORTEGLOBAL;
+ [NotMapped]
+ public double SUMACONCEPTO499IMPORTEGLOBAL
+ {
+ get
+ {
+ if (_SUMACONCEPTO499IMPORTEGLOBAL.HasValue)
+ {
+ return (double)_SUMACONCEPTO499IMPORTEGLOBAL;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().Sum(x => x.IMPORTEGLOBAL));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO499IMPORTEGLOBAL = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO499IMPORTEEMPRESA;
+ [NotMapped]
+ public double SUMACONCEPTO499IMPORTEEMPRESA
+ {
+ get
+ {
+ if (_SUMACONCEPTO499IMPORTEEMPRESA.HasValue)
+ {
+ return (double)_SUMACONCEPTO499IMPORTEEMPRESA;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().Sum(x => x.IMPORTEEMPRESA));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO499IMPORTEEMPRESA = value;
+ }
+ }
+ [NotMapped]
+ private double? _SUMACONCEPTO499IMPORTETRABAJADOR;
+ [NotMapped]
+ public double SUMACONCEPTO499IMPORTETRABAJADOR
+ {
+ get
+ {
+ if (_SUMACONCEPTO499IMPORTETRABAJADOR.HasValue)
+ {
+ return (double)_SUMACONCEPTO499IMPORTETRABAJADOR;
+ }
+ else
+ {
+ return (this.PERIODOSSILTRA.SelectMany(x => x.TRAMOSSILTRA).Where(x => x.IDTIPOTRAMONavigation?.CODIGO == "499").ToList().Sum(x => x.IMPORTETRABAJADOR));
+ }
+ }
+ set
+ {
+ _SUMACONCEPTO499IMPORTETRABAJADOR = value;
+ }
+ }
+ [NotMapped]
+ public double IMPORTEINTERVIENEBASE
+ {
+ get
+ {
+ // Return Math.Round(Me.NOMINATRABAJADORLINEA.Where(Function(x) x.TOTALRETRIBUCIONES AndAlso x.CONCEPTOSGENERALES.COTIZASEGURIDADSOCIAL = True).Sum(Function(x) x.TOTALRETRIBUCIONES), 2, MidpointRounding.AwayFromZero) + Me.PRORRATAPAGAEXTRA + Me.PRORRATAPRODUCTIVIDAD + Me.TOTALPAGOESPECIE
+ double Total = 0d;
+ Total = (double)(Math.Round(this.NOMINATRABAJADORLINEA.Where(x => x.TOTALRETRIBUCIONES > 0 && x.IDCONCEPTOGENERALNavigation.COTIZASEGURIDADSOCIAL == true).Sum(x => x.TOTALRETRIBUCIONES), 2, MidpointRounding.AwayFromZero) + this.PRORRATAPAGAEXTRA + this.PRORRATAPRODUCTIVIDAD + this.TOTALSEGURIDADSOCIALPAGOENESPECIE);
+ var Lincondes = this.NOMINATRABAJADORLINEA.Any(x => x.TOTALRETRIBUCIONES > 0 && x.IDCONCEPTOGENERALNavigation.COTIZASEGURIDADSOCIAL == true && x.TIENEDESGLOSE);
+ if (Lincondes)
+ {
+ foreach (var lindes in this.NOMINATRABAJADORLINEA.Where(x => x.TOTALRETRIBUCIONES > 0 && x.IDCONCEPTOGENERALNavigation.COTIZASEGURIDADSOCIAL == true && x.TIENEDESGLOSE))
+ {
+ foreach (var des in lindes.NOMINATRABAJADORLINEADESGLOSE)
+ {
+ if (this.INCIDENCIAS.Any(x => des.DESCRIPCIONCONCEPTO is not null && x.TEXTO is not null && des.DESCRIPCIONCONCEPTO.Contains(x.TEXTO) && (x.IMPORTE == des.IMPORTE) && (x.COTIZASEGURIDADSOCIAL == false)))
+ {
+ Total = Total - (this.INCIDENCIAS.Where(x => des.DESCRIPCIONCONCEPTO is not null && x.TEXTO is not null && des.DESCRIPCIONCONCEPTO.Contains(x.TEXTO) && (x.IMPORTE == des.IMPORTE) && (x.COTIZASEGURIDADSOCIAL == false)).ToList().First().IMPORTE);
+ }
+ }
+ }
+ }
+ return Total;
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/OAEntities.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/OAEntities.cs
new file mode 100644
index 0000000..6d52db1
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/OAEntities.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class MOTIVOS_ADMINISTRATIVOS
+ {
+ public string TIPMOT
+ {
+ get
+ {
+ return this.IDTIPOAPTOSNavigation?.DESCRIPCION ?? "";
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERIODOSSILTRA.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERIODOSSILTRA.cs
new file mode 100644
index 0000000..3390363
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERIODOSSILTRA.cs
@@ -0,0 +1,29 @@
+using bdAntifraudeMYSQL.dbcontext;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class CUERPO
+ {
+ //public string GRUPODESCRIPCION
+ //{
+ // get
+ // {
+ // using (var context = tsGestionParlamento.NuevoContexto(SoloLectura: true, UseLazyLoadingProxies: false))
+ // {
+
+ // // Buscar el puesto actual de la persona
+ // var grupo = context.GRUPO
+ // .Where(x => x.IDGRUPO == this.GRUPO_ASOCIADO)
+ // .FirstOrDefault();
+
+ // return grupo?.GRUPO1;
+ // }
+ // }
+ //}
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERSONAS.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERSONAS.cs
new file mode 100644
index 0000000..6970cec
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PERSONAS.cs
@@ -0,0 +1,189 @@
+using bdAntifraudeMYSQL.dbcontext;
+using Microsoft.EntityFrameworkCore.Metadata.Internal;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class PERSONAS
+ {
+ public virtual ICollection IDIOMAS { get; set; } = new List();
+
+ public virtual ICollection PUESTOSIDPERSONALNavigation { get; set; } = new List();
+
+ public virtual ICollection PUESTOSTITULARNavigation { get; set; } = new List();
+
+ public static string ObtieneNifLink(string NIF)
+ {
+ return tsUtilidades.crypt.SHA1("M3Soft." + NIF);
+ }
+
+ ///
+ /// Propiedad calculada para obtener el cargo ocupado actual.
+ ///
+ public string CAROCUACTUAL
+ {
+ get
+ {
+ // Usar la colección PUESTOSIDPERSONALNavigation para encontrar el puesto activo
+ var puestoTrabajo = PUESTOSIDPERSONALNavigation?
+ .FirstOrDefault(p =>
+ p.IDRPTNavigation?.IDSITUACIONNavigation?.DESCRIPCION == "ACTIVA");
+
+ return puestoTrabajo?.IDOCUPACIONNavigation?.DESCRIPCION ?? "Sin cargo ocupado";
+ }
+ }
+
+
+ public string DEPARTAMENTOACTUAL
+ {
+ get
+ {
+
+ var aa = this;
+
+ var puesto = PUESTOSIDPERSONALNavigation?.FirstOrDefault(x => x.IDRPTNavigation?.IDSITUACIONNavigation?.DESCRIPCION == "ACTIVA");
+
+ return puesto?.IDRPTDESNavigation?.IDDEPARTAMENTONavigation?.VALORALFABETICOLARGO ?? "";
+ }
+ }
+
+ public string SERVICIOADSCRITO
+ {
+ get
+ {
+ var puesto = PUESTOSIDPERSONALNavigation?.FirstOrDefault(x => x.IDRPTNavigation?.IDSITUACIONNavigation?.DESCRIPCION == "ACTIVA");
+
+ return puesto?.IDSERVICIOADSCRITONavigation?.DESCRIPCION ?? "";
+ }
+ }
+ public string PUESTOACTUAL
+ {
+ get
+ {
+ var puesto = PUESTOSIDPERSONALNavigation?.FirstOrDefault(x => x.IDRPTNavigation?.IDSITUACIONNavigation?.DESCRIPCION == "ACTIVA");
+
+ return puesto?.IDRPTDESNavigation?.DENOMINACION ?? "";
+ }
+ }
+
+ ///
+ public string GRUPOFUNCIONARIODESCRIPCION
+ {
+ get
+ {
+ if (this.IDGRUPOFUNCIONARIO.HasValue)
+ return this.IDGRUPOFUNCIONARIONavigation?.DESCRIPCION ?? "";
+ else
+ return "";
+ }
+ }
+ public string APELLIDOSNOMBRE
+ {
+ get
+ {
+ return this.APELLIDOS + ", " + this.NOMBRE;
+ }
+ }
+
+ public string NombrePoblacion
+ {
+ get
+ {
+ var municipio = this.CODIGOMUNICIPIONavigation;
+ if (municipio == null)
+ {
+ return "";
+ }
+ else
+ {
+ // Buscar el código postal en CODIGOSPOSTALES del municipio
+ var cp = municipio.CODIGOSPOSTALES
+ .FirstOrDefault(x => x.CODIGOPOSTAL == this.CODIGOPOSTAL);
+ if (cp != null)
+ {
+ if (!string.IsNullOrEmpty(cp.DESCRIPCIONADICIONAL))
+ {
+ return municipio.NOMBRE + " (" + cp.DESCRIPCIONADICIONAL + ")";
+ }
+ else
+ {
+ return municipio.NOMBRE;
+ }
+ }
+ else
+ {
+ return municipio.NOMBRE;
+ }
+ }
+ }
+ }
+
+
+ public string NombreProvincia
+ {
+ get
+ {
+ var municipio = this.CODIGOMUNICIPIONavigation;
+ if (municipio == null)
+ return "";
+ else
+ return municipio.CODIGOPROVINCIANavigation?.NOMBRE ?? "";
+ }
+ }
+
+ public string NombrePoblacionNotificaciones
+ {
+ get
+ {
+ var municipio = this.CODIGOMUNICIPIONOTIFICACIONNavigation;
+ if (municipio == null)
+ {
+ return "";
+ }
+ else
+ {
+ if (this.CODIGOPOSTALNOTIFICACIONES != null &&
+ municipio.CODIGOSPOSTALES.Any(x => x.CODIGOPOSTAL == this.CODIGOPOSTALNOTIFICACIONES))
+ {
+ var cp = municipio.CODIGOSPOSTALES
+ .First(x => x.CODIGOPOSTAL == this.CODIGOPOSTALNOTIFICACIONES);
+
+ if (cp.DESCRIPCIONADICIONAL != null)
+ {
+ return municipio.NOMBRE + " (" + cp.DESCRIPCIONADICIONAL + ")";
+ }
+ else
+ {
+ return municipio.NOMBRE;
+ }
+ }
+ else
+ {
+ return "";
+ }
+ }
+ }
+ }
+ public string NombreProvinciaNotificaciones
+ {
+ get
+ {
+ var municipio = this.CODIGOMUNICIPIONOTIFICACIONNavigation;
+
+ if (municipio == null)
+ {
+ return "";
+ }
+ else
+ {
+ return municipio.CODIGOPROVINCIANavigation.NOMBRE;
+ }
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PUESTOS.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PUESTOS.cs
new file mode 100644
index 0000000..84ab80a
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/PUESTOS.cs
@@ -0,0 +1,65 @@
+using System;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class PUESTOS
+ {
+ public virtual DOTACION? IDDOTACIONNavigation { get; set; }
+
+ public virtual OCUPACION? IDOCUPACIONNavigation { get; set; }
+
+ public virtual PERSONAS? IDPERSONALNavigation { get; set; }
+
+ public virtual RPT_DESCRIP? IDRPTDESNavigation { get; set; }
+
+ public virtual RPT? IDRPTNavigation { get; set; }
+
+ public virtual PERSONAS? TITULARNavigation { get; set; }
+
+ public string DESPUESCOM
+ {
+ get
+ {
+ return "Código: " + (CODIGO ?? "N/A") +
+ " Departamento: " + (IDRPTDESNavigation?.IDDEPARTAMENTONavigation?.DESCRIPCION ?? "Sin Asignar") +
+ " Puesto: " + (IDRPTDESNavigation?.DENOMINACION ?? "N/A");
+ }
+ }
+
+ public string ADSDES
+ {
+ get
+ {
+ return IDRPTDESNavigation?.ADSCRIPCIONNavigation?.DESCRIPCION ?? "N/A";
+ }
+ }
+
+ public string DESGRU1
+ {
+ get
+ {
+ return IDRPTDESNavigation?.GRUPO1Navigation?.DESCRIPCION ?? "N/A";
+ }
+ }
+
+ public string PERSONAQUEOCUPA
+ {
+ get
+ {
+ return IDPERSONALNavigation != null
+ ? $"{IDPERSONALNavigation.APELLIDOS}, {IDPERSONALNavigation.NOMBRE}"
+ : "N/A";
+ }
+ }
+
+ public string PERSONAQUETITULAR
+ {
+ get
+ {
+ return TITULARNavigation != null
+ ? $"{TITULARNavigation.APELLIDOS}, {TITULARNavigation.NOMBRE}"
+ : "N/A";
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/RPT_DESCRIP.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/RPT_DESCRIP.cs
new file mode 100644
index 0000000..73aabe2
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/RPT_DESCRIP.cs
@@ -0,0 +1,20 @@
+using bdAntifraudeMYSQL.db;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class RPT_DESCRIP
+ {
+ public string DESDEP
+ {
+ get
+ {
+ return this.IDUNIDADADMINISTRATIVANavigation?.LITERAL_DEPARTAMENTO ?? "";
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/SITUACIONACTUALIRPF.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/SITUACIONACTUALIRPF.cs
new file mode 100644
index 0000000..044b9bd
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/SITUACIONACTUALIRPF.cs
@@ -0,0 +1,245 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+
+namespace bdAntifraudeMYSQL.db
+{
+
+ public partial class SITUACIONACTUALIRPF
+ {
+
+ [NotMapped]
+ public bool NECESITAAYUDADETERCERASPERSONASOMOVILIDADREDUCIDA
+ {
+ get
+ {
+ return NECEAYUDATERCPERSOMOVILRED;
+ }
+ set
+ {
+ this.NECEAYUDATERCPERSOMOVILRED = value;
+ }
+ }
+
+ [NotMapped]
+ public bool PROLONGACIONDELAACTIVIDADLABORAL
+ {
+ get
+ {
+ return PROLONGACTLABORAL;
+ }
+ set
+ {
+ this.PROLONGACTLABORAL = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESTOTALESIMPORTEINTEGRO
+ {
+ get
+ {
+ return RETRTOTALESIMPORTEINTEGRO;
+ }
+ set
+ {
+ this.RETRTOTALESIMPORTEINTEGRO = value;
+ }
+ }
+ [NotMapped]
+ public bool DATOSANTERIORESRENDIMIENTOSOBTENIDOSCEUTAOMELILLA
+ {
+ get
+ {
+ return DATANTERRENDIOBTENCEUOMEL;
+ }
+ set
+ {
+ this.DATANTERRENDIOBTENCEUOMEL = value;
+ }
+ }
+ [NotMapped]
+ public double PENSIONCOMPENSATORIAAFAVORDELCONYUGE
+ {
+ get
+ {
+ return PENSCOMPENFAVORCONYUGE;
+ }
+ set
+ {
+ this.PENSCOMPENFAVORCONYUGE = value;
+ }
+ }
+ [NotMapped]
+ public double ANUALIDADESPORALIMENTOSENFAVORDELOSHIJOS
+ {
+ get
+ {
+ return ANUALPORALIFAVORHIJOS;
+ }
+ set
+ {
+ this.ANUALPORALIFAVORHIJOS = value;
+ }
+ }
+ [NotMapped]
+ public bool RETRIBUCIONESINTEGRASINFERIORES33MIL
+ {
+ get
+ {
+ return RETRIINTEINFER33MIL;
+ }
+ set
+ {
+ this.RETRIINTEINFER33MIL = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESYASATISFECHASCONANTERIORIDADALAREGULARIZACION
+ {
+ get
+ {
+ return RETRIYASATISCONANTERAREGULAR;
+ }
+ set
+ {
+ this.RETRIYASATISCONANTERAREGULAR = value;
+ }
+ }
+ [NotMapped]
+ public double RETENCIONESEINGRESOSACUENTAYAPRACTICADOSCONANTAREGULA
+ {
+ get
+ {
+ return RETEINGRACUENTAPRACTANTAREG;
+ }
+ set
+ {
+ this.RETEINGRACUENTAPRACTANTAREG = value;
+ }
+ }
+ [NotMapped]
+ public double RETRIBUCIONESANUALESCONSIDERADASCONANTERIORIDADREGULARIZACION
+ {
+ get
+ {
+ return RETRIANUALCONSICONANTREG;
+ }
+ set
+ {
+ this.RETRIANUALCONSICONANTREG = value;
+ }
+ }
+ [NotMapped]
+ public double IMPORTEANUALDELASRETENCIONESEINGRESOSACUENTADETERMINADASANTESREG
+ {
+ get
+ {
+ return IMPANURETEINGRACUENDETANTREG;
+ }
+ set
+ {
+ this.IMPANURETEINGRACUENDETANTREG = value;
+ }
+ }
+ [NotMapped]
+ public bool LOSRENDIMIENTOSANTERIORESFUERONENCEUTAOMELILLA
+ {
+ get
+ {
+ return RENDANTFUERONCEUOMEL;
+ }
+ set
+ {
+ this.RENDANTFUERONCEUOMEL = value;
+ }
+ }
+ [NotMapped]
+ public double BASEPARACALCULARELTIPORETENCIONDETERMINADOANTESREGULARIZACION
+ {
+ get
+ {
+ return BASECALCTIPRETDETANTREGULAR;
+ }
+ set
+ {
+ this.BASECALCTIPRETDETANTREGULAR = value;
+ }
+ }
+ [NotMapped]
+ public double MINIMOPERSONALYFAMILIARPARACALCULARRETENCIONANTESREGULARIZACION
+ {
+ get
+ {
+ return MINPERSYFAMCALCRETANTREGU;
+ }
+ set
+ {
+ this.MINPERSYFAMCALCRETANTREGU = value;
+ }
+ }
+ [NotMapped]
+ public double TIPODERETENCIONCALCULADOANTESREGULARIZACION
+ {
+ get
+ {
+ return TIPRETENCALCANTREGU;
+ }
+ set
+ {
+ this.TIPRETENCALCANTREGU = value;
+ }
+ }
+ [NotMapped]
+ public bool ANTESDELAREGSEAPLICOMINORACIONPORPAGOSDEPRESTAMOSVIVIENDA
+ {
+ get
+ {
+ return ANTREGSEAPLMINORPAGPRESVIV;
+ }
+ set
+ {
+ this.ANTREGSEAPLMINORPAGPRESVIV = value;
+ }
+ }
+ [NotMapped]
+ public double IMPORTEMINORACIONPORPAGOSPRESTAMOSPARALAVIVIENDAANTESREG
+ {
+ get
+ {
+ return IMPMINPAGPRESTVIVANTREG;
+ }
+ set
+ {
+ this.IMPMINPAGPRESTVIVANTREG = value;
+ }
+ }
+ [NotMapped]
+ public double MINIMOPERSONALYFAMILIARPARACALCULARRETENCION
+ {
+ get
+ {
+ return MINPERSYFAMCALCRETEN;
+ }
+ set
+ {
+ this.MINPERSYFAMCALCRETEN = value;
+ }
+ }
+ [NotMapped]
+ public bool MINORACIONPORPAGOSPRESTAMOSVIVIENDAHABITUAL
+ {
+ get
+ {
+ return MINPAGPRESTVIVHA;
+ }
+ set
+ {
+ this.MINPAGPRESTVIVHA = value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/TRAMOSSILTRA.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/TRAMOSSILTRA.cs
new file mode 100644
index 0000000..468dd93
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/TRAMOSSILTRA.cs
@@ -0,0 +1,37 @@
+using bdAntifraudeMYSQL.dbcontext;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class TRAMOSSILTRA
+ {
+ [NotMapped]
+ public object DESCRIPCIONTRAMOXML
+ {
+ get
+ {
+ if (this.IDPERIODONavigation != null)
+ {
+ if (this.IDPERIODONavigation.IDTIPOLIQUIDACIONNavigation != null)
+ {
+ return this.IDPERIODONavigation.IDTIPOLIQUIDACIONNavigation.VALORALFABETICO1;
+ }
+ else
+ {
+ return null;
+ }
+
+ }
+ else
+ {
+ return null;
+ }
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/extensiones/VIDA_ADMINISTRATIVA.cs b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/VIDA_ADMINISTRATIVA.cs
new file mode 100644
index 0000000..7d4c225
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/extensiones/VIDA_ADMINISTRATIVA.cs
@@ -0,0 +1,126 @@
+using bdAntifraudeMYSQL.dbcontext;
+
+namespace bdAntifraudeMYSQL.db
+{
+ public partial class VIDA_ADMINISTRATIVA
+ {
+ ///
+ /// Obtiene la descripción de la causa administrativa.
+ ///
+ ///
+ /// Obtiene la descripción de la causa administrativa.
+ ///
+ public string CAUSA
+ {
+ get
+ {
+ return IDMOTIVONavigation?.DESCRIPCION ?? string.Empty;
+ }
+ }
+
+ ///
+ /// Verifica si hay líneas relacionadas cargadas en la propiedad LINEASVIDAADMINISTRATIVA.
+ ///
+ public bool TIENELINEAS
+ {
+ get
+ {
+ return LINEASVIDAADMINISTRATIVA != null &&
+ LINEASVIDAADMINISTRATIVA.Any(linea => linea.IDVIDAADMIN == this.IDVIDA);
+ }
+ }
+
+ public string MotivoTipo
+ {
+ get
+ {
+ return this.IDMOTIVONavigation?.IDTIPOAPTOSNavigation?.DESCRIPCION!;
+ }
+ }
+
+ public string DescripcionNivel {
+ get
+ {
+ string dn = "";
+ if (this.NIVEL_OLDNavigation?.IDNIVEL != 0){
+ return this.NIVEL_OLDNavigation?.NIVEL1 ?? "";
+ }
+ return dn;
+ }
+
+ }
+ public string DescripcionAdscripcion(List listaTP)
+ {
+ string des = "";
+ if (this.NRP?.Trim().Length > 12)
+ {
+ var caracter = this.NRP.Substring(11, 1);
+ if (listaTP.Any(x => x.TIPO_PERSONAL == caracter))
+ {
+ return listaTP?.FirstOrDefault(x => x.TIPO_PERSONAL == caracter)?.DESCRIPCION!;
+ }
+ }
+ return des;
+ }
+
+ public string DescripcionGrupo1 {
+ get {
+ string Des = "";
+ if (this?.NRP?.Trim().Length > 12)
+ {
+ if (this?.NRP.Trim().Length >= 16)
+ {
+ Des = this?.NRP.Substring(12, 2)!;
+ }
+ else
+ {
+ switch (this?.NRP.Substring(12, 1))
+ {
+ case "A":
+ {
+ Des = "A1";
+ break;
+ }
+ case "B":
+ {
+ Des = "A2";
+ break;
+ }
+ case "C":
+ {
+ Des = "C1";
+ break;
+ }
+ case "D":
+ {
+ Des = "C2";
+ break;
+ }
+ case "E":
+ {
+ Des = "E";
+ break;
+ }
+ case "I":
+ {
+ Des = "I";
+ if (this.NRP.Substring(13, 1) != "1")
+ {
+ Des = this.NRP.Substring(12, 2);
+ }
+
+ break;
+ }
+ case "V":
+ {
+ Des = "V";
+ break;
+ }
+ }
+ }
+ }
+ return Des;
+ }
+ }
+ }
+}
diff --git a/Antifraude.Net/bdAntifraudeMYSQL/vistas/ve_personas.cs b/Antifraude.Net/bdAntifraudeMYSQL/vistas/ve_personas.cs
new file mode 100644
index 0000000..f72ee49
--- /dev/null
+++ b/Antifraude.Net/bdAntifraudeMYSQL/vistas/ve_personas.cs
@@ -0,0 +1,177 @@
+using bdAntifraudeMYSQL.dbcontext;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace bdAntifraudeMYSQL.vistas
+{
+public class VePersonas
+{
+ public int IdPersona { get; set; }
+ public string NIF { get; set; }
+ public string Nombre { get; set; }
+ public string Apellidos { get; set; }
+ public string ApellidosNombre { get; set; }
+ public string CorreoElectronico { get; set; }
+ public string? departamento { get; set; }
+ public int? Externo { get; set; }
+ public string NRP { get; set; }
+ public string NumeroAfiliacionMutua { get; set; }
+ public DateTime? FechaNacimiento { get; set; }
+ public string Domicilio { get; set; }
+ public string CodigoPostal { get; set; }
+ public string Telefono { get; set; }
+ public DateTime? FechaAltaPAR { get; set; }
+ public DateTime? FechaBajaPAR { get; set; }
+ public DateTime? FechaPosibleJubilacion { get; set; }
+ public DateTime? FechaConsolidacionGrado { get; set; }
+ public DateTime? FechaCumplimientoProximoTrienio { get; set; }
+ public string Cuerpo { get; set; }
+ public string LiteralSituacion { get; set; }
+ public string AdscripcionRPT { get; set; }
+ public int? TotalTrienios { get; set; }
+ public DateTime? FechaComplementoCarrera { get; set; }
+ public string CausaBaja { get; set; }
+ public string Sexo { get; set; }
+ public string NombreMunicipio { get; set; }
+ public string NombreProvincia { get; set; }
+ public string Nivel { get; set; }
+ public string NivelPuestoActual { get; set; }
+ public string PuestoActual { get; set; }
+ public string DepartamentoActual { get; set; }
+ public string CargoOcupadoActual { get; set; }
+ public string TramoComplementoCarrera { get; set; }
+ public int? IdSituacion { get; set; }
+ public string GradoConsolidado { get; set; }
+ public string LinkNif { get; set; }
+ public string servicioAdscrito { get; set; }
+
+ public static List ObtenerVistaPersonas(tsGestionAntifraude bd, bool activos)
+ {
+ try
+ {
+
+
+ var comps = bd.COMPLEMENTOSCARRERA
+ .Where(x => x.IDPERSONA.HasValue)
+ .GroupBy(x => x.IDPERSONA).ToList()
+ .Select(x => x.OrderByDescending(y => y.FECHAINICIO).FirstOrDefault())
+ .Select(x => new { idPersona = x.IDPERSONA, FechaUltimoComplemento = x.FECHAINICIO, UltimoTramo = x.IDTRAMONavigation.DESCRIPCION })
+ .ToList();
+
+ var puest = bd.PUESTOS
+ .Where(x => x.IDRPTNavigation.IDSITUACIONNavigation.DESCRIPCION == "ACTIVA")
+ .Select(x => new { idPersona = x.IDPERSONAL, PuestoActual = x.IDRPTDESNavigation.DENOMINACION, DepartamentoActual = x.IDRPTDESNavigation.IDUNIDADADMINISTRATIVANavigation.LITERAL_DEPARTAMENTO, NivelPuestoActual = x.IDRPTDESNavigation.IDNIVEL_RPTNavigation.NIVEL1, CargoOcupadoActual = x.IDOCUPACIONNavigation.DESCRIPCION })
+ .ToList();
+
+ var trie = bd.TRIENIOS
+ .Where(x => x.IDPERSONAL.HasValue)
+ .GroupBy(x => x.IDPERSONAL).ToList()
+ .Select(x => new { idPersonal = x.First().IDPERSONAL, Trienios = x.Sum(y => (y.TC.HasValue ? y.TC.Value : 0) + (y.TOA.HasValue ? y.TOA.Value : 0)) })
+ .ToList();
+
+ var iDAltoCargo = bd.ENUMERACIONES.First(x => x.CODIGO == "TIPPER.ALTOCARGO").IDENUMERACION;
+ var iDDipAsig = bd.ENUMERACIONES.First(x => x.CODIGO == "TIPPER.DIPASIG").IDENUMERACION;
+ var iDTPaltoCargo= bd.TIPOS_PERSONAL.First(x => x.TIPO_PERSONAL == "A").IDTIPO;
+
+ var perstmp = (from x in bd.PERSONAS
+ where x.IDTIPO != iDAltoCargo && x.IDTIPO != iDDipAsig || x.IDADSCRIPCIONRPT!= iDTPaltoCargo
+ select new
+ {
+ IdPersona = x.IDPERSONA,
+ NIF = x.NIF,
+ Nombre = x.NOMBRE,
+ Apellidos = x.APELLIDOS,
+ CorreoElectronico = x.CORREOELECTRONICO,
+ departamento = x.IDDEPARTAMENTONavigation.DESCRIPCION,
+ Externo = x.EXTERNO,
+ NRP = x.NRP,
+ NumeroAfiliacionMutua = x.NUMEROAFILIACIONMUTUA,
+ FechaNacimiento = x.FECHANACIMIENTO,
+ Domicilio = x.DOMICILIO,
+ CodigoPostal = x.CODIGOPOSTAL,
+ Telefono = x.TELEFONO1,
+ FechaAltaPAR = x.FECHAALTAPAR,
+ FechaBajaPAR = x.FECHABAJAPAR,
+ FechaPosibleJubilacion = x.FECHAPOSIBLEJUBILACION,
+ FechaConsolidacionGrado = x.FECHACONSOLIDACIONGRADO,
+ FechaCumplimientoProximoTrienio = x.FECHACUMPLIMIENTOPROXTRIENIO,
+ Cuerpo = x.IDCUERPORPT.HasValue ? x.IDCUERPORPTNavigation.DESCRIPCION : "",
+ AdscripcionRPT = x.IDADSCRIPCIONRPT.HasValue ? x.IDTIPONavigation.DESCRIPCION : "",
+ CausaBaja = x.IDCAUSADEBAJA.HasValue ? x.IDCAUSADEBAJANavigation.DESCRIPCION : "",
+ Sexo = x.IDSEXO.HasValue ? x.IDSEXONavigation.DESCRIPCION : "",
+ CodigoMunicipio = x.CODIGOMUNICIPIO,
+ NombreMunicipio = x.CODIGOMUNICIPIO != null ? x.CODIGOMUNICIPIONavigation.NOMBRE : "",
+ NombreProvincia = x.CODIGOMUNICIPIO != null ? x.CODIGOMUNICIPIONavigation.CODIGOPROVINCIANavigation.NOMBRE : "",
+ Nivel = x.NIVEL,
+ LiteralSituacion = x.IDSITUACIONADMINISTRATIVARPT != null ? x.IDSITUACIONADMINISTRATIVARPTNavigation.LITERAL_SITUACION : "",
+ idSituacion = x.IDSITUACIONADMINISTRATIVARPT,
+ GrConsolidado = x.IDGRADOPERSONALCONSOLIDADO != null ? x.IDNIVELRPTNavigation.NIVEL1 : ""
+ }).ToList();
+
+ var pers = (from x in perstmp
+ join cc in comps on x.IdPersona equals cc.idPersona into gcc
+ from cc in gcc.DefaultIfEmpty()
+ join ps in puest on x.IdPersona equals ps.idPersona into gps
+ from ps in gps.DefaultIfEmpty()
+ join tri in trie on x.IdPersona equals tri.idPersonal into gtrie
+ from tri in gtrie.DefaultIfEmpty()
+ select new VePersonas
+ {
+ IdPersona = x.IdPersona,
+ NIF = x.NIF,
+ Nombre = x.Nombre,
+ Apellidos = x.Apellidos,
+ ApellidosNombre = x.Nombre + " " + x.Apellidos,
+ CorreoElectronico = x.CorreoElectronico,
+ departamento = x.departamento,
+ Externo = x.Externo,
+ NRP = x.NRP,
+ NumeroAfiliacionMutua = x.NumeroAfiliacionMutua,
+ FechaNacimiento = x.FechaNacimiento,
+ Domicilio = x.Domicilio,
+ CodigoPostal = x.CodigoPostal,
+ Telefono = x.Telefono,
+ FechaAltaPAR = x.FechaAltaPAR,
+ FechaBajaPAR = x.FechaBajaPAR,
+ FechaPosibleJubilacion = x.FechaPosibleJubilacion,
+ FechaConsolidacionGrado = x.FechaConsolidacionGrado,
+ FechaCumplimientoProximoTrienio = x.FechaCumplimientoProximoTrienio,
+ Cuerpo = x.Cuerpo,
+ AdscripcionRPT = x.AdscripcionRPT,
+ TotalTrienios = tri == null ? 0 : tri.Trienios,
+ CausaBaja = x.CausaBaja,
+ Sexo = x.Sexo,
+ NombreMunicipio = x.NombreMunicipio,
+ NombreProvincia = x.NombreProvincia,
+ Nivel = x.Nivel,
+ FechaComplementoCarrera = cc == null ? (DateTime?)null : cc.FechaUltimoComplemento,
+ TramoComplementoCarrera = cc == null ? "" : cc.UltimoTramo,
+ NivelPuestoActual = ps == null ? "" : ps.NivelPuestoActual,
+ CargoOcupadoActual = ps == null ? "" : ps.CargoOcupadoActual,
+ DepartamentoActual = ps == null ? "" : ps.DepartamentoActual,
+ PuestoActual = ps == null ? "" : ps.PuestoActual,
+ LiteralSituacion = x.LiteralSituacion,
+ IdSituacion = x.idSituacion,
+ GradoConsolidado = x.GrConsolidado,
+ LinkNif = bdAntifraudeMYSQL.db.PERSONAS.ObtieneNifLink(x.NIF)
+ }); ;
+
+ if (activos)
+ {
+ int idsituacion = bd.SITUACION.First(x => x.CLAVE_SITUACION == "AC").IDSITUACION;
+ pers = pers.Where(x => x.IdSituacion.HasValue && x.IdSituacion == idsituacion);
+ }
+
+ return pers.ToList();
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message, ex);
+ }
+ }
+}
+
+}