< Summary

Information
Class: FAU.Logica.Validadores.RelacionLaboralValidator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Validadores/RelacionLaboralValidator.cs
Line coverage
100%
Covered lines: 13
Uncovered lines: 0
Coverable lines: 13
Total lines: 47
Line coverage: 100%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
ValidarNoExisteRelacionActiva()100%11100%
ObtenerErrorSiExisteRelacionActiva()100%22100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Validadores/RelacionLaboralValidator.cs

#LineLine coverage
 1using FAU.DataAccess;
 2using FAU.Entidades;
 3using Microsoft.EntityFrameworkCore;
 4
 5namespace FAU.Logica.Validadores;
 6
 7/// <summary>
 8/// Validador para relaciones laborales del personal
 9/// </summary>
 10public class RelacionLaboralValidator
 11{
 12    private readonly ApplicationDbContext _context;
 13
 214    public RelacionLaboralValidator(ApplicationDbContext context)
 15    {
 216        _context = context;
 217    }
 18
 19    /// <summary>
 20    /// Valida que no exista una relación laboral activa para la cédula ingresada
 21    /// </summary>
 22    /// <param name="cedula">Cédula de la persona</param>
 23    /// <returns>True si es válido (no hay relación activa)</returns>
 24    public async Task<bool> ValidarNoExisteRelacionActiva(string cedula)
 25    {
 226        var tieneRelacionActiva = await _context.Personas
 227            .Where(p => p.Cedula == cedula)
 228            .SelectMany(p => p.RelacionesLaborales)
 229            .AnyAsync(r => r.Estado == EstadoRelacion.Activo);
 30
 231        return !tieneRelacionActiva;
 232    }
 33
 34    /// <summary>
 35    /// Obtiene un mensaje de error si la persona ya tiene una relación activa
 36    /// </summary>
 37    /// <param name="cedula">Cédula de la persona</param>
 38    /// <returns>Mensaje de error o null si es válido</returns>
 39    public async Task<string?> ObtenerErrorSiExisteRelacionActiva(string cedula)
 40    {
 241        if (!await ValidarNoExisteRelacionActiva(cedula))
 42        {
 143            return $"La persona con cédula {cedula} ya tiene una relación laboral activa. No se pueden tener dos relacio
 44        }
 145        return null;
 246    }
 47}