< 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: 66
Uncovered lines: 0
Coverable lines: 66
Total lines: 96
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%
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{
 338    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
 9    {
 3310    }
 11
 12    // DbSets para las entidades principales
 3313    public DbSet<Persona> Personas { get; set; }
 5414    public DbSet<Usuario> Usuarios { get; set; }
 5115    public DbSet<Rol> Roles { get; set; }
 3316    public DbSet<Permiso> Permisos { get; set; }
 3317    public DbSet<Accion> Acciones { get; set; }
 3318    public DbSet<Contexto> Contextos { get; set; }
 3319    public DbSet<BitacoraAuditoria> BitacorasAuditoria { get; set; }
 7920    public DbSet<Banco> Bancos { get; set; }
 3321    public DbSet<CuentaBancaria> CuentasBancarias { get; set; }
 22
 23    protected override void OnModelCreating(ModelBuilder modelBuilder)
 24    {
 125        base.OnModelCreating(modelBuilder);
 26
 27        // Configuración de la relación muchos a muchos entre Usuario y Rol
 128        modelBuilder.Entity<Usuario>()
 129            .HasMany(u => u.Roles)
 130            .WithMany(r => r.Usuarios)
 131            .UsingEntity<Dictionary<string, object>>(
 132                "usuarios_roles",
 133                j => j.HasOne<Rol>().WithMany().HasForeignKey("rol_id"),
 134                j => j.HasOne<Usuario>().WithMany().HasForeignKey("usuario_id"),
 135                j =>
 136                {
 137                    j.HasKey("usuario_id", "rol_id");
 138                    j.ToTable("usuarios_roles");
 139                }
 140            );
 41
 42        // Configuración de la relación muchos a muchos entre Rol y Permiso
 143        modelBuilder.Entity<Rol>()
 144            .HasMany(r => r.Permisos)
 145            .WithMany(p => p.Roles)
 146            .UsingEntity<Dictionary<string, object>>(
 147                "roles_permisos",
 148                j => j.HasOne<Permiso>().WithMany().HasForeignKey("permiso_id"),
 149                j => j.HasOne<Rol>().WithMany().HasForeignKey("rol_id"),
 150                j =>
 151                {
 152                    j.HasKey("permiso_id", "rol_id");
 153                    j.ToTable("roles_permisos");
 154                }
 155            );
 56
 57        // Índices únicos
 158        modelBuilder.Entity<Persona>()
 159            .HasIndex(p => p.Cedula)
 160            .IsUnique();
 61
 162        modelBuilder.Entity<Usuario>()
 163            .HasIndex(u => u.Username)
 164            .IsUnique();
 65
 166        modelBuilder.Entity<Rol>()
 167            .HasIndex(r => r.Nombre)
 168            .IsUnique();
 69
 170        modelBuilder.Entity<Permiso>()
 171            .HasIndex(p => p.Nombre)
 172            .IsUnique();
 73
 174        modelBuilder.Entity<Accion>()
 175            .HasIndex(a => a.Nombre)
 176            .IsUnique();
 77
 178        modelBuilder.Entity<Contexto>()
 179            .HasIndex(c => c.Nombre)
 180            .IsUnique();
 81
 182        modelBuilder.Entity<Banco>()
 183            .HasIndex(b => b.Codigo)
 184            .IsUnique();
 85
 86        // Configurar checks
 187        modelBuilder.Entity<Usuario>()
 288            .ToTable(t => t.HasCheckConstraint("CK_usuarios_estado",
 289                "estado IN ('activo', 'bloqueado')"));
 90
 191        modelBuilder.Entity<CuentaBancaria>()
 292            .ToTable(t => t.HasCheckConstraint("CK_cuentas_bancarias_estado",
 293                "estado IN ('activa', 'inactiva')"));
 194    }
 95}
 96