Expand demo seed: 178 inventory items + 30 vendors

Inventory (11 → 178):
- 101 total powders: 6 core + 55 Prismatic + 20 Columbia + 13 Tiger Drylac + 9 Sherwin-Williams
- 77 supplies: 21 masking, 16 chemicals, 16 abrasives, 15 hanging hardware, 9 PPE
- ForceRemoveAll path now deletes all inventory for the company (not just
  the 11 enumerated SKUs), since transactions are pre-swept before this block

Vendors (5 → 30):
- Tiger Drylac, Sherwin-Williams Powders, Eastwood (powder suppliers)
- Clemco, Triangle Abrasives, Airgas, Linde (blasting/gases)
- Duke Energy, AT&T, Spectrum, Raleigh Electric, Carolina Industrial Water (utilities)
- Safety-Kleen, Raleigh Waste (environmental)
- Work N Gear, HD Supply, Carolina Office, First Insurance (services)
- Triangle Commercial Properties LLC (landlord — shop lease with address + terms)
- Fastenal, MSC, McMaster-Carr, Uline, Amazon Business, Lowe's Pro, NAPA (supply chain)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 10:06:41 -04:00
parent 1e5510477a
commit a21c05f655
2 changed files with 261 additions and 14 deletions
@@ -389,18 +389,37 @@ public partial class SeedDataService
// ── Inventory Items ───────────────────────────────────────────────────
if (options.InventoryItems)
{
var seededSkus = SeededInventorySkuSuffixes.Select(s => $"{company.CompanyCode}{s}").ToArray();
var inventoryItems = await _context.InventoryItems
.IgnoreQueryFilters()
.Where(i => i.CompanyId == companyId && seededSkus.Contains(i.SKU))
.ToListAsync();
List<InventoryItem> inventoryItems;
if (options.ForceRemoveAll)
{
// Full reset: wipe all inventory for this company.
// InventoryTransactions were already cleared in the pre-sweep above.
inventoryItems = await _context.InventoryItems
.IgnoreQueryFilters()
.Where(i => i.CompanyId == companyId)
.ToListAsync();
}
else
{
// Selective removal: only remove the 11 core seeded SKUs by fingerprint.
var seededSkus = SeededInventorySkuSuffixes.Select(s => $"{company.CompanyCode}{s}").ToArray();
inventoryItems = await _context.InventoryItems
.IgnoreQueryFilters()
.Where(i => i.CompanyId == companyId && seededSkus.Contains(i.SKU))
.ToListAsync();
}
if (inventoryItems.Any())
{
var inventoryIds = inventoryItems.Select(i => i.Id).ToList();
var transactions = await _context.InventoryTransactions.IgnoreQueryFilters()
.Where(t => inventoryIds.Contains(t.InventoryItemId)).ToListAsync();
if (transactions.Any()) _context.InventoryTransactions.RemoveRange(transactions);
if (!options.ForceRemoveAll)
{
// In selective mode transactions weren't pre-swept — remove them now.
var inventoryIds = inventoryItems.Select(i => i.Id).ToList();
var transactions = await _context.InventoryTransactions.IgnoreQueryFilters()
.Where(t => inventoryIds.Contains(t.InventoryItemId)).ToListAsync();
if (transactions.Any()) _context.InventoryTransactions.RemoveRange(transactions);
}
_context.InventoryItems.RemoveRange(inventoryItems);
totalRemoved += inventoryItems.Count;
@@ -900,6 +900,191 @@ public partial class SeedDataService : ISeedDataService
Supply("HKS-001", "Powder Coating Hooks", "Steel hanging hooks for racking parts", "Consumables", consumeCat?.Id, "count", 200, 50, 200, 0.35m),
Supply("ACT-001", "Acetone Degreaser", "Industrial acetone for pre-coating degreasing", "Cleaner", cleanerCat?.Id, "gallons", 20, 5, 25, 18.00m),
Supply("BLM-001", "Aluminum Oxide Blast Media","120-grit aluminum oxide blasting media", "Abrasive Media", abrasiveCat?.Id, "lbs", 250, 100, 250, 1.85m),
// ── Additional Prismatic Powders ──────────────────────────────────────
Pwd("PWD-AWH-001", "Arctic White", "Arctic White", "RAL 9003", "Gloss", "Prismatic Powders", "PP-AWH-001", 400, 100, 250, 4.25m),
Pwd("PWD-PUW-001", "Pure White", "Pure White", "RAL 9010", "Gloss", "Prismatic Powders", "PP-PUW-001", 350, 80, 200, 4.25m),
Pwd("PWD-CRM-001", "Cream", "Cream", "RAL 9001", "Gloss", "Prismatic Powders", "PP-CRM-001", 200, 50, 150, 4.50m),
Pwd("PWD-LIV-001", "Light Ivory", "Light Ivory", "RAL 1015", "Gloss", "Prismatic Powders", "PP-LIV-001", 150, 40, 100, 4.50m),
Pwd("PWD-STK-001", "Satin Black", "Satin Black", "RAL 9005", "Satin", "Prismatic Powders", "PP-STK-001", 250, 80, 200, 4.75m),
Pwd("PWD-FLK-001", "Flat Black", "Flat Black", "RAL 9005", "Flat", "Prismatic Powders", "PP-FLK-001", 200, 60, 150, 4.50m),
Pwd("PWD-TXK-001", "Texture Black", "Texture Black", "RAL 9005", "Texture", "Prismatic Powders", "PP-TXK-001", 175, 50, 150, 5.25m),
Pwd("PWD-WRK-001", "Wrinkle Black", "Wrinkle Black", "RAL 9005", "Texture", "Prismatic Powders", "PP-WRK-001", 180, 50, 150, 5.50m),
Pwd("PWD-HMK-001", "Hammertone Black", "Hammertone Black", "RAL 9005", "Texture", "Prismatic Powders", "PP-HMK-001", 120, 40, 120, 5.75m),
Pwd("PWD-GLR-001", "Gloss Red", "Gloss Red", "RAL 3000", "Gloss", "Prismatic Powders", "PP-GLR-001", 180, 60, 150, 4.75m),
Pwd("PWD-WNR-001", "Wine Red", "Wine Red", "RAL 3005", "Gloss", "Prismatic Powders", "PP-WNR-001", 120, 40, 100, 4.75m),
Pwd("PWD-STR-001", "Satin Red", "Satin Red", "RAL 3000", "Satin", "Prismatic Powders", "PP-STR-001", 150, 50, 120, 5.00m),
Pwd("PWD-TXR-001", "Wrinkle Red", "Wrinkle Red", "RAL 3000", "Texture", "Prismatic Powders", "PP-TXR-001", 80, 30, 80, 5.50m),
Pwd("PWD-GLB-001", "Gloss Blue", "Gloss Blue", "RAL 5005", "Gloss", "Prismatic Powders", "PP-GLB-001", 180, 60, 150, 4.75m),
Pwd("PWD-SKB-001", "Sky Blue", "Sky Blue", "RAL 5015", "Gloss", "Prismatic Powders", "PP-SKB-001", 150, 50, 120, 4.75m),
Pwd("PWD-MTB-001", "Matte Blue", "Matte Blue", "RAL 5005", "Matte", "Prismatic Powders", "PP-MTB-001", 120, 40, 100, 4.75m),
Pwd("PWD-NVB-001", "Navy Blue", "Navy Blue", "RAL 5003", "Gloss", "Prismatic Powders", "PP-NVB-001", 200, 60, 150, 4.75m),
Pwd("PWD-CNB-001", "Candy Blue", "Candy Blue", "RAL 5005", "Candy", "Prismatic Powders", "PP-CNB-001", 60, 25, 75, 7.50m),
Pwd("PWD-GXB-001", "Galaxy Blue Metallic", "Galaxy Blue", "RAL 5005", "Metallic", "Prismatic Powders", "PP-GXB-001", 75, 25, 75, 8.25m),
Pwd("PWD-CBM-001", "Cobalt Blue Metallic", "Cobalt Blue", "RAL 5013", "Metallic", "Prismatic Powders", "PP-CBM-001", 80, 30, 80, 8.00m),
Pwd("PWD-GLG-001", "Gloss Green", "Gloss Green", "RAL 6002", "Gloss", "Prismatic Powders", "PP-GLG-001", 150, 50, 120, 4.75m),
Pwd("PWD-MTG-001", "Matte Green", "Matte Green", "RAL 6002", "Matte", "Prismatic Powders", "PP-MTG-001", 100, 40, 100, 4.75m),
Pwd("PWD-HNG-001", "Hunter Green", "Hunter Green", "RAL 6005", "Matte", "Prismatic Powders", "PP-HNG-001", 120, 40, 100, 4.75m),
Pwd("PWD-LMG-001", "Lime Green", "Lime Green", "RAL 6018", "Gloss", "Prismatic Powders", "PP-LMG-001", 80, 30, 80, 5.00m),
Pwd("PWD-ODG-001", "OD Green", "OD Green", "RAL 6014", "Flat", "Prismatic Powders", "PP-ODG-001", 100, 35, 90, 4.75m),
Pwd("PWD-TLG-001", "Teal", "Teal", "RAL 5018", "Matte", "Prismatic Powders", "PP-TLG-001", 90, 30, 80, 5.00m),
Pwd("PWD-SYL-001", "Safety Yellow", "Safety Yellow", "RAL 1023", "Gloss", "Prismatic Powders", "PP-SYL-001", 150, 50, 120, 5.00m),
Pwd("PWD-JDY-001", "John Deere Yellow", "John Deere Yellow", "RAL 1021", "Gloss", "Prismatic Powders", "PP-JDY-001", 100, 35, 90, 5.00m),
Pwd("PWD-SOR-001", "Safety Orange", "Safety Orange", "RAL 2004", "Gloss", "Prismatic Powders", "PP-SOR-001", 120, 40, 100, 5.00m),
Pwd("PWD-CGR-001", "Charcoal", "Charcoal", "RAL 7016", "Matte", "Prismatic Powders", "PP-CGR-001", 300, 80, 200, 4.75m),
Pwd("PWD-ALV-001", "Aluminum Silver", "Aluminum Silver", "RAL 9006", "Gloss", "Prismatic Powders", "PP-ALV-001", 200, 60, 150, 4.75m),
Pwd("PWD-SLG-001", "Slate Gray", "Slate Gray", "RAL 7035", "Matte", "Prismatic Powders", "PP-SLG-001", 180, 60, 150, 4.75m),
Pwd("PWD-GRF-001", "Graphite", "Graphite", "RAL 7024", "Satin", "Prismatic Powders", "PP-GRF-001", 150, 50, 120, 5.00m),
Pwd("PWD-TFG-001", "Traffic Gray", "Traffic Gray", "RAL 7042", "Matte", "Prismatic Powders", "PP-TFG-001", 120, 40, 100, 4.75m),
Pwd("PWD-GNM-001", "Gunmetal", "Gunmetal", "RAL 7016", "Metallic", "Prismatic Powders", "PP-GNM-001", 100, 35, 90, 7.00m),
Pwd("PWD-HMS-001", "Hammertone Silver", "Hammertone Silver", "RAL 9006", "Texture", "Prismatic Powders", "PP-HMS-001", 120, 40, 100, 5.75m),
Pwd("PWD-HMB-001", "Hammertone Bronze", "Hammertone Bronze", "RAL 8019", "Texture", "Prismatic Powders", "PP-HMB-001", 95, 35, 90, 5.75m),
Pwd("PWD-FLO-001", "Fluorescent Orange", "Fluorescent Orange", "RAL 2009", "Fluorescent", "Prismatic Powders", "PP-FLO-001", 50, 20, 60, 9.50m),
Pwd("PWD-FLY-001", "Fluorescent Yellow", "Fluorescent Yellow", "RAL 1026", "Fluorescent", "Prismatic Powders", "PP-FLY-001", 50, 20, 60, 9.50m),
Pwd("PWD-GLD-001", "Gold Metallic", "Gold", "RAL 1036", "Metallic", "Prismatic Powders", "PP-GLD-001", 80, 30, 80, 8.75m),
Pwd("PWD-CPM-001", "Copper Metallic", "Copper", "RAL 2012", "Metallic", "Prismatic Powders", "PP-CPM-001", 75, 25, 75, 8.25m),
Pwd("PWD-RSG-001", "Rose Gold Metallic", "Rose Gold", "RAL 3012", "Metallic", "Prismatic Powders", "PP-RSG-001", 60, 20, 60, 8.75m),
Pwd("PWD-PNY-001", "Penny Copper Metallic", "Penny Copper", "RAL 8023", "Metallic", "Prismatic Powders", "PP-PNY-001", 55, 20, 60, 8.50m),
Pwd("PWD-BRZ-001", "Bronze Metallic", "Bronze", "RAL 8019", "Metallic", "Prismatic Powders", "PP-BRZ-001", 90, 30, 80, 7.50m),
Pwd("PWD-ANB-001", "Anodized Bronze", "Anodized Bronze", "RAL 8019", "Metallic", "Prismatic Powders", "PP-ANB-001", 70, 25, 70, 8.00m),
Pwd("PWD-ANK-001", "Anodized Black", "Anodized Black", "RAL 9005", "Metallic", "Prismatic Powders", "PP-ANK-001", 85, 30, 80, 7.75m),
Pwd("PWD-CHP-001", "Champagne", "Champagne", "RAL 1019", "Satin", "Prismatic Powders", "PP-CHP-001", 100, 35, 90, 5.25m),
Pwd("PWD-DES-001", "Desert Tan", "Desert Tan", "RAL 1001", "Matte", "Prismatic Powders", "PP-DES-001", 120, 40, 100, 4.75m),
Pwd("PWD-ESP-001", "Espresso Brown", "Espresso Brown", "RAL 8016", "Matte", "Prismatic Powders", "PP-ESP-001", 80, 30, 80, 5.00m),
Pwd("PWD-MOC-001", "Mocha Brown", "Mocha Brown", "RAL 8025", "Satin", "Prismatic Powders", "PP-MOC-001", 70, 25, 70, 5.25m),
Pwd("PWD-BGN-001", "Burgundy", "Burgundy", "RAL 3032", "Matte", "Prismatic Powders", "PP-BGN-001", 90, 30, 80, 5.00m),
Pwd("PWD-PLM-001", "Plum", "Plum", "RAL 4007", "Matte", "Prismatic Powders", "PP-PLM-001", 65, 25, 70, 5.25m),
Pwd("PWD-CNO-001", "Candy Orange", "Candy Orange", "RAL 2004", "Candy", "Prismatic Powders", "PP-CNO-001", 50, 20, 60, 7.50m),
Pwd("PWD-CNG-001", "Candy Green", "Candy Green", "RAL 6002", "Candy", "Prismatic Powders", "PP-CNG-001", 55, 20, 60, 7.50m),
Pwd("PWD-CNP-001", "Candy Purple", "Candy Purple", "RAL 4005", "Candy", "Prismatic Powders", "PP-CNP-001", 55, 20, 60, 7.50m),
// ── Columbia Coatings ─────────────────────────────────────────────────
Pwd("CC-LIV-001", "Light Ivory", "Light Ivory", "RAL 1015", "Gloss", "Columbia Coatings", "CC-1015-GLO", 120, 40, 100, 4.50m),
Pwd("CC-TYL-001", "Traffic Yellow", "Traffic Yellow", "RAL 1023", "Gloss", "Columbia Coatings", "CC-1023-GLO", 100, 35, 90, 4.75m),
Pwd("CC-POR-001", "Pure Orange", "Pure Orange", "RAL 2004", "Gloss", "Columbia Coatings", "CC-2004-GLO", 80, 30, 80, 4.75m),
Pwd("CC-RBR-001", "Ruby Red", "Ruby Red", "RAL 3003", "Gloss", "Columbia Coatings", "CC-3003-GLO", 100, 35, 90, 5.00m),
Pwd("CC-WNR-001", "Wine Red Matte", "Wine Red", "RAL 3005", "Matte", "Columbia Coatings", "CC-3005-MAT", 80, 30, 80, 5.00m),
Pwd("CC-RVL-001", "Red Violet", "Red Violet", "RAL 4002", "Satin", "Columbia Coatings", "CC-4002-SAT", 60, 25, 70, 5.25m),
Pwd("CC-SAP-001", "Sapphire Blue", "Sapphire Blue", "RAL 5003", "Gloss", "Columbia Coatings", "CC-5003-GLO", 100, 35, 90, 5.00m),
Pwd("CC-SKB-001", "Sky Blue", "Sky Blue", "RAL 5015", "Gloss", "Columbia Coatings", "CC-5015-GLO", 90, 30, 80, 4.75m),
Pwd("CC-LFG-001", "Leaf Green", "Leaf Green", "RAL 6002", "Gloss", "Columbia Coatings", "CC-6002-GLO", 100, 35, 90, 4.75m),
Pwd("CC-MSG-001", "Moss Green", "Moss Green", "RAL 6005", "Matte", "Columbia Coatings", "CC-6005-MAT", 80, 30, 80, 5.00m),
Pwd("CC-SVG-001", "Silver Gray", "Silver Gray", "RAL 7001", "Satin", "Columbia Coatings", "CC-7001-SAT", 120, 40, 100, 4.75m),
Pwd("CC-ANT-001", "Anthracite", "Anthracite", "RAL 7016", "Matte", "Columbia Coatings", "CC-7016-MAT", 150, 50, 120, 4.75m),
Pwd("CC-LGY-001", "Light Gray", "Light Gray", "RAL 7035", "Gloss", "Columbia Coatings", "CC-7035-GLO", 180, 60, 150, 4.50m),
Pwd("CC-TGY-001", "Traffic Gray", "Traffic Gray", "RAL 7042", "Satin", "Columbia Coatings", "CC-7042-SAT", 120, 40, 100, 4.75m),
Pwd("CC-OCH-001", "Ochre Brown", "Ochre Brown", "RAL 8001", "Gloss", "Columbia Coatings", "CC-8001-GLO", 80, 30, 80, 4.75m),
Pwd("CC-GBR-001", "Grey Brown", "Grey Brown", "RAL 8019", "Matte", "Columbia Coatings", "CC-8019-MAT", 70, 25, 70, 5.00m),
Pwd("CC-CRM-001", "Cream", "Cream", "RAL 9001", "Gloss", "Columbia Coatings", "CC-9001-GLO", 150, 50, 120, 4.50m),
Pwd("CC-PWH-001", "Pure White", "Pure White", "RAL 9010", "Gloss", "Columbia Coatings", "CC-9010-GLO", 200, 60, 150, 4.50m),
Pwd("CC-TWH-001", "Traffic White", "Traffic White", "RAL 9016", "Gloss", "Columbia Coatings", "CC-9016-GLO", 180, 60, 150, 4.50m),
Pwd("CC-CLG-001", "Clear Gloss", "Clear", "N/A", "Gloss", "Columbia Coatings", "CC-CLR-GLO", 100, 35, 90, 6.75m),
// ── Tiger Drylac ──────────────────────────────────────────────────────
Pwd("TD-HTK-001", "High-Temp Black 1000F", "High-Temp Black", "N/A", "High-Temp", "Tiger Drylac", "TD-49-90000", 60, 25, 60, 14.50m),
Pwd("TD-HTA-001", "High-Temp Aluminum 1000F", "High-Temp Aluminum", "RAL 9006", "High-Temp", "Tiger Drylac", "TD-49-90001", 50, 20, 50, 14.50m),
Pwd("TD-EPG-001", "Epoxy Primer Gray", "Epoxy Primer Gray", "RAL 7001", "Primer", "Tiger Drylac", "TD-68-00000", 100, 35, 90, 8.75m),
Pwd("TD-EPR-001", "Epoxy Primer Red Oxide", "Epoxy Primer Red", "RAL 3009", "Primer", "Tiger Drylac", "TD-68-30000", 80, 30, 80, 8.75m),
Pwd("TD-CLG-001", "Clear Gloss Topcoat", "Clear Gloss", "N/A", "Gloss", "Tiger Drylac", "TD-00-00000", 75, 25, 70, 9.50m),
Pwd("TD-CLM-001", "Clear Matte Topcoat", "Clear Matte", "N/A", "Matte", "Tiger Drylac", "TD-00-00001", 60, 20, 60, 9.50m),
Pwd("TD-AFG-001", "Anti-Graffiti Clear", "Anti-Graffiti", "N/A", "Clear", "Tiger Drylac", "TD-AG-00000", 40, 15, 50, 15.75m),
Pwd("TD-DKB-001", "Dark Bronze", "Dark Bronze", "RAL 8019", "Satin", "Tiger Drylac", "TD-15-50000", 80, 30, 80, 7.25m),
Pwd("TD-NAL-001", "Natural Aluminum", "Natural Aluminum", "RAL 9006", "Satin", "Tiger Drylac", "TD-15-60000", 70, 25, 70, 7.00m),
Pwd("TD-MTG-001", "Machine Tool Green", "Machine Tool Green", "RAL 6011", "Gloss", "Tiger Drylac", "TD-57-60000", 50, 20, 60, 5.50m),
Pwd("TD-MCG-001", "Machinery Gray", "Machinery Gray", "RAL 7040", "Gloss", "Tiger Drylac", "TD-57-00000", 60, 25, 70, 5.50m),
Pwd("TD-UBZ-001", "Urban Bronze", "Urban Bronze", "RAL 8024", "Satin", "Tiger Drylac", "TD-15-80000", 75, 25, 70, 7.50m),
Pwd("TD-NYL-001", "Nylon Black Functional", "Nylon Black", "RAL 9005", "Functional", "Tiger Drylac", "TD-NY-00000", 40, 15, 50, 18.50m),
// ── Sherwin-Williams Powder Coatings ──────────────────────────────────
Pwd("SW-STK-001", "Satin Black", "Satin Black", "RAL 9005", "Satin", "Sherwin-Williams Powders", "SW-STK-001", 100, 35, 90, 5.25m),
Pwd("SW-STG-001", "Satin Gray", "Satin Gray", "RAL 7035", "Satin", "Sherwin-Williams Powders", "SW-STG-001", 80, 30, 80, 5.25m),
Pwd("SW-STB-001", "Satin Bronze", "Satin Bronze", "RAL 8019", "Satin", "Sherwin-Williams Powders", "SW-STB-001", 70, 25, 70, 5.75m),
Pwd("SW-WST-001", "White Satin", "White Satin", "RAL 9003", "Satin", "Sherwin-Williams Powders", "SW-WST-001", 100, 35, 90, 5.00m),
Pwd("SW-UBZ-001", "Urban Bronze", "Urban Bronze", "RAL 8024", "Satin", "Sherwin-Williams Powders", "SW-UBZ-001", 65, 25, 70, 6.00m),
Pwd("SW-MBR-001", "Mission Brown", "Mission Brown", "RAL 8025", "Matte", "Sherwin-Williams Powders", "SW-MBR-001", 60, 25, 70, 5.50m),
Pwd("SW-PGR-001", "Patina Green", "Patina Green", "RAL 6011", "Matte", "Sherwin-Williams Powders", "SW-PGR-001", 50, 20, 60, 5.75m),
Pwd("SW-AGC-001", "Aged Copper", "Aged Copper", "RAL 8023", "Metallic", "Sherwin-Williams Powders", "SW-AGC-001", 55, 20, 60, 8.25m),
Pwd("SW-DGY-001", "Dark Gray Satin", "Dark Gray", "RAL 7016", "Satin", "Sherwin-Williams Powders", "SW-DGY-001", 80, 30, 80, 5.25m),
// ── Masking Supplies ──────────────────────────────────────────────────
Supply("MSK-HT12-001", "Masking Tape 1/2 inch", "High-temp masking tape 1/2-inch wide, 60-yd roll", "Masking Supplies", maskingCat?.Id, "rolls", 60, 20, 60, 4.25m),
Supply("MSK-HT1-001", "Masking Tape 1 inch", "High-temp masking tape 1-inch wide, 60-yd roll", "Masking Supplies", maskingCat?.Id, "rolls", 80, 25, 75, 6.50m),
Supply("MSK-HT3-001", "Masking Tape 3 inch", "High-temp masking tape 3-inch wide, 60-yd roll", "Masking Supplies", maskingCat?.Id, "rolls", 40, 15, 50, 9.50m),
Supply("MSK-HT4-001", "Masking Tape 4 inch", "High-temp masking tape 4-inch wide, 60-yd roll", "Masking Supplies", maskingCat?.Id, "rolls", 30, 10, 40, 11.75m),
Supply("MSK-PAP12-001", "Masking Paper 12 inch", "High-temp masking paper roll, 12-inch x 60 yards", "Masking Supplies", maskingCat?.Id, "rolls", 25, 8, 25, 14.50m),
Supply("MSK-PAP18-001", "Masking Paper 18 inch", "High-temp masking paper roll, 18-inch x 60 yards", "Masking Supplies", maskingCat?.Id, "rolls", 20, 8, 25, 19.75m),
Supply("MSK-PAP24-001", "Masking Paper 24 inch", "High-temp masking paper roll, 24-inch x 60 yards", "Masking Supplies", maskingCat?.Id, "rolls", 15, 5, 20, 24.50m),
Supply("MSK-PLG14-001", "Silicone Plugs 1/4 in", "High-temp silicone plugs 1/4-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 30, 10, 30, 11.25m),
Supply("MSK-PLG38-001", "Silicone Plugs 3/8 in", "High-temp silicone plugs 3/8-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 25, 10, 25, 12.50m),
Supply("MSK-PLG12-001", "Silicone Plugs 1/2 in", "High-temp silicone plugs 1/2-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 20, 8, 25, 13.75m),
Supply("MSK-PLG58-001", "Silicone Plugs 5/8 in", "High-temp silicone plugs 5/8-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 18, 6, 20, 15.00m),
Supply("MSK-PLG34-001", "Silicone Plugs 3/4 in", "High-temp silicone plugs 3/4-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 15, 5, 20, 16.50m),
Supply("MSK-PLG1-001", "Silicone Plugs 1 inch", "High-temp silicone plugs 1-inch (bag of 100)", "Masking Supplies", maskingCat?.Id, "bags", 12, 5, 15, 18.75m),
Supply("MSK-CAP1-001", "Masking Caps 1 inch", "High-temp square masking caps 1-inch (bag of 50)", "Masking Supplies", maskingCat?.Id, "bags", 25, 8, 25, 9.50m),
Supply("MSK-CAP2-001", "Masking Caps 2 inch", "High-temp square masking caps 2-inch (bag of 50)", "Masking Supplies", maskingCat?.Id, "bags", 20, 6, 20, 12.25m),
Supply("MSK-DSC2-001", "Masking Discs 2 inch", "Round masking discs 2-inch (pack of 100)", "Masking Supplies", maskingCat?.Id, "packs", 20, 6, 20, 8.75m),
Supply("MSK-DSC3-001", "Masking Discs 3 inch", "Round masking discs 3-inch (pack of 100)", "Masking Supplies", maskingCat?.Id, "packs", 15, 5, 15, 9.25m),
Supply("MSK-VNL-001", "High-Temp Vinyl Tape", "High-temp vinyl tape 1-inch, 36-yd roll", "Masking Supplies", maskingCat?.Id, "rolls", 40, 12, 40, 7.75m),
Supply("MSK-FOM-001", "Foam Plugs Assorted", "High-temp foam masking plugs assorted sizes (bag of 50)","Masking Supplies", maskingCat?.Id, "bags", 20, 6, 20, 10.50m),
// ── Chemical Pretreatments & Cleaners ────────────────────────────────
Supply("CHM-IPH-001", "Iron Phosphate Pretreatment", "Iron phosphate pretreatment concentrate, 5-gallon", "Cleaner", cleanerCat?.Id, "gallons", 10, 3, 10, 42.50m),
Supply("CHM-ZPH-001", "Zinc Phosphate Pretreatment", "Zinc phosphate pretreatment concentrate, 5-gallon", "Cleaner", cleanerCat?.Id, "gallons", 8, 2, 8, 58.75m),
Supply("CHM-CFP-001", "Chrome-Free Pretreatment", "Chrome-free conversion coating pretreatment, 5-gal", "Cleaner", cleanerCat?.Id, "gallons", 5, 2, 6, 67.50m),
Supply("CHM-ALD-001", "Alkaline Degreaser", "Heavy-duty alkaline degreaser concentrate, 5-gallon", "Cleaner", cleanerCat?.Id, "gallons", 15, 5, 15, 38.50m),
Supply("CHM-CTD-001", "Citrus Degreaser", "Citrus-based degreaser concentrate, 1-gallon", "Cleaner", cleanerCat?.Id, "gallons", 12, 4, 12, 24.75m),
Supply("CHM-RIN-001", "Rust Inhibitor", "Water-based rust inhibitor for pretreated metal, 1-gal","Cleaner",cleanerCat?.Id,"gallons", 8, 3, 8, 31.25m),
Supply("CHM-MET-001", "Metal Etch", "Acid etch for aluminum and non-ferrous metals, 1-gal", "Cleaner", cleanerCat?.Id, "gallons", 10, 3, 10, 27.50m),
Supply("CHM-CCT-001", "Conversion Coating", "Self-etching zinc conversion coating, 5-gallon", "Cleaner", cleanerCat?.Id, "gallons", 6, 2, 6, 78.00m),
Supply("CHM-OGS-001", "Outgassing Agent", "Prevents outgassing pinholes on porous castings, 1-gal","Cleaner",cleanerCat?.Id,"gallons", 4, 2, 5, 44.50m),
Supply("CHM-FRP-001", "Flash Rust Preventer", "Prevents flash rust between pretreat and coat, 1-gal", "Cleaner", cleanerCat?.Id, "gallons", 6, 2, 6, 29.75m),
Supply("CHM-EQP-001", "Equipment Cleaner", "Gun and equipment cleaner/solvent, 1-gallon", "Cleaner", cleanerCat?.Id, "gallons", 8, 3, 8, 22.50m),
Supply("CHM-PHN-001", "pH Neutralizer", "Neutralizes pretreatment rinse water, 1-gallon", "Cleaner", cleanerCat?.Id, "gallons", 6, 2, 6, 18.75m),
Supply("CHM-ZNP-001", "Zinc Phosphate Powder", "Dry zinc phosphate powder, 10-lb bag", "Cleaner", cleanerCat?.Id, "bags", 5, 2, 5, 35.00m),
Supply("CHM-IPC-001", "Iron Phosphate Powder", "Dry iron phosphate powder, 10-lb bag", "Cleaner", cleanerCat?.Id, "bags", 5, 2, 5, 28.00m),
Supply("CHM-APR-001", "Adhesion Promoter", "Surface adhesion promoter for difficult substrates, qt","Cleaner",cleanerCat?.Id,"quarts", 10, 3, 10, 19.50m),
// ── Abrasive Media ────────────────────────────────────────────────────
Supply("ABR-AO80-001", "Aluminum Oxide 80 Grit", "80-grit aluminum oxide blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 12, 4, 12, 28.50m),
Supply("ABR-AO150-001", "Aluminum Oxide 150 Grit", "150-grit aluminum oxide blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 8, 3, 8, 29.50m),
Supply("ABR-AO180-001", "Aluminum Oxide 180 Grit", "180-grit aluminum oxide blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 6, 2, 6, 30.50m),
Supply("ABR-SS70-001", "Steel Shot S-70", "Steel shot S-70, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 10, 3, 10, 32.75m),
Supply("ABR-SS110-001", "Steel Shot S-110", "Steel shot S-110, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 10, 3, 10, 33.50m),
Supply("ABR-SS230-001", "Steel Shot S-230", "Steel shot S-230, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 8, 3, 8, 34.75m),
Supply("ABR-SG25-001", "Steel Grit G-25", "Steel grit G-25, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 8, 3, 8, 35.50m),
Supply("ABR-SG40-001", "Steel Grit G-40", "Steel grit G-40, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 8, 3, 8, 36.25m),
Supply("ABR-GB8-001", "Glass Bead No.8", "Glass bead No. 8, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 10, 3, 10, 27.50m),
Supply("ABR-GB13-001", "Glass Bead No.13", "Glass bead No. 13, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 8, 3, 8, 28.75m),
Supply("ABR-GRN-001", "Garnet 80 Grit", "80-grit garnet blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 10, 3, 10, 38.50m),
Supply("ABR-SIC-001", "Silicon Carbide 80 Grit", "80-grit silicon carbide blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 6, 2, 6, 62.75m),
Supply("ABR-PLM-001", "Plastic Media Type I", "Plastic abrasive media Type I, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 5, 2, 5, 45.00m),
Supply("ABR-WLN-001", "Walnut Shell Medium", "Walnut shell medium-grit blasting media, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 5, 2, 5, 32.50m),
Supply("ABR-CRN-001", "Corn Cob Media", "Corn cob blasting media medium-grit, 50-lb bag", "Abrasive Media", abrasiveCat?.Id, "bags", 5, 2, 5, 27.00m),
// ── Hanging Hardware ──────────────────────────────────────────────────
Supply("HDW-JHS-001", "J-Hooks Small", "1/8-inch wire J-hooks for small parts (box of 100)", "Consumables", consumeCat?.Id, "boxes", 15, 5, 15, 9.75m),
Supply("HDW-JHM-001", "J-Hooks Medium", "3/16-inch wire J-hooks for medium parts (box of 100)", "Consumables", consumeCat?.Id, "boxes", 12, 4, 12, 13.50m),
Supply("HDW-JHL-001", "J-Hooks Large", "1/4-inch wire J-hooks for heavy parts (box of 50)", "Consumables", consumeCat?.Id, "boxes", 10, 3, 10, 17.25m),
Supply("HDW-SHS-001", "S-Hooks Small", "Small S-hooks for racking light parts (box of 100)", "Consumables", consumeCat?.Id, "boxes", 12, 4, 12, 8.50m),
Supply("HDW-SHL-001", "S-Hooks Large", "Large S-hooks for heavy racking (box of 50)", "Consumables", consumeCat?.Id, "boxes", 8, 3, 8, 14.75m),
Supply("HDW-GRW-001", "Ground Wire 10ft Coil", "Grounding wire coil for proper gun grounding (each)", "Consumables", consumeCat?.Id, "each", 20, 5, 15, 4.50m),
Supply("HDW-RB24-001", "Racking Bar 24 inch", "24-inch steel racking cross bar (each)", "Consumables", consumeCat?.Id, "each", 15, 5, 10, 12.75m),
Supply("HDW-RB36-001", "Racking Bar 36 inch", "36-inch steel racking cross bar (each)", "Consumables", consumeCat?.Id, "each", 10, 3, 10, 17.50m),
Supply("HDW-W14-001", "Hang Wire 14-Gauge", "14-gauge steel hang wire, 100-ft roll", "Consumables", consumeCat?.Id, "rolls", 10, 3, 10, 8.25m),
Supply("HDW-W12-001", "Hang Wire 12-Gauge", "12-gauge steel hang wire, 100-ft roll", "Consumables", consumeCat?.Id, "rolls", 10, 3, 10, 11.50m),
Supply("HDW-QCC-001", "Quick-Clamp Connectors","Powder coating quick-clamp connectors (bag of 25)", "Consumables", consumeCat?.Id, "bags", 15, 5, 15, 14.75m),
Supply("HDW-TBR-001", "T-Bar Fixture", "T-bar part fixture for flat panel racking (each)", "Consumables", consumeCat?.Id, "each", 8, 2, 5, 22.50m),
Supply("HDW-WCA-001", "Wheel Cone Adapters", "Wheel cone adapters for rim coating (set of 4)", "Consumables", consumeCat?.Id, "sets", 6, 2, 4, 34.75m),
Supply("HDW-THR-001", "Threaded Rod Hangers", "6-inch threaded rod hangers for custom racking (box of 10)", "Consumables", consumeCat?.Id, "boxes", 8, 2, 6, 19.25m),
// ── PPE & Safety ──────────────────────────────────────────────────────
Supply("PPE-GVM-001", "Nitrile Gloves Medium", "Nitrile exam gloves medium, powder-free (box of 100)", "Consumables", consumeCat?.Id, "boxes", 10, 3, 10, 12.75m),
Supply("PPE-GVL-001", "Nitrile Gloves Large", "Nitrile exam gloves large, powder-free (box of 100)", "Consumables", consumeCat?.Id, "boxes", 10, 3, 10, 12.75m),
Supply("PPE-RES-001", "Half-Face Respirator", "Half-face respirator with P100/OV cartridges (each)", "Consumables", consumeCat?.Id, "each", 6, 2, 4, 38.50m),
Supply("PPE-FLT-001", "P100 Filter Cartridges", "P100 organic vapor replacement cartridges (pair)", "Consumables", consumeCat?.Id, "pairs", 12, 4, 12, 17.25m),
Supply("PPE-SGL-001", "Safety Glasses", "ANSI Z87.1 safety glasses, clear lens (each)", "Consumables", consumeCat?.Id, "each", 20, 6, 12, 4.50m),
Supply("PPE-FSH-001", "Face Shield", "Adjustable face shield, 8-inch (each)", "Consumables", consumeCat?.Id, "each", 6, 2, 4, 18.75m),
Supply("PPE-CVR-001", "Tyvek Coverall", "Tyvek disposable coverall, medium (each)", "Consumables", consumeCat?.Id, "each", 15, 5, 15, 11.50m),
};
// Add inventory items one at a time to handle duplicates gracefully
@@ -1081,11 +1266,54 @@ public partial class SeedDataService : ISeedDataService
var vendors = new List<Vendor>
{
new Vendor { CompanyId = company.Id, CompanyName = "Prismatic Powders", ContactName = "Sales", Email = "sales@prismaticpowders.com", Phone = "800-867-4445", Website = "https://www.prismaticpowders.com", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Columbia Coatings", ContactName = "Sales", Email = "info@columbiacoatings.com", Phone = "888-265-8247", Website = "https://www.columbiacoatings.com", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Harbor Freight Tools", ContactName = "Purchasing", Email = "purchasing@harborfreight.com", Phone = "800-444-3353", Website = "https://www.harborfreight.com", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Grainger Industrial Supply",ContactName = "Account Rep", Email = "accounts@grainger.com", Phone = "800-472-4643", Website = "https://www.grainger.com", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Local Industrial Supply", ContactName = "Sales Team", Email = "sales@localindustrialsupply.com", Phone = "(919) 555-0100", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Powder Suppliers ─────────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Prismatic Powders", ContactName = "Sales", Email = "sales@prismaticpowders.com", Phone = "800-867-4445", Website = "https://www.prismaticpowders.com", PaymentTerms = "Net 30", IsActive = true, IsPreferred = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Columbia Coatings", ContactName = "Sales", Email = "info@columbiacoatings.com", Phone = "888-265-8247", Website = "https://www.columbiacoatings.com", PaymentTerms = "Net 30", IsActive = true, IsPreferred = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Tiger Drylac USA", ContactName = "Sales", Email = "sales@tigerdrylac.com", Phone = "888-487-9090", Website = "https://www.tigerdrylac.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Sherwin-Williams Powders", ContactName = "Sales Rep", Email = "powders@sherwin-williams.com", Phone = "800-321-8194", Website = "https://www.sherwin-williams.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Eastwood Company", ContactName = "Customer Svc", Email = "support@eastwood.com", Phone = "800-343-9353", Website = "https://www.eastwood.com", PaymentTerms = "Net 15", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Industrial & Hardware Suppliers ──────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Grainger Industrial Supply", ContactName = "Account Rep", Email = "accounts@grainger.com", Phone = "800-472-4643", Website = "https://www.grainger.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "MSC Industrial Supply", ContactName = "Account Rep", Email = "accounts@mscdirect.com", Phone = "800-645-7270", Website = "https://www.mscdirect.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "McMaster-Carr", ContactName = "Customer Svc", Email = "orders@mcmaster.com", Phone = "630-833-0300", Website = "https://www.mcmaster.com", PaymentTerms = "Credit Card", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Fastenal", ContactName = "Branch Mgr", Email = "nc.raleigh@fastenal.com", Phone = "(919) 833-2120", Website = "https://www.fastenal.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Harbor Freight Tools", ContactName = "Purchasing", Email = "purchasing@harborfreight.com", Phone = "800-444-3353", Website = "https://www.harborfreight.com", PaymentTerms = "Credit Card", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Uline", ContactName = "Sales", Email = "customer.service@uline.com", Phone = "800-295-5510", Website = "https://www.uline.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Local Industrial Supply", ContactName = "Sales Team", Email = "sales@localindustrialsupply.com", Phone = "(919) 555-0100", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Amazon Business", ContactName = "Account Mgr", Email = "business@amazon.com", Phone = "888-281-3847", Website = "https://business.amazon.com", PaymentTerms = "Credit Card", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Lowe's Pro Supply", ContactName = "Pro Desk", Email = "pro@lowes.com", Phone = "(919) 555-0920", Website = "https://www.lowes.com/l/pro.html", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "NAPA Auto Parts", ContactName = "Store Mgr", Email = "raleigh.south@napa.com", Phone = "(919) 555-0502", Website = "https://www.napaonline.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Abrasive & Blasting Suppliers ─────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Clemco Industries", ContactName = "Sales", Email = "sales@clemcoindustries.com", Phone = "314-770-0377", Website = "https://www.clemcoindustries.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Triangle Abrasives Co", ContactName = "John Marks", Email = "jmarks@triangleabrasives.com", Phone = "(919) 555-0305", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Industrial Gases ──────────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Airgas USA", ContactName = "Account Mgr", Email = "nc.accounts@airgas.com", Phone = "(919) 555-0210", Website = "https://www.airgas.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Linde Gas & Equipment", ContactName = "Route Mgr", Email = "nc.service@linde.com", Phone = "800-755-9277", Website = "https://www.lindeus.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Utilities & Services ──────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Duke Energy Business", ContactName = "Account Svc", Email = "business@duke-energy.com", Phone = "800-777-9898", Website = "https://www.duke-energy.com", PaymentTerms = "Monthly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "AT&T Business Solutions", ContactName = "Account Rep", Email = "smb@att.com", Phone = "800-321-2000", Website = "https://www.att.com/smallbusiness", PaymentTerms = "Monthly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Spectrum Business", ContactName = "Account Mgr", Email = "business@spectrum.com", Phone = "855-707-7328", Website = "https://business.spectrum.com", PaymentTerms = "Monthly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Raleigh Electric Supply", ContactName = "Counter Sales", Email = "sales@raleighelectric.com", Phone = "(919) 555-0815", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Carolina Industrial Water", ContactName = "Service Tech", Email = "service@carolinawater.com", Phone = "(919) 555-1102", Notes = "Water filtration and treatment service for spray booth wash system.", PaymentTerms = "Quarterly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Waste & Environmental ─────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Safety-Kleen Systems", ContactName = "Route Driver", Email = "nc.service@safety-kleen.com", Phone = "800-669-5740", Website = "https://www.safety-kleen.com", PaymentTerms = "Monthly", IsActive = true, Country = "USA", Notes = "Solvent recycling and chemical waste disposal.", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Raleigh Waste Solutions", ContactName = "Route Mgr", Email = "service@raleighwaste.com", Phone = "(919) 555-0604", PaymentTerms = "Monthly", IsActive = true, Country = "USA", Notes = "Dumpster and roll-off container service.", CreatedAt = DateTime.UtcNow },
// ── Safety & PPE ──────────────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Work N Gear Safety", ContactName = "Sales", Email = "sales@workngear.com", Phone = "800-967-9327", Website = "https://www.workngear.com", PaymentTerms = "Net 15", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Office & Business Services ────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "HD Supply", ContactName = "Account Rep", Email = "accounts@hdsupply.com", Phone = "800-431-3000", Website = "https://www.hdsupply.com", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "Carolina Office Products", ContactName = "Sales Rep", Email = "sales@carolinaoffice.com", Phone = "(919) 555-0712", PaymentTerms = "Net 30", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
new Vendor { CompanyId = company.Id, CompanyName = "First Insurance Solutions", ContactName = "Agent", Email = "agents@firstinsurance.com", Phone = "(919) 555-1001", Notes = "Business liability and equipment insurance policy.", PaymentTerms = "Monthly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
// ── Facility (Landlord) ───────────────────────────────────────────────
new Vendor { CompanyId = company.Id, CompanyName = "Triangle Commercial Properties LLC", ContactName = "Property Mgr", Email = "rentals@trianglecommercial.com", Phone = "(919) 555-0401", Notes = "Shop lease — 4,800 sq ft at 4712 Industrial Blvd, Raleigh NC 27616. Rent due 1st of each month.", PaymentTerms = "Monthly", IsActive = true, Country = "USA", CreatedAt = DateTime.UtcNow },
};
await _context.Set<Vendor>().AddRangeAsync(vendors);