using Microsoft.EntityFrameworkCore;
using SessionCompanion.Database.Tables;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SessionCompanion.Database
{
    public class ApplicationDbContext : DbContext
    {
        public virtual DbSet<Alignment> Alignments { get; set; }
        public virtual DbSet<Background> Backgrounds { get; set; }
        public virtual DbSet<Biography> Biographies { get; set; }
        public virtual DbSet<Character> Characters { get; set; }
        public virtual DbSet<Charisma> Charismas { get; set; }
        public virtual DbSet<Class> Classes { get; set; }
        public virtual DbSet<Constitution> Constitutions { get; set; }
        public virtual DbSet<Dexterity> Dexterities { get; set; }
        public virtual DbSet<Intelligence> Intelligences { get; set; }
        public virtual DbSet<Race> Races { get; set; }
        public virtual DbSet<Statistics> Statistics { get; set; }
        public virtual DbSet<Strength> Strengths { get; set; }
        public virtual DbSet<User> Users { get; set; }
        public virtual DbSet<Wisdom> Wisdoms { get; set; }

        public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }

        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);
            builder.Entity<User>().HasData(SeedData.SeedUsers());
            builder.Entity<Character>().HasData(SeedData.SeedCharacter());
            builder.Entity<Race>().HasData(SeedData.SeedRace());
            builder.Entity<Class>().HasData(SeedData.SeedClass());
            builder.Entity<Alignment>().HasData(SeedData.SeedAlignment());
            builder.Entity<Background>().HasData(SeedData.SeedBackground());
            builder.Entity<Biography>().HasData(SeedData.SeedBiography());
            builder.Entity<Statistics>().HasData(SeedData.SeedStatistics());
        }
    }
}