< Summary

Information
Class: FAU.DataAccess.ApplicationDbContext
Assembly: FAU.DataAccess
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/ApplicationDbContext.cs
Line coverage
100%
Covered lines: 101
Uncovered lines: 0
Coverable lines: 101
Total lines: 145
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
get_Personas()100%11100%
get_Usuarios()100%11100%
get_Roles()100%11100%
get_Permisos()100%11100%
get_Acciones()100%11100%
get_Contextos()100%11100%
get_BitacorasAuditoria()100%11100%
get_Bancos()100%11100%
get_CuentasBancarias()100%11100%
get_RelacionesLaborales()100%11100%
get_MovimientosLaborales()100%11100%
get_Regimenes()100%11100%
get_Escalafones()100%11100%
get_Grados()100%11100%
get_Situaciones()100%11100%
get_Programas()100%11100%
get_Unidades()100%11100%
get_Companias()100%11100%
get_TiposMovimiento()100%11100%
OnModelCreating(...)100%11100%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.DataAccess/ApplicationDbContext.cs

#LineLine coverage
 1using FAU.Entidades;
 2using Microsoft.EntityFrameworkCore;
 3
 4namespace FAU.DataAccess;
 5
 6public class ApplicationDbContext : DbContext
 7{
 388    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
 9    {
 3810    }
 11
 12    // DbSets para las entidades principales
 3813    public DbSet<Persona> Personas { get; set; }
 6014    public DbSet<Usuario> Usuarios { get; set; }
 5615    public DbSet<Rol> Roles { get; set; }
 3816    public DbSet<Permiso> Permisos { get; set; }
 3917    public DbSet<Accion> Acciones { get; set; }
 3918    public DbSet<Contexto> Contextos { get; set; }
 4019    public DbSet<BitacoraAuditoria> BitacorasAuditoria { get; set; }
 8420    public DbSet<Banco> Bancos { get; set; }
 3821    public DbSet<CuentaBancaria> CuentasBancarias { get; set; }
 22
 23    // Personal y catálogos
 4624    public DbSet<RelacionLaboral> RelacionesLaborales { get; set; }
 4025    public DbSet<MovimientoLaboral> MovimientosLaborales { get; set; }
 3826    public DbSet<Regimen> Regimenes { get; set; }
 3827    public DbSet<Escalafon> Escalafones { get; set; }
 3828    public DbSet<Grado> Grados { get; set; }
 3829    public DbSet<Situacion> Situaciones { get; set; }
 3830    public DbSet<Programa> Programas { get; set; }
 3831    public DbSet<Unidad> Unidades { get; set; }
 3832    public DbSet<Compania> Companias { get; set; }
 4333    public DbSet<TipoMovimiento> TiposMovimiento { get; set; }
 34
 35    protected override void OnModelCreating(ModelBuilder modelBuilder)
 36    {
 137        base.OnModelCreating(modelBuilder);
 38
 39        // Configuración de la relación muchos a muchos entre Usuario y Rol
 140        modelBuilder.Entity<Usuario>()
 141            .HasMany(u => u.Roles)
 142            .WithMany(r => r.Usuarios)
 143            .UsingEntity<Dictionary<string, object>>(
 144                "usuarios_roles",
 145                j => j.HasOne<Rol>().WithMany().HasForeignKey("rol_id"),
 146                j => j.HasOne<Usuario>().WithMany().HasForeignKey("usuario_id"),
 147                j =>
 148                {
 149                    j.HasKey("usuario_id", "rol_id");
 150                    j.ToTable("usuarios_roles");
 151                }
 152            );
 53
 54        // Configuración de la relación muchos a muchos entre Rol y Permiso
 155        modelBuilder.Entity<Rol>()
 156            .HasMany(r => r.Permisos)
 157            .WithMany(p => p.Roles)
 158            .UsingEntity<Dictionary<string, object>>(
 159                "roles_permisos",
 160                j => j.HasOne<Permiso>().WithMany().HasForeignKey("permiso_id"),
 161                j => j.HasOne<Rol>().WithMany().HasForeignKey("rol_id"),
 162                j =>
 163                {
 164                    j.HasKey("permiso_id", "rol_id");
 165                    j.ToTable("roles_permisos");
 166                }
 167            );
 68
 69        // Índices únicos
 170        modelBuilder.Entity<Persona>()
 171            .HasIndex(p => p.Cedula)
 172            .IsUnique();
 73
 174        modelBuilder.Entity<Usuario>()
 175            .HasIndex(u => u.Username)
 176            .IsUnique();
 77
 178        modelBuilder.Entity<Rol>()
 179            .HasIndex(r => r.Nombre)
 180            .IsUnique();
 81
 182        modelBuilder.Entity<Permiso>()
 183            .HasIndex(p => p.Nombre)
 184            .IsUnique();
 85
 186        modelBuilder.Entity<Accion>()
 187            .HasIndex(a => a.Nombre)
 188            .IsUnique();
 89
 190        modelBuilder.Entity<Contexto>()
 191            .HasIndex(c => c.Nombre)
 192            .IsUnique();
 93
 194        modelBuilder.Entity<Banco>()
 195            .HasIndex(b => b.Codigo)
 196            .IsUnique();
 97
 98        // Índices para catálogos
 199        modelBuilder.Entity<Regimen>()
 1100            .HasIndex(r => r.NumeroLey)
 1101            .IsUnique();
 102
 1103        modelBuilder.Entity<Escalafon>()
 1104            .HasIndex(e => e.Codigo)
 1105            .IsUnique();
 106
 1107        modelBuilder.Entity<Situacion>()
 1108            .HasIndex(s => s.Codigo)
 1109            .IsUnique();
 110
 1111        modelBuilder.Entity<Programa>()
 1112            .HasIndex(p => p.Codigo)
 1113            .IsUnique();
 114
 1115        modelBuilder.Entity<Unidad>()
 1116            .HasIndex(u => u.Codigo)
 1117            .IsUnique();
 118
 1119        modelBuilder.Entity<Compania>()
 1120            .HasIndex(c => c.Codigo)
 1121            .IsUnique();
 122
 123        // Índices para relaciones laborales
 1124        modelBuilder.Entity<RelacionLaboral>()
 1125            .HasIndex(rl => new { rl.PersonaId, rl.Estado });
 126
 1127        modelBuilder.Entity<RelacionLaboral>()
 1128            .HasIndex(rl => rl.GradoId);
 129
 130        // Configurar checks
 1131        modelBuilder.Entity<Usuario>()
 2132            .ToTable(t => t.HasCheckConstraint("CK_usuarios_estado",
 2133                "estado IN ('activo', 'bloqueado')"));
 134
 1135        modelBuilder.Entity<CuentaBancaria>()
 2136            .ToTable(t => t.HasCheckConstraint("CK_cuentas_bancarias_estado",
 2137                "estado IN ('activa', 'inactiva')"));
 138
 1139        modelBuilder.Entity<RelacionLaboral>()
 2140            .ToTable(t => t.HasCheckConstraint("CK_relaciones_laborales_estado",
 2141                "estado IN ('activo', 'inactivo')"));
 1142    }
 143}
 144
 145