< Summary

Information
Class: FAU.Logica.Calculadores.CalculadorFactory
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/CalculadorFactory.cs
Line coverage
100%
Covered lines: 64
Uncovered lines: 0
Coverable lines: 64
Total lines: 76
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%
Resolver(...)100%22100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Calculadores/CalculadorFactory.cs

#LineLine coverage
 1namespace FAU.Logica.Calculadores;
 2
 3public class CalculadorFactory : ICalculadorFactory
 4{
 5    private readonly Dictionary<string, ICalculadorHaberes> _calculadores;
 6
 267    public CalculadorFactory(
 268        Sit10Calculator sit10,
 269        Sit30Calculator sit30,
 2610        Sit32Calculator sit32,
 2611        Sit50Calculator sit50,
 2612        Sit70Calculator sit70,
 2613        SitCadeteCalculator sitCadete,
 2614        AguinaldoCalculator aguinaldo,
 2615        ReservaCalculator reserva,
 2616        ReservaSuperiorCalculator reservaSuperior,
 2617        SitSubalternoReincorporadoCalculator subalternoReincorporado)
 18    {
 2619        _calculadores = new Dictionary<string, ICalculadorHaberes>(StringComparer.OrdinalIgnoreCase)
 2620        {
 2621            // ── Personal Superior ──────────────────────────────────────────────────
 2622            // FoxPro: situa_per=10 (y 12/14/20) → sum33101 sin PAO
 2623            // DB: SIT01 en actividad; SIT02 en disponibilidad.
 2624            // NOTA: FoxPro situa_per=16 (reservista) también usaba sum33101 pero con
 2625            // sueldo reserva y PAO — esos van a ReservaSuperiorCalculator (SIT05), NO aquí.
 2626            [nameof(Sit10Calculator)]   = sit10,
 2627            ["Sit20Calculator"]         = sit10,   // SIT02 disponibilidad → MISMO que SIT01
 2628
 2629            // ── Personal Subalterno ────────────────────────────────────────────────
 2630            // FoxPro: situa_per=30/31/33/34/36 → sum33106
 2631            [nameof(Sit30Calculator)]   = sit30,   // SIT07 en actividad + sueldo retenido (sit36)
 2632
 2633            // ── Escalafón Especialistas (AT / Técnico) ─────────────────────────────
 2634            // FoxPro: situa_per=10 + escal_mil=19 → sum33119 (variante de sum33101)
 2635            // Sit32Calculator maneja Prima Técnica A/B/C (sum33110 del AT)
 2636            [nameof(Sit32Calculator)]   = sit32,
 2637
 2638            // ── Reincorporados ─────────────────────────────────────────────────────
 2639            // FoxPro: situa_per=50 → sum33105 (Superior Reincorporado)
 2640            [nameof(Sit50Calculator)]   = sit50,
 2641
 2642            // FoxPro: situa_per=52 → sum33107 (Subalterno Reincorporado)
 2643            [nameof(SitSubalternoReincorporadoCalculator)] = subalternoReincorporado,
 2644
 2645            // ── Civil ──────────────────────────────────────────────────────────────
 2646            // FoxPro: situa_per=74 → sum33174 (Civil Presupuestado S/Equip.)
 2647            [nameof(Sit70Calculator)]   = sit70,
 2648            ["CivilCalculator"]         = sit70,   // Alias usado en el seed actual de la DB
 2649
 2650            // ── Cadetes / Aspirantes ───────────────────────────────────────────────
 2651            // FoxPro: situa_per=40 → sum33126 / situa_per=42 → sum33127
 2652            [nameof(SitCadeteCalculator)] = sitCadete,
 2653            ["Sit40Calculator"]           = sitCadete,   // Alias usado en el seed actual de la DB
 2654
 2655            // ── Bajas del mes (SAC Aguinaldo) ──────────────────────────────────────
 2656            // FoxPro: SIT14/15/18/20 del sistema legado
 2657            [nameof(AguinaldoCalculator)] = aguinaldo,
 2658
 2659            // ── Reservistas ────────────────────────────────────────────────────────
 2660            // FoxPro: situa_per=32 → sum33108 (Reservista Personal Subalterno)
 2661            [nameof(ReservaCalculator)] = reserva,
 2662
 2663            // FoxPro: situa_per=16 usa sum33101 con sueldo reserva y PAO.
 2664            [nameof(ReservaSuperiorCalculator)] = reservaSuperior,
 2665
 2666            // TODO: SIT22 SubsidioCalculator — no existe en FoxPro histórico; pendiente DFC
 2667        };
 2668    }
 69
 70    public ICalculadorHaberes? Resolver(string? nombreCalculador)
 71    {
 2972        if (string.IsNullOrEmpty(nombreCalculador)) return null;
 2573        _calculadores.TryGetValue(nombreCalculador, out var calc);
 2574        return calc;
 75    }
 76}