diff --git a/CutList.Web/Data/ApplicationDbContext.cs b/CutList.Web/Data/ApplicationDbContext.cs index 01b850d..2a70362 100644 --- a/CutList.Web/Data/ApplicationDbContext.cs +++ b/CutList.Web/Data/ApplicationDbContext.cs @@ -13,7 +13,8 @@ public class ApplicationDbContext : DbContext public DbSet Materials => Set(); public DbSet MaterialStockLengths => Set(); public DbSet Suppliers => Set(); - public DbSet SupplierStocks => Set(); + public DbSet StockItems => Set(); + public DbSet SupplierOfferings => Set(); public DbSet CuttingTools => Set(); public DbSet Projects => Set(); public DbSet ProjectParts => Set(); @@ -56,25 +57,42 @@ public class ApplicationDbContext : DbContext entity.Property(e => e.CreatedAt).HasDefaultValueSql("GETUTCDATE()"); }); - // SupplierStock - modelBuilder.Entity(entity => + // StockItem + modelBuilder.Entity(entity => { entity.HasKey(e => e.Id); entity.Property(e => e.LengthInches).HasPrecision(10, 4); - entity.Property(e => e.Price).HasPrecision(10, 2); - entity.Property(e => e.Notes).HasMaxLength(255); - - entity.HasOne(e => e.Supplier) - .WithMany(s => s.Stocks) - .HasForeignKey(e => e.SupplierId) - .OnDelete(DeleteBehavior.Cascade); + entity.Property(e => e.Name).HasMaxLength(100); + entity.Property(e => e.CreatedAt).HasDefaultValueSql("GETUTCDATE()"); entity.HasOne(e => e.Material) - .WithMany(m => m.SupplierStocks) + .WithMany(m => m.StockItems) .HasForeignKey(e => e.MaterialId) .OnDelete(DeleteBehavior.Cascade); - entity.HasIndex(e => new { e.SupplierId, e.MaterialId, e.LengthInches }).IsUnique(); + entity.HasIndex(e => new { e.MaterialId, e.LengthInches }).IsUnique(); + }); + + // SupplierOffering + modelBuilder.Entity(entity => + { + entity.HasKey(e => e.Id); + entity.Property(e => e.PartNumber).HasMaxLength(100); + entity.Property(e => e.SupplierDescription).HasMaxLength(255); + entity.Property(e => e.Price).HasPrecision(10, 2); + entity.Property(e => e.Notes).HasMaxLength(255); + + entity.HasOne(e => e.StockItem) + .WithMany(s => s.SupplierOfferings) + .HasForeignKey(e => e.StockItemId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasOne(e => e.Supplier) + .WithMany(s => s.Offerings) + .HasForeignKey(e => e.SupplierId) + .OnDelete(DeleteBehavior.Cascade); + + entity.HasIndex(e => new { e.SupplierId, e.StockItemId }).IsUnique(); }); // CuttingTool diff --git a/CutList.Web/Data/Entities/Material.cs b/CutList.Web/Data/Entities/Material.cs index 270f1bf..93efd84 100644 --- a/CutList.Web/Data/Entities/Material.cs +++ b/CutList.Web/Data/Entities/Material.cs @@ -10,7 +10,7 @@ public class Material public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? UpdatedAt { get; set; } - public ICollection SupplierStocks { get; set; } = new List(); + public ICollection StockItems { get; set; } = new List(); public ICollection StockLengths { get; set; } = new List(); public ICollection ProjectParts { get; set; } = new List(); diff --git a/CutList.Web/Data/Entities/Supplier.cs b/CutList.Web/Data/Entities/Supplier.cs index 9452f24..2bcbdcd 100644 --- a/CutList.Web/Data/Entities/Supplier.cs +++ b/CutList.Web/Data/Entities/Supplier.cs @@ -9,5 +9,5 @@ public class Supplier public bool IsActive { get; set; } = true; public DateTime CreatedAt { get; set; } = DateTime.UtcNow; - public ICollection Stocks { get; set; } = new List(); + public ICollection Offerings { get; set; } = new List(); } diff --git a/CutList.Web/Data/Entities/SupplierStock.cs b/CutList.Web/Data/Entities/SupplierStock.cs deleted file mode 100644 index a06ca26..0000000 --- a/CutList.Web/Data/Entities/SupplierStock.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace CutList.Web.Data.Entities; - -public class SupplierStock -{ - public int Id { get; set; } - public int SupplierId { get; set; } - public int MaterialId { get; set; } - public decimal LengthInches { get; set; } - public decimal? Price { get; set; } - public string? Notes { get; set; } - public bool IsActive { get; set; } = true; - - public Supplier Supplier { get; set; } = null!; - public Material Material { get; set; } = null!; -}