using Microsoft.EntityFrameworkCore; using Asistencia.Models; namespace Asistencia.Data; public class AppDbContext : DbContext { public DbSet Profesores => Set(); public DbSet Cursos => Set(); public DbSet CursosAbiertos => Set(); public DbSet DetallesContrato => Set(); public DbSet AsistenciasProfesor => Set(); public DbSet AsistenciasAlumno => Set(); public string DbPath { get; } public AppDbContext() { var folder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData); var appFolder = Path.Combine(folder, "Asistencia"); Directory.CreateDirectory(appFolder); DbPath = Path.Combine(appFolder, "asistencia.db"); } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlite($"Data Source={DbPath}"); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasOne(c => c.Curso) .WithMany() .HasForeignKey(c => c.IdCursos); modelBuilder.Entity() .HasOne(d => d.CursoAbierto) .WithMany() .HasForeignKey(d => d.IdCursoAbierto); modelBuilder.Entity() .HasOne(a => a.CursoAbierto) .WithMany() .HasForeignKey(a => a.IdCursoAbierto); modelBuilder.Entity() .HasKey(a => new { a.IdDetalleContrato, a.FechaAsistencia }); modelBuilder.Entity() .HasOne(a => a.DetalleContrato) .WithMany() .HasForeignKey(a => a.IdDetalleContrato); SeedData(modelBuilder); } private static void SeedData(ModelBuilder modelBuilder) { modelBuilder.Entity().HasData( new Profesor { RutPasaporte = "15668563-1", Nombre = "Juan", ApPaterno = "Perez", ApMaterno = "Gonzalez", Email = "juan.perez@norteamericano.cl", Fono = "+56912345678", Direccion = "Av. Providencia 1234, Santiago", Clave = "", CrearClave = true, Activo = true } ); modelBuilder.Entity().HasData( new Curso { IdCursos = 16451, NombreCurso = "English Basic A1" }, new Curso { IdCursos = 16493, NombreCurso = "English Intermediate B1" } ); modelBuilder.Entity().HasData( new CursoAbierto { IdCursoAbierto = 16451, IdCursos = 16451, Sala = "Sala 101", Sede = "Providencia", HoraInicio = "09:00", HoraFin = "10:30", FechaInicio = new DateTime(2026, 3, 1), FechaFin = new DateTime(2026, 7, 31), ProfesorRun = "15668563-1" }, new CursoAbierto { IdCursoAbierto = 16493, IdCursos = 16493, Sala = "Sala 202", Sede = "Las Condes", HoraInicio = "14:00", HoraFin = "15:30", FechaInicio = new DateTime(2026, 3, 1), FechaFin = new DateTime(2026, 7, 31), ProfesorRun = "15668563-1" } ); modelBuilder.Entity().HasData( new DetalleContrato { IdDetalleContrato = 1, IdCursoAbierto = 16451, IdAlumno = "11111111-1", AP_Paterno = "Garcia", AP_Materno = "Lopez", Nombres = "Maria" }, new DetalleContrato { IdDetalleContrato = 2, IdCursoAbierto = 16451, IdAlumno = "22222222-2", AP_Paterno = "Rodriguez", AP_Materno = "Soto", Nombres = "Carlos" }, new DetalleContrato { IdDetalleContrato = 3, IdCursoAbierto = 16493, IdAlumno = "33333333-3", AP_Paterno = "Martinez", AP_Materno = "Fernandez", Nombres = "Ana" } ); } }