< Summary

Information
Class: FAU.Logica.Services.InsumoValidators.LotesCompensacionValidator
Assembly: FAU.Logica
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.Logica/Services/InsumoValidators/LotesCompensacionValidator.cs
Line coverage
100%
Covered lines: 25
Uncovered lines: 0
Coverable lines: 25
Total lines: 46
Line coverage: 100%
Branch coverage
100%
Covered branches: 4
Total branches: 4
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%
ValidarAsync()100%44100%

File(s)

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

#LineLine coverage
 1using FAU.DataAccess;
 2using FAU.Entidades;
 3using FAU.Logica.DTOs;
 4using Microsoft.EntityFrameworkCore;
 5
 6namespace FAU.Logica.Services.InsumoValidators;
 7
 8public class LotesCompensacionValidator : InsumoValidatorBase
 9{
 10    private readonly ApplicationDbContext _context;
 11
 2912    public LotesCompensacionValidator(ApplicationDbContext context)
 13    {
 2914        _context = context;
 2915    }
 16
 17    public override async Task<List<ItemInsumoDto>> ValidarAsync(Periodo periodo)
 18    {
 1119        var items = new List<ItemInsumoDto>();
 20
 1121        var tipos = await _context.TiposCompensacion
 1122            .AsNoTracking()
 1123            .Where(t => t.Vigente)
 1124            .Select(t => new { t.Id, t.Nombre })
 1125            .ToListAsync();
 26
 4227        foreach (var tipo in tipos)
 28        {
 1029            var tieneAprobado = await _context.LotesCompensacion
 1030                .AsNoTracking()
 1031                .AnyAsync(l =>
 1032                    l.TipoCompensacionId == tipo.Id &&
 1033                    l.Periodo.Year == periodo.Anio &&
 1034                    l.Periodo.Month == periodo.Mes &&
 1035                    l.Estado == "aprobado");
 36
 1037            if (!tieneAprobado)
 538                items.Add(Confirmable(
 539                    clave: $"LoteFaltante:{tipo.Nombre}",
 540                    tipo: "lote_faltante",
 541                    descripcion: $"{tipo.Nombre} no tiene lote aprobado para el período"));
 1042        }
 43
 1144        return items;
 1145    }
 46}