< 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
13%
Covered lines: 6
Uncovered lines: 37
Coverable lines: 43
Total lines: 80
Line coverage: 13.9%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetByIdAsync()100%210%
GetByPeriodoAsync()0%4260%
GetConfirmadosPorPersonaAsync()100%11100%
TieneBorradoresAsync()100%210%
CreateAsync()100%210%
UpdateAsync()100%210%
DeleteAsync()0%620%
ConfirmarBorradoresAsync()0%620%

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{
 8    private readonly ApplicationDbContext _context;
 9
 210    public DescuentoPersonalRepository(ApplicationDbContext context) => _context = context;
 11
 12    public async Task<DescuentoPersonalPeriodo?> GetByIdAsync(long id) =>
 013        await _context.DescuentosPersonalesPeriodo
 014            .Include(d => d.Persona)
 015            .Include(d => d.Acreedor)
 016            .Include(d => d.CatalogoItem)
 017            .FirstOrDefaultAsync(d => d.Id == id);
 18
 19    public async Task<IEnumerable<DescuentoPersonalPeriodo>> GetByPeriodoAsync(
 20        long periodoId, long? personaId = null, int? codigoConcepto = null, string? estado = null)
 21    {
 022        var query = _context.DescuentosPersonalesPeriodo
 023            .Include(d => d.Persona)
 024            .Include(d => d.Acreedor)
 025            .Include(d => d.CatalogoItem)
 026            .Where(d => d.PeriodoId == periodoId);
 27
 028        if (personaId.HasValue)      query = query.Where(d => d.PersonaId == personaId.Value);
 029        if (codigoConcepto.HasValue) query = query.Where(d => d.CatalogoItem.Codigo == codigoConcepto.Value);
 030        if (!string.IsNullOrEmpty(estado)) query = query.Where(d => d.Estado == estado);
 31
 032        return await query.OrderBy(d => d.Persona.PrimerApellido).ToListAsync();
 033    }
 34
 35    public async Task<IEnumerable<DescuentoPersonalPeriodo>> GetConfirmadosPorPersonaAsync(long periodoId, long personaI
 136        await _context.DescuentosPersonalesPeriodo
 137            .Include(d => d.Acreedor)
 138            .Include(d => d.CatalogoItem)
 139            .Where(d => d.PeriodoId == periodoId && d.PersonaId == personaId && d.Estado == "confirmado")
 140            .ToListAsync();
 41
 42    public async Task<bool> TieneBorradoresAsync(long periodoId) =>
 043        await _context.DescuentosPersonalesPeriodo
 044            .AnyAsync(d => d.PeriodoId == periodoId && d.Estado == "borrador");
 45
 46    public async Task<DescuentoPersonalPeriodo> CreateAsync(DescuentoPersonalPeriodo descuento)
 47    {
 048        _context.DescuentosPersonalesPeriodo.Add(descuento);
 049        await _context.SaveChangesAsync();
 050        return descuento;
 051    }
 52
 53    public async Task<DescuentoPersonalPeriodo> UpdateAsync(DescuentoPersonalPeriodo descuento)
 54    {
 055        _context.DescuentosPersonalesPeriodo.Update(descuento);
 056        await _context.SaveChangesAsync();
 057        return descuento;
 058    }
 59
 60    public async Task DeleteAsync(long id)
 61    {
 062        var d = await _context.DescuentosPersonalesPeriodo.FindAsync(id);
 063        if (d != null)
 64        {
 065            _context.DescuentosPersonalesPeriodo.Remove(d);
 066            await _context.SaveChangesAsync();
 67        }
 068    }
 69
 70    public async Task<int> ConfirmarBorradoresAsync(long periodoId)
 71    {
 072        var borradores = await _context.DescuentosPersonalesPeriodo
 073            .Where(d => d.PeriodoId == periodoId && d.Estado == "borrador")
 074            .ToListAsync();
 75
 076        foreach (var d in borradores) d.Estado = "confirmado";
 077        await _context.SaveChangesAsync();
 078        return borradores.Count;
 079    }
 80}