< Summary

Information
Class: FAU.DataAccess.Repositories.NovedadPeriodoRepository
Assembly: FAU.DataAccess
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/Repositories/NovedadPeriodoRepository.cs
Line coverage
100%
Covered lines: 60
Uncovered lines: 0
Coverable lines: 60
Total lines: 124
Line coverage: 100%
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%
GetByIdAsync()100%11100%
GetAllAsync()100%11100%
GetPaginatedAsync()100%88100%
GetByPeriodoAndPersonaAsync()100%11100%
CreateAsync()100%11100%
UpdateAsync()100%11100%
DeleteAsync()100%22100%
ExistsAsync()100%11100%
ExistsByIdAsync()100%11100%

File(s)

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

#LineLine coverage
 1using FAU.Entidades;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace FAU.DataAccess.Repositories;
 5
 6public class NovedadPeriodoRepository : INovedadPeriodoRepository
 7{
 8    private readonly ApplicationDbContext _context;
 9
 1610    public NovedadPeriodoRepository(ApplicationDbContext context)
 11    {
 1612        _context = context;
 1613    }
 14
 15    public async Task<NovedadPeriodo?> GetByIdAsync(long id)
 16    {
 217        return await _context.NovedadesPeriodo
 218            .Include(n => n.Persona)
 219            .FirstOrDefaultAsync(n => n.Id == id);
 220    }
 21
 22    public async Task<IEnumerable<NovedadPeriodo>> GetAllAsync()
 23    {
 124        return await _context.NovedadesPeriodo
 125            .Where(n => true)
 126            .OrderBy(n => n.FechaDesde)
 127            .ThenBy(n => n.Id)
 128            .ToListAsync();
 129    }
 30
 31    public async Task<(IEnumerable<NovedadPeriodo> Items, int TotalCount)> GetPaginatedAsync(
 32        int page,
 33        int pageSize,
 34        long? periodoId = null,
 35        long? personaId = null,
 36        string? tipo = null,
 37        string? estado = null)
 38    {
 439        var query = _context.NovedadesPeriodo.AsQueryable();
 40
 441        if (periodoId.HasValue)
 42        {
 143            query = query.Where(n => n.PeriodoId == periodoId.Value);
 44        }
 45
 446        if (personaId.HasValue)
 47        {
 148            query = query.Where(n => n.PersonaId == personaId.Value);
 49        }
 50
 451        if (!string.IsNullOrWhiteSpace(tipo))
 52        {
 153            query = query.Where(n => n.Tipo.ToLower() == tipo.Trim().ToLower());
 54        }
 55
 456        if (!string.IsNullOrWhiteSpace(estado))
 57        {
 158            query = query.Where(n => n.Estado.ToLower() == estado.Trim().ToLower());
 59        }
 60        else
 61        {
 362            query = query.Where(n => n.Estado != "eliminada");
 63        }
 64
 465        var totalCount = await query.CountAsync();
 66
 467        var items = await query
 468            .Include(n => n.Persona)
 469            .OrderBy(n => n.FechaDesde)
 470            .ThenBy(n => n.Id)
 471            .Skip((page - 1) * pageSize)
 472            .Take(pageSize)
 473            .ToListAsync();
 74
 475        return (items, totalCount);
 476    }
 77
 78    public async Task<IEnumerable<NovedadPeriodo>> GetByPeriodoAndPersonaAsync(long periodoId, long personaId)
 79    {
 180        return await _context.NovedadesPeriodo
 181            .Where(n => n.PeriodoId == periodoId && n.PersonaId == personaId)
 182            .OrderBy(n => n.FechaDesde)
 183            .ThenBy(n => n.Id)
 184            .ToListAsync();
 185    }
 86
 87    public async Task<NovedadPeriodo> CreateAsync(NovedadPeriodo novedadPeriodo)
 88    {
 189        _context.NovedadesPeriodo.Add(novedadPeriodo);
 190        await _context.SaveChangesAsync();
 191        return novedadPeriodo;
 192    }
 93
 94    public async Task<NovedadPeriodo> UpdateAsync(NovedadPeriodo novedadPeriodo)
 95    {
 196        _context.NovedadesPeriodo.Update(novedadPeriodo);
 197        await _context.SaveChangesAsync();
 198        return novedadPeriodo;
 199    }
 100
 101    public async Task DeleteAsync(long id)
 102    {
 2103        var novedad = await _context.NovedadesPeriodo.FindAsync(id);
 2104        if (novedad != null)
 105        {
 1106            _context.NovedadesPeriodo.Remove(novedad);
 1107            await _context.SaveChangesAsync();
 108        }
 2109    }
 110
 111    public async Task<bool> ExistsAsync(long periodoId, long personaId, string tipo, DateTime fechaDesde)
 112    {
 2113        return await _context.NovedadesPeriodo
 2114            .AnyAsync(n => n.PeriodoId == periodoId
 2115                           && n.PersonaId == personaId
 2116                           && n.Tipo.ToLower() == tipo.Trim().ToLower()
 2117                           && n.FechaDesde == fechaDesde);
 2118    }
 119
 120    public async Task<bool> ExistsByIdAsync(long id)
 121    {
 2122        return await _context.NovedadesPeriodo.AnyAsync(n => n.Id == id);
 2123    }
 124}