using Microsoft.EntityFrameworkCore; using Newtonsoft.Json.Linq; using SessionCompanion.Database.Tables; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SessionCompanion.Database { public class ApplicationDbContext : DbContext { public virtual DbSet Alignments { get; set; } public virtual DbSet Backgrounds { get; set; } public virtual DbSet Biographies { get; set; } public virtual DbSet Characters { get; set; } public virtual DbSet Charismas { get; set; } public virtual DbSet Classes { get; set; } public virtual DbSet Constitutions { get; set; } public virtual DbSet Dexterities { get; set; } public virtual DbSet Intelligences { get; set; } public virtual DbSet Races { get; set; } public virtual DbSet Statistics { get; set; } public virtual DbSet Strengths { get; set; } public virtual DbSet Users { get; set; } public virtual DbSet Wisdoms { get; set; } public virtual DbSet Spells { get; set; } public virtual DbSet CharacterSpells { get; set; } public virtual DbSet CharacterSpellSlots { get; set; } public virtual DbSet Armors { get; set; } public virtual DbSet CharacterArmors { get; set; } public virtual DbSet Weapons { get; set; } public virtual DbSet CharacterWeapons { get; set; } public virtual DbSet OtherEquipment { get; set; } public virtual DbSet CharacterOtherEquipment { get; set; } public ApplicationDbContext(DbContextOptions options) : base(options) { } protected IEnumerable SeedWeapon() { const string file = "../SessionCompanion.Database/JsonData/weapons.json"; List weapons = new List(); using (StreamReader reader = new StreamReader(file)) { var json = reader.ReadToEnd(); dynamic jweapons = JArray.Parse(json); foreach (dynamic item in jweapons) weapons.Add(SeedFromJsons.SingleWeaponSeeder(item)); } return weapons; } protected IEnumerable SeedArmor() { const string file = "../SessionCompanion.Database/JsonData/armors.json"; List armors = new List(); using (StreamReader reader = new StreamReader(file)) { var json = reader.ReadToEnd(); dynamic jactions = JArray.Parse(json); int id = 1; foreach (dynamic item in jactions) { armors.Add(SeedFromJsons.SingleArmorSeeder(item, id)); id++; } } return armors; } protected IEnumerable SeedOtherEquipment() { const string file = "../SessionCompanion.Database/JsonData/otherEquipments.json"; List otherEquipment = new List(); using (StreamReader reader = new StreamReader(file)) { var json = reader.ReadToEnd(); dynamic jactions = JArray.Parse(json); int id = 1; foreach (dynamic item in jactions) { otherEquipment.Add(SeedFromJsons.SingleOtherEquipmentSeeder(item, id)); id++; } } return otherEquipment; } protected override void OnModelCreating(ModelBuilder builder) { base.OnModelCreating(builder); builder.Entity().HasData(SeedData.SeedUsers()); builder.Entity().HasData(SeedData.SeedCharacter()); builder.Entity().HasData(SeedData.SeedRace()); builder.Entity().HasData(SeedData.SeedClass()); builder.Entity().HasData(SeedData.SeedAlignment()); builder.Entity().HasData(SeedData.SeedBackground()); builder.Entity().HasData(SeedData.SeedBiography()); builder.Entity().HasData(SeedData.SeedStatistics()); builder.Entity().HasData(SeedWeapon()); builder.Entity().HasData(SeedArmor()); builder.Entity().HasData(SeedOtherEquipment()); builder.Entity().HasData(SeedData.SeedCharacterWeapon()); builder.Entity().HasData(SeedData.SeedCharacterArmor()); builder.Entity().HasData(SeedData.SeedCharacterOtherEquipment()); } } }