using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Data; public class AppDBContext(DbContextOptions options) : DbContext(options) { public DbSet Regions { get; set; } public DbSet Routes { get; set; } public DbSet Vehicles { get; set; } public DbSet Stores { get; set; } public DbSet Warehouses { get; set; } public DbSet Categories { get; set; } public DbSet SubCategories { get; set; } public DbSet Brands { get; set; } public DbSet Uoms { get; set; } public DbSet UomConversions { get; set; } public DbSet Items { get; set; } public DbSet SaleRoutes { get; set; } public DbSet Orders { get; set; } public DbSet OrderItems { get; set; } public DbSet DeliveryRuns { get; set; } public DbSet Users { get; set; } public DbSet Roles { get; set; } public DbSet Permissions { get; set; } public DbSet RolePermissions { get; set; } public DbSet UserRegionScopes { get; set; } public DbSet UserRouteScopes { get; set; } public DbSet UserStoreScopes { get; set; } public DbSet StockBalances { get; set; } public DbSet StockMovements { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasKey(oi => new { oi.FK_OrderId, oi.FK_ItemId }); modelBuilder.Entity() .HasKey(rp => new { rp.FK_RoleId, rp.FK_PermissionId }); modelBuilder.Entity() .HasKey(s => new { s.FK_UserId, s.FK_RegionId }); modelBuilder.Entity() .HasKey(s => new { s.FK_UserId, s.FK_RouteId }); modelBuilder.Entity() .HasKey(s => new { s.FK_UserId, s.FK_StoreId }); modelBuilder.Entity() .HasOne(u => u.ReportsTo) .WithMany() .HasForeignKey(u => u.FK_ReportsToUserId) .OnDelete(DeleteBehavior.Restrict); modelBuilder.Entity() .HasIndex(sb => new { sb.FK_ItemId, sb.LocationId }) .IsUnique(); Seed.RoleAndPermissionSeed.Apply(modelBuilder); } }