< 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: 43
Uncovered lines: 0
Coverable lines: 43
Total lines: 80
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
.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{
 8    private readonly ApplicationDbContext _context;
 9
 2210    public DescuentoPersonalRepository(ApplicationDbContext context) => _context = context;
 11
 12    public async Task<DescuentoPersonalPeriodo?> GetByIdAsync(long id) =>
 213        await _context.DescuentosPersonalesPeriodo
 214            .Include(d => d.Persona)
 215            .Include(d => d.Acreedor)
 216            .Include(d => d.CatalogoItem)
 217            .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    {
 122        var query = _context.DescuentosPersonalesPeriodo
 123            .Include(d => d.Persona)
 124            .Include(d => d.Acreedor)
 125            .Include(d => d.CatalogoItem)
 126            .Where(d => d.PeriodoId == periodoId);
 27
 128        if (personaId.HasValue)      query = query.Where(d => d.PersonaId == personaId.Value);
 129        if (codigoConcepto.HasValue) query = query.Where(d => d.CatalogoItem.Codigo == codigoConcepto.Value);
 130        if (!string.IsNullOrEmpty(estado)) query = query.Where(d => d.Estado == estado);
 31
 132        return await query.OrderBy(d => d.Persona.PrimerApellido).ToListAsync();
 133    }
 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) =>
 243        await _context.DescuentosPersonalesPeriodo
 244            .AnyAsync(d => d.PeriodoId == periodoId && d.Estado == "borrador");
 45
 46    public async Task<DescuentoPersonalPeriodo> CreateAsync(DescuentoPersonalPeriodo descuento)
 47    {
 148        _context.DescuentosPersonalesPeriodo.Add(descuento);
 149        await _context.SaveChangesAsync();
 150        return descuento;
 151    }
 52
 53    public async Task<DescuentoPersonalPeriodo> UpdateAsync(DescuentoPersonalPeriodo descuento)
 54    {
 155        _context.DescuentosPersonalesPeriodo.Update(descuento);
 156        await _context.SaveChangesAsync();
 157        return descuento;
 158    }
 59
 60    public async Task DeleteAsync(long id)
 61    {
 262        var d = await _context.DescuentosPersonalesPeriodo.FindAsync(id);
 263        if (d != null)
 64        {
 165            _context.DescuentosPersonalesPeriodo.Remove(d);
 166            await _context.SaveChangesAsync();
 67        }
 268    }
 69
 70    public async Task<int> ConfirmarBorradoresAsync(long periodoId)
 71    {
 172        var borradores = await _context.DescuentosPersonalesPeriodo
 173            .Where(d => d.PeriodoId == periodoId && d.Estado == "borrador")
 174            .ToListAsync();
 75
 876        foreach (var d in borradores) d.Estado = "confirmado";
 177        await _context.SaveChangesAsync();
 178        return borradores.Count;
 179    }
 80}