< Summary

Information
Class: FAU.Logica.Services.PeriodoGuard
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/PeriodoGuard.cs
Line coverage
46%
Covered lines: 7
Uncovered lines: 8
Coverable lines: 15
Total lines: 40
Line coverage: 46.6%
Branch coverage
33%
Covered branches: 4
Total branches: 12
Branch coverage: 33.3%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
VerificarPeriodoAbiertoAsync()100%44100%
ObtenerPrimerDiaPeriodoAbiertoAsync()0%2040%
ObtenerPeriodoAbiertoAsync()0%2040%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/PeriodoGuard.cs

#LineLine coverage
 1using FAU.DataAccess.Repositories;
 2using FAU.Entidades;
 3using FAU.Logica.Exceptions;
 4
 5namespace FAU.Logica.Services;
 6
 7public class PeriodoGuard : IPeriodoGuard
 8{
 9    private readonly IPeriodosRepository _periodosRepository;
 10
 611    public PeriodoGuard(IPeriodosRepository periodosRepository)
 12    {
 613        _periodosRepository = periodosRepository;
 614    }
 15
 16    public async Task VerificarPeriodoAbiertoAsync()
 17    {
 518        var periodo = await _periodosRepository.ObtenerEnCursoAsync();
 519        if (periodo is not null && periodo.Estado != Periodo.EstadoAbierta)
 20        {
 321            throw new PeriodoBloqueadoException(periodo.Estado);
 22        }
 223    }
 24
 25    public async Task<DateTime> ObtenerPrimerDiaPeriodoAbiertoAsync()
 26    {
 027        var periodo = await _periodosRepository.ObtenerEnCursoAsync();
 028        if (periodo is not null && periodo.Estado == Periodo.EstadoAbierta)
 029            return new DateTime(periodo.Anio, periodo.Mes, 1);
 30
 31        // Fallback: si no hay período abierto, usar el mes actual
 032        return new DateTime(DateTime.UtcNow.Year, DateTime.UtcNow.Month, 1);
 033    }
 34
 35    public async Task<Periodo?> ObtenerPeriodoAbiertoAsync()
 36    {
 037        var periodo = await _periodosRepository.ObtenerEnCursoAsync();
 038        return periodo is not null && periodo.Estado == Periodo.EstadoAbierta ? periodo : null;
 039    }
 40}