< Summary

Information
Class: FAU.DataAccess.Repositories.PersonalRepository
Assembly: FAU.DataAccess
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/Repositories/PersonalRepository.cs
Line coverage
100%
Covered lines: 104
Uncovered lines: 0
Coverable lines: 104
Total lines: 160
Line coverage: 100%
Branch coverage
62%
Covered branches: 5
Total branches: 8
Branch coverage: 62.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetAllAsync()100%11100%
GetByIdAsync()100%11100%
GetActivoByPersonaIdAsync()100%11100%
GetByCedulaAsync()100%11100%
GetByGradoIdAsync()100%11100%
GetActivosAsync()100%11100%
ExisteByCedulaAsync()100%11100%
CreateAsync()50%22100%
UpdateAsync()50%22100%
DarBajaAsync()100%22100%
CrearMovimientoAsync()50%22100%

File(s)

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

#LineLine coverage
 1using FAU.Entidades;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace FAU.DataAccess.Repositories;
 5
 6/// <summary>
 7/// Repositorio de Personal (Relaciones Laborales)
 8/// </summary>
 9public class PersonalRepository : IPersonalRepository
 10{
 11    private readonly ApplicationDbContext _context;
 12
 1913    public PersonalRepository(ApplicationDbContext context)
 14    {
 1915        _context = context;
 1916    }
 17
 18    public async Task<IEnumerable<RelacionLaboral>> GetAllAsync()
 19    {
 220        return await _context.RelacionesLaborales
 221            .Include(rl => rl.Persona)
 222            .Include(rl => rl.Grado)
 223            .Include(rl => rl.Escalafon)
 224            .Include(rl => rl.Situacion)
 225            .Include(rl => rl.Programa)
 226            .Include(rl => rl.Unidad)
 227            .Include(rl => rl.SubUnidad)
 228            .Include(rl => rl.Regimen)
 229            .OrderByDescending(rl => rl.FechaInicio)
 230            .ToListAsync();
 231    }
 32
 33    public async Task<RelacionLaboral?> GetByIdAsync(long id)
 34    {
 435        return await _context.RelacionesLaborales
 436            .Include(rl => rl.Persona)
 437            .Include(rl => rl.Grado)
 438                .ThenInclude(g => g.Escalafon)
 439            .Include(rl => rl.Situacion)
 440            .Include(rl => rl.Programa)
 441            .Include(rl => rl.Unidad)
 442            .Include(rl => rl.SubUnidad)
 443            .Include(rl => rl.Regimen)
 444            .Include(rl => rl.MovimientosLaborales)
 445                .ThenInclude(ml => ml.TipoMovimiento)
 446            .FirstOrDefaultAsync(rl => rl.Id == id);
 447    }
 48
 49    public async Task<RelacionLaboral?> GetActivoByPersonaIdAsync(long personaId)
 50    {
 251        return await _context.RelacionesLaborales
 252            .Include(rl => rl.Persona)
 253            .Include(rl => rl.Grado)
 254            .Include(rl => rl.Escalafon)
 255            .Include(rl => rl.Situacion)
 256            .Include(rl => rl.Programa)
 257            .Include(rl => rl.Unidad)
 258            .Include(rl => rl.SubUnidad)
 259            .Include(rl => rl.Regimen)
 260            .FirstOrDefaultAsync(rl => rl.PersonaId == personaId && rl.Estado == EstadoRelacion.Activo);
 261    }
 62
 63    public async Task<RelacionLaboral?> GetByCedulaAsync(string cedula)
 64    {
 265        return await _context.RelacionesLaborales
 266            .Include(rl => rl.Persona)
 267            .Include(rl => rl.Grado)
 268            .Include(rl => rl.Escalafon)
 269            .Include(rl => rl.Situacion)
 270            .Include(rl => rl.Programa)
 271            .Include(rl => rl.Unidad)
 272            .Include(rl => rl.SubUnidad)
 273            .Include(rl => rl.Regimen)
 274            .FirstOrDefaultAsync(rl => rl.Persona.Cedula == cedula && rl.Estado == EstadoRelacion.Activo);
 275    }
 76
 77    public async Task<IEnumerable<RelacionLaboral>> GetByGradoIdAsync(long gradoId)
 78    {
 279        return await _context.RelacionesLaborales
 280            .Include(rl => rl.Persona)
 281            .Include(rl => rl.Grado)
 282            .Include(rl => rl.Escalafon)
 283            .Include(rl => rl.Situacion)
 284            .Where(rl => rl.GradoId == gradoId && rl.Estado == EstadoRelacion.Activo)
 285            .OrderBy(rl => rl.Persona.PrimerApellido)
 286            .ThenBy(rl => rl.Persona.PrimerNombre)
 287            .ToListAsync();
 288    }
 89
 90    public async Task<IEnumerable<RelacionLaboral>> GetActivosAsync()
 91    {
 292        return await _context.RelacionesLaborales
 293            .Include(rl => rl.Persona)
 294            .Include(rl => rl.Grado)
 295            .Include(rl => rl.Escalafon)
 296            .Include(rl => rl.Situacion)
 297            .Include(rl => rl.Programa)
 298            .Include(rl => rl.Unidad)
 299            .Include(rl => rl.SubUnidad)
 2100            .Where(rl => rl.Estado == EstadoRelacion.Activo)
 2101            .OrderBy(rl => rl.Persona.PrimerApellido)
 2102            .ThenBy(rl => rl.Persona.PrimerNombre)
 2103            .ToListAsync();
 2104    }
 105
 106    public async Task<bool> ExisteByCedulaAsync(string cedula)
 107    {
 2108        return await _context.RelacionesLaborales
 2109            .Include(rl => rl.Persona)
 2110            .AnyAsync(rl => rl.Persona.Cedula == cedula);
 2111    }
 112
 113    public async Task<RelacionLaboral> CreateAsync(RelacionLaboral relacionLaboral)
 114    {
 1115        relacionLaboral.FechaActualizacion = DateTime.Now;
 1116        relacionLaboral.Estado = EstadoRelacion.Activo;
 117
 1118        _context.RelacionesLaborales.Add(relacionLaboral);
 1119        await _context.SaveChangesAsync();
 120
 1121        return await GetByIdAsync(relacionLaboral.Id) ?? relacionLaboral;
 1122    }
 123
 124    public async Task<RelacionLaboral> UpdateAsync(RelacionLaboral relacionLaboral)
 125    {
 1126        relacionLaboral.FechaActualizacion = DateTime.Now;
 127
 1128        _context.RelacionesLaborales.Update(relacionLaboral);
 1129        await _context.SaveChangesAsync();
 130
 1131        return await GetByIdAsync(relacionLaboral.Id) ?? relacionLaboral;
 1132    }
 133
 134    public async Task<bool> DarBajaAsync(long id, DateTime fechaBaja)
 135    {
 2136        var relacionLaboral = await _context.RelacionesLaborales.FindAsync(id);
 2137        if (relacionLaboral == null)
 1138            return false;
 139
 140        // Baja lógica
 1141        relacionLaboral.Estado = EstadoRelacion.Inactivo;
 1142        relacionLaboral.FechaFin = fechaBaja;
 1143        relacionLaboral.FechaActualizacion = DateTime.Now;
 144
 1145        await _context.SaveChangesAsync();
 1146        return true;
 2147    }
 148
 149    public async Task<MovimientoLaboral> CrearMovimientoAsync(MovimientoLaboral movimiento)
 150    {
 1151        _context.MovimientosLaborales.Add(movimiento);
 1152        await _context.SaveChangesAsync();
 153
 1154        return await _context.MovimientosLaborales
 1155            .Include(ml => ml.TipoMovimiento)
 1156            .Include(ml => ml.RelacionLaboral)
 1157            .FirstOrDefaultAsync(ml => ml.Id == movimiento.Id) ?? movimiento;
 1158    }
 159}
 160