< Summary

Information
Class: FAU.DataAccess.Repositories.DescuentoPersonalRepository
Assembly: FAU.DataAccess
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/Repositories/DescuentoPersonalRepository.cs
Line coverage
100%
Covered lines: 50
Uncovered lines: 0
Coverable lines: 50
Total lines: 88
Line coverage: 100%
Branch coverage
70%
Covered branches: 7
Total branches: 10
Branch coverage: 70%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.cctor()100%11100%
.ctor(...)100%11100%
GetByIdAsync()100%11100%
GetByPeriodoAsync()50%66100%
GetConfirmadosPorPersonaAsync()100%11100%
TieneBorradoresAsync()100%11100%
CreateAsync()100%11100%
UpdateAsync()100%11100%
DeleteAsync()100%22100%
ConfirmarBorradoresAsync()100%22100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/Repositories/DescuentoPersonalRepository.cs

#LineLine coverage
 1using FAU.Entidades;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace FAU.DataAccess.Repositories;
 5
 6public class DescuentoPersonalRepository : IDescuentoPersonalRepository
 7{
 18    private static readonly string[] EstadosAplicables =
 19    [
 110        "confirmado",
 111        "aplicado",
 112        "parcial",
 113        "deficit"
 114    ];
 15
 16    private readonly ApplicationDbContext _context;
 17
 2418    public DescuentoPersonalRepository(ApplicationDbContext context) => _context = context;
 19
 20    public async Task<DescuentoPersonalPeriodo?> GetByIdAsync(long id) =>
 221        await _context.DescuentosPersonalesPeriodo
 222            .Include(d => d.Persona)
 223            .Include(d => d.Acreedor)
 224            .Include(d => d.CatalogoItem)
 225            .FirstOrDefaultAsync(d => d.Id == id);
 26
 27    public async Task<IEnumerable<DescuentoPersonalPeriodo>> GetByPeriodoAsync(
 28        long periodoId, long? personaId = null, int? codigoConcepto = null, string? estado = null)
 29    {
 130        var query = _context.DescuentosPersonalesPeriodo
 131            .Include(d => d.Persona)
 132            .Include(d => d.Acreedor)
 133            .Include(d => d.CatalogoItem)
 134            .Where(d => d.PeriodoId == periodoId);
 35
 136        if (personaId.HasValue)      query = query.Where(d => d.PersonaId == personaId.Value);
 137        if (codigoConcepto.HasValue) query = query.Where(d => d.CatalogoItem.Codigo == codigoConcepto.Value);
 138        if (!string.IsNullOrEmpty(estado)) query = query.Where(d => d.Estado == estado);
 39
 140        return await query.OrderBy(d => d.Persona.PrimerApellido).ToListAsync();
 141    }
 42
 43    public async Task<IEnumerable<DescuentoPersonalPeriodo>> GetConfirmadosPorPersonaAsync(long periodoId, long personaI
 244        await _context.DescuentosPersonalesPeriodo
 245            .Include(d => d.Acreedor)
 246            .Include(d => d.CatalogoItem)
 247            .Where(d => d.PeriodoId == periodoId && d.PersonaId == personaId && EstadosAplicables.Contains(d.Estado))
 248            .ToListAsync();
 49
 50    public async Task<bool> TieneBorradoresAsync(long periodoId) =>
 251        await _context.DescuentosPersonalesPeriodo
 252            .AnyAsync(d => d.PeriodoId == periodoId && d.Estado == "borrador");
 53
 54    public async Task<DescuentoPersonalPeriodo> CreateAsync(DescuentoPersonalPeriodo descuento)
 55    {
 156        _context.DescuentosPersonalesPeriodo.Add(descuento);
 157        await _context.SaveChangesAsync();
 158        return descuento;
 159    }
 60
 61    public async Task<DescuentoPersonalPeriodo> UpdateAsync(DescuentoPersonalPeriodo descuento)
 62    {
 163        _context.DescuentosPersonalesPeriodo.Update(descuento);
 164        await _context.SaveChangesAsync();
 165        return descuento;
 166    }
 67
 68    public async Task DeleteAsync(long id)
 69    {
 270        var d = await _context.DescuentosPersonalesPeriodo.FindAsync(id);
 271        if (d != null)
 72        {
 173            _context.DescuentosPersonalesPeriodo.Remove(d);
 174            await _context.SaveChangesAsync();
 75        }
 276    }
 77
 78    public async Task<int> ConfirmarBorradoresAsync(long periodoId)
 79    {
 180        var borradores = await _context.DescuentosPersonalesPeriodo
 181            .Where(d => d.PeriodoId == periodoId && d.Estado == "borrador")
 182            .ToListAsync();
 83
 884        foreach (var d in borradores) d.Estado = "confirmado";
 185        await _context.SaveChangesAsync();
 186        return borradores.Count;
 187    }
 88}