using Microsoft.EntityFrameworkCore;
using Otchinslator.Tables;

namespace Otchinslator;

public class DatabaseContext : DbContext
{
    public DbSet<Institut> Instituts { get; set; }
    public DbSet<Specialty> Specialties { get; set; }
    public string DbPath { get; }
    
    public  DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
    {
    }
    
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Institut>().HasKey(i => i.Id);
        modelBuilder.Entity<Specialty>().HasKey(s => s.Id);

        modelBuilder.Entity<Institut>().HasData(
            new Institut() { Id = 1, ShortName = "ИКТИБ", Name = "Институт компьютерных технологий и информационной безопасности" },
            new Institut() { Id = 2, ShortName = "ИРТСУ", Name = "Институт радиотехнических систем и управления" },
            new Institut() { Id = 3, ShortName = "ИУЭС", Name = "Институт управления в экономических, экологических и социальных системах" },
            new Institut() { Id = 4, ShortName = "ИНЭП", Name = "Институт нанотехнологий, электроники и приборостроения" }
        );
        
        modelBuilder.Entity<Specialty>().HasData(
            // ИКТИБ
            // Бакалавриат
            new Specialty() { Id = 1, Name = "Математическое обеспечение и администрирование информационных систем", Code = "02.03.03", InstitutId = 1 },
            new Specialty() { Id = 2, Name = "Информатика и вычислительная техника", Code = "09.03.01", InstitutId = 1 }, // + заочка
            new Specialty() { Id = 3, Name = "Информационные системы и технологии", Code = "09.03.02", InstitutId = 1 },
            new Specialty() { Id = 4, Name = "Программная инженерия", Code = "09.03.04", InstitutId = 1 },
            new Specialty() { Id = 5, Name = "Информационная безопасность", Code = "10.03.01", InstitutId = 1 },
            new Specialty() { Id = 6, Name = "Системный анализ и управление", Code = "27.03.03", InstitutId = 1 },
            // Специалитет
            new Specialty() { Id = 7, Name = "Применение и эксплуатация автоматизированных систем специального назначения", Code = "09.05.01", InstitutId = 1 },
            new Specialty() { Id = 8, Name = "Информационная безопасность телекоммуникационных систем", Code = "10.05.02", InstitutId = 1 },
            new Specialty() { Id = 9, Name = "Информационная безопасность автоматизированных систем", Code = "10.05.03", InstitutId = 1 },
            new Specialty() { Id = 10, Name = "Безопасность информационных технологий в правоохранительной сфере", Code = "10.05.05", InstitutId = 1 },
            // ИРТСУ
            new Specialty() { Id = 11, Name = "НЕ ЗАПОЛНЕНО", Code = "0.0.0", InstitutId = 2 },
            // ИУЭС
            new Specialty() { Id = 12, Name = "НЕ ЗАПОЛНЕНО", Code = "0.0.0", InstitutId = 3 },
            // ИНЭП
            new Specialty() { Id = 13, Name = "НЕ ЗАПОЛНЕНО", Code = "0.0.0", InstitutId = 4 }
        );
    }
}