63 lines
2.4 KiB
C#
63 lines
2.4 KiB
C#
using Distribution.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace Distribution.Data;
|
|
|
|
public class AppDBContext(DbContextOptions<AppDBContext> options) : DbContext(options)
|
|
{
|
|
public DbSet<Region> Regions { get; set; }
|
|
public DbSet<Models.Route> Routes { get; set; }
|
|
public DbSet<Vehicle> Vehicles { get; set; }
|
|
public DbSet<Store> Stores { get; set; }
|
|
public DbSet<Warehouse> Warehouses { get; set; }
|
|
public DbSet<Category> Categories { get; set; }
|
|
public DbSet<SubCategory> SubCategories { get; set; }
|
|
public DbSet<Brand> Brands { get; set; }
|
|
public DbSet<Uom> Uoms { get; set; }
|
|
public DbSet<UomConversion> UomConversions { get; set; }
|
|
public DbSet<Item> Items { get; set; }
|
|
public DbSet<SaleRoute> SaleRoutes { get; set; }
|
|
public DbSet<Order> Orders { get; set; }
|
|
public DbSet<OrderItem> OrderItems { get; set; }
|
|
public DbSet<DeliveryRun> DeliveryRuns { get; set; }
|
|
public DbSet<User> Users { get; set; }
|
|
public DbSet<Role> Roles { get; set; }
|
|
public DbSet<Permission> Permissions { get; set; }
|
|
public DbSet<RolePermission> RolePermissions { get; set; }
|
|
public DbSet<UserRegionScope> UserRegionScopes { get; set; }
|
|
public DbSet<UserRouteScope> UserRouteScopes { get; set; }
|
|
public DbSet<UserStoreScope> UserStoreScopes { get; set; }
|
|
public DbSet<StockBalance> StockBalances { get; set; }
|
|
public DbSet<StockMovement> StockMovements { get; set; }
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.Entity<OrderItem>()
|
|
.HasKey(oi => new { oi.FK_OrderId, oi.FK_ItemId });
|
|
|
|
modelBuilder.Entity<RolePermission>()
|
|
.HasKey(rp => new { rp.FK_RoleId, rp.FK_PermissionId });
|
|
|
|
modelBuilder.Entity<UserRegionScope>()
|
|
.HasKey(s => new { s.FK_UserId, s.FK_RegionId });
|
|
|
|
modelBuilder.Entity<UserRouteScope>()
|
|
.HasKey(s => new { s.FK_UserId, s.FK_RouteId });
|
|
|
|
modelBuilder.Entity<UserStoreScope>()
|
|
.HasKey(s => new { s.FK_UserId, s.FK_StoreId });
|
|
|
|
modelBuilder.Entity<User>()
|
|
.HasOne(u => u.ReportsTo)
|
|
.WithMany()
|
|
.HasForeignKey(u => u.FK_ReportsToUserId)
|
|
.OnDelete(DeleteBehavior.Restrict);
|
|
|
|
modelBuilder.Entity<StockBalance>()
|
|
.HasIndex(sb => new { sb.FK_ItemId, sb.LocationId })
|
|
.IsUnique();
|
|
|
|
Seed.RoleAndPermissionSeed.Apply(modelBuilder);
|
|
}
|
|
}
|