< 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: 105
Uncovered lines: 0
Coverable lines: 105
Total lines: 161
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
 4513    public PersonalRepository(ApplicationDbContext context)
 14    {
 4515        _context = context;
 4516    }
 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    {
 2565        return await _context.RelacionesLaborales
 2566            .Include(rl => rl.Persona)
 2567            .Include(rl => rl.Grado)
 2568            .Include(rl => rl.Escalafon)
 2569            .Include(rl => rl.Situacion)
 2570            .Include(rl => rl.Programa)
 2571            .Include(rl => rl.Unidad)
 2572            .Include(rl => rl.SubUnidad)
 2573            .Include(rl => rl.Regimen)
 2574            .FirstOrDefaultAsync(rl => rl.Persona.Cedula == cedula && rl.Estado == EstadoRelacion.Activo);
 2575    }
 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            .Include(rl => rl.Regimen)
 2101            .Where(rl => rl.Estado == EstadoRelacion.Activo)
 2102            .OrderBy(rl => rl.Persona.PrimerApellido)
 2103            .ThenBy(rl => rl.Persona.PrimerNombre)
 2104            .ToListAsync();
 2105    }
 106
 107    public async Task<bool> ExisteByCedulaAsync(string cedula)
 108    {
 2109        return await _context.RelacionesLaborales
 2110            .Include(rl => rl.Persona)
 2111            .AnyAsync(rl => rl.Persona.Cedula == cedula);
 2112    }
 113
 114    public async Task<RelacionLaboral> CreateAsync(RelacionLaboral relacionLaboral)
 115    {
 1116        relacionLaboral.FechaActualizacion = DateTime.Now;
 1117        relacionLaboral.Estado = EstadoRelacion.Activo;
 118
 1119        _context.RelacionesLaborales.Add(relacionLaboral);
 1120        await _context.SaveChangesAsync();
 121
 1122        return await GetByIdAsync(relacionLaboral.Id) ?? relacionLaboral;
 1123    }
 124
 125    public async Task<RelacionLaboral> UpdateAsync(RelacionLaboral relacionLaboral)
 126    {
 1127        relacionLaboral.FechaActualizacion = DateTime.Now;
 128
 1129        _context.RelacionesLaborales.Update(relacionLaboral);
 1130        await _context.SaveChangesAsync();
 131
 1132        return await GetByIdAsync(relacionLaboral.Id) ?? relacionLaboral;
 1133    }
 134
 135    public async Task<bool> DarBajaAsync(long id, DateTime fechaBaja)
 136    {
 2137        var relacionLaboral = await _context.RelacionesLaborales.FindAsync(id);
 2138        if (relacionLaboral == null)
 1139            return false;
 140
 141        // Baja lógica
 1142        relacionLaboral.Estado = EstadoRelacion.Inactivo;
 1143        relacionLaboral.FechaFin = fechaBaja;
 1144        relacionLaboral.FechaActualizacion = DateTime.Now;
 145
 1146        await _context.SaveChangesAsync();
 1147        return true;
 2148    }
 149
 150    public async Task<MovimientoLaboral> CrearMovimientoAsync(MovimientoLaboral movimiento)
 151    {
 1152        _context.MovimientosLaborales.Add(movimiento);
 1153        await _context.SaveChangesAsync();
 154
 1155        return await _context.MovimientosLaborales
 1156            .Include(ml => ml.TipoMovimiento)
 1157            .Include(ml => ml.RelacionLaboral)
 1158            .FirstOrDefaultAsync(ml => ml.Id == movimiento.Id) ?? movimiento;
 1159    }
 160}
 161