< Summary

Information
Class: FAU.DataAccess.Repositories.FictoPersonaRepository
Assembly: FAU.DataAccess
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/Repositories/FictoPersonaRepository.cs
Line coverage
89%
Covered lines: 52
Uncovered lines: 6
Coverable lines: 58
Total lines: 104
Line coverage: 89.6%
Branch coverage
100%
Covered branches: 10
Total branches: 10
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%
ObtenerPorIdAsync(...)100%11100%
ObtenerPorPersonaYCatalogoAsync(...)100%11100%
ObtenerPaginadoAsync()100%66100%
ObtenerPorPersonasYCatalogosAsync()100%44100%
ObtenerActivosAsync()100%210%
CrearAsync()100%11100%
ActualizarAsync()100%11100%
ConsultaCompleta()100%11100%

File(s)

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

#LineLine coverage
 1using FAU.Entidades;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace FAU.DataAccess.Repositories;
 5
 6public class FictoPersonaRepository : IFictoPersonaRepository
 7{
 8    private readonly ApplicationDbContext _contexto;
 9
 1510    public FictoPersonaRepository(ApplicationDbContext contexto)
 11    {
 1512        _contexto = contexto;
 1513    }
 14
 15    public Task<FictoPersona?> ObtenerPorIdAsync(long id) =>
 1416        ConsultaCompleta()
 1417            .FirstOrDefaultAsync(f => f.Id == id);
 18
 19    public Task<FictoPersona?> ObtenerPorPersonaYCatalogoAsync(long personaId, long catalogoItemId) =>
 820        ConsultaCompleta()
 821            .FirstOrDefaultAsync(f =>
 822                f.PersonaId == personaId &&
 823                f.CatalogoItemId == catalogoItemId);
 24
 25    public async Task<(IReadOnlyList<FictoPersona> Items, int Total)> ObtenerPaginadoAsync(
 26        int pagina,
 27        int tamano,
 28        string? busqueda,
 29        long? catalogoItemId,
 30        bool? activo)
 31    {
 132        var consulta = ConsultaCompleta().AsNoTracking();
 33
 134        if (!string.IsNullOrWhiteSpace(busqueda))
 35        {
 136            var texto = busqueda.Trim();
 137            consulta = consulta.Where(f =>
 138                f.Persona.Cedula.Contains(texto) ||
 139                f.Persona.PrimerNombre.Contains(texto) ||
 140                f.Persona.PrimerApellido.Contains(texto) ||
 141                (f.Persona.SegundoNombre != null && f.Persona.SegundoNombre.Contains(texto)) ||
 142                (f.Persona.SegundoApellido != null && f.Persona.SegundoApellido.Contains(texto)));
 43        }
 44
 145        if (catalogoItemId.HasValue)
 146            consulta = consulta.Where(f => f.CatalogoItemId == catalogoItemId.Value);
 47
 148        if (activo.HasValue)
 149            consulta = consulta.Where(f => f.Activo == activo.Value);
 50
 151        var total = await consulta.CountAsync();
 152        var items = await consulta
 153            .OrderBy(f => f.Persona.PrimerApellido)
 154            .ThenBy(f => f.Persona.PrimerNombre)
 155            .ThenBy(f => f.CatalogoItem.Codigo)
 156            .Skip((pagina - 1) * tamano)
 157            .Take(tamano)
 158            .ToListAsync();
 59
 160        return (items, total);
 161    }
 62
 63    public async Task<IReadOnlyList<FictoPersona>> ObtenerPorPersonasYCatalogosAsync(
 64        IReadOnlyCollection<long> personaIds,
 65        IReadOnlyCollection<long> catalogoItemIds)
 66    {
 467        if (personaIds.Count == 0 || catalogoItemIds.Count == 0)
 168            return Array.Empty<FictoPersona>();
 69
 370        return await ConsultaCompleta()
 371            .Where(f =>
 372                personaIds.Contains(f.PersonaId) &&
 373                catalogoItemIds.Contains(f.CatalogoItemId))
 374            .ToListAsync();
 475    }
 76
 77    public async Task<IReadOnlyList<FictoPersona>> ObtenerActivosAsync() =>
 078        await ConsultaCompleta()
 079            .AsNoTracking()
 080            .Where(f => f.Activo)
 081            .OrderBy(f => f.PersonaId)
 082            .ThenBy(f => f.CatalogoItem.Codigo)
 083            .ToListAsync();
 84
 85    public async Task<FictoPersona> CrearAsync(FictoPersona ficto)
 86    {
 787        _contexto.FictosPersona.Add(ficto);
 788        await _contexto.SaveChangesAsync();
 789        return ficto;
 790    }
 91
 92    public async Task<FictoPersona> ActualizarAsync(FictoPersona ficto)
 93    {
 394        _contexto.FictosPersona.Update(ficto);
 395        await _contexto.SaveChangesAsync();
 396        return ficto;
 397    }
 98
 99    private IQueryable<FictoPersona> ConsultaCompleta() =>
 26100        _contexto.FictosPersona
 26101            .Include(f => f.Persona)
 26102            .Include(f => f.Acreedor)
 26103            .Include(f => f.CatalogoItem);
 104}