< 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: 24
Uncovered lines: 0
Coverable lines: 24
Total lines: 45
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
 3112    public LotesCompensacionValidator(ApplicationDbContext context)
 13    {
 3114        _context = context;
 3115    }
 16
 17    public override async Task<List<ItemInsumoDto>> ValidarAsync(Periodo periodo)
 18    {
 1219        var items = new List<ItemInsumoDto>();
 20
 1221        var tipos = await _context.TiposCompensacion
 1222            .AsNoTracking()
 1223            .Where(t => t.Vigente)
 1224            .Select(t => new { t.Id, t.Nombre })
 1225            .ToListAsync();
 26
 4627        foreach (var tipo in tipos)
 28        {
 1129            var tieneAprobado = await _context.LotesCompensacion
 1130                .AsNoTracking()
 1131                .AnyAsync(l =>
 1132                    l.TipoCompensacionId == tipo.Id &&
 1133                    l.PeriodoId == periodo.Id &&
 1134                    l.Estado == "aprobado");
 35
 1136            if (!tieneAprobado)
 537                items.Add(Confirmable(
 538                    clave: $"LoteFaltante:{tipo.Nombre}",
 539                    tipo: "lote_faltante",
 540                    descripcion: $"{tipo.Nombre} no tiene lote aprobado para el período"));
 1141        }
 42
 1243        return items;
 1244    }
 45}