using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Data.Seed; public static class ProcurementSeed { private static readonly Guid Supplier1Id = new("38000000-0000-0000-0000-000000000001"); private static readonly Guid Supplier2Id = new("38000000-0000-0000-0000-000000000002"); private static readonly Guid PurchaseOrder1Id = new("41000000-0000-0000-0000-000000000001"); private static readonly Guid PurchaseOrder2Id = new("41000000-0000-0000-0000-000000000002"); private static readonly Guid PurchaseOrderItem1Id = new("42000000-0000-0000-0000-000000000001"); private static readonly Guid PurchaseOrderItem2Id = new("42000000-0000-0000-0000-000000000002"); private static readonly Guid PurchaseOrderItem3Id = new("42000000-0000-0000-0000-000000000003"); internal static readonly Guid GoodsReceipt1Id = new("43000000-0000-0000-0000-000000000001"); private static readonly Guid GoodsReceiptItem1Id = new("44000000-0000-0000-0000-000000000001"); private static readonly Guid GoodsReceiptItem2Id = new("44000000-0000-0000-0000-000000000002"); private static readonly Guid PurchaseReturn1Id = new("45000000-0000-0000-0000-000000000001"); private static readonly Guid PurchaseReturnItem1Id = new("46000000-0000-0000-0000-000000000001"); private static readonly Guid SupplierClaim1Id = new("55000000-0000-0000-0000-000000000001"); private static readonly Guid SupplierClaimItem1Id = new("56000000-0000-0000-0000-000000000001"); public static void Apply(ModelBuilder modelBuilder) { modelBuilder.Entity().HasData( new Supplier { Id = Supplier1Id, Name = "Ceylon Beverages Ltd", ContactInfo = "+94 11 234 5678", PerformanceScore = 4.2m, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }, new Supplier { Id = Supplier2Id, Name = "Snack Foods (Pvt) Ltd", ContactInfo = "+94 11 876 5432", PerformanceScore = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true } ); modelBuilder.Entity().HasData( new PurchaseOrder { Id = PurchaseOrder1Id, FK_SupplierId = Supplier1Id, FK_CreatedByUserId = MasterDataSeed.Supervisor1UserId, Status = PurchaseOrderStatus.Received, CancelReason = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }, new PurchaseOrder { Id = PurchaseOrder2Id, FK_SupplierId = Supplier2Id, FK_CreatedByUserId = MasterDataSeed.Supervisor1UserId, Status = PurchaseOrderStatus.Received, CancelReason = null, CreatedAt = new DateTime(2026, 8, 14), IsActive = true } ); modelBuilder.Entity().HasData( new PurchaseOrderItem { Id = PurchaseOrderItem1Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ItemId = MasterDataSeed.Coke500ItemId, Quantity = 200, UnitCost = 40m, ReceivedQuantity = 200, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }, new PurchaseOrderItem { Id = PurchaseOrderItem2Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ItemId = MasterDataSeed.Coke1500ItemId, Quantity = 100, UnitCost = 80m, ReceivedQuantity = 98, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true }, new PurchaseOrderItem { Id = PurchaseOrderItem3Id, FK_PurchaseOrderId = PurchaseOrder2Id, FK_ItemId = MasterDataSeed.LaysClassicItemId, Quantity = 150, UnitCost = 35m, ReceivedQuantity = 150, CancelledQuantity = 0, IsCancelled = false, CreatedAt = new DateTime(2026, 8, 14), IsActive = true } ); modelBuilder.Entity().HasData( new GoodsReceipt { Id = GoodsReceipt1Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_ReceivedByUserId = MasterDataSeed.Supervisor1UserId, FK_WarehouseId = MasterDataSeed.ColomboWarehouseId, ReceivedAt = new DateTime(2026, 8, 15), CreatedAt = new DateTime(2026, 8, 15), IsActive = true } ); modelBuilder.Entity().HasData( new GoodsReceiptItem { Id = GoodsReceiptItem1Id, FK_GoodsReceiptId = GoodsReceipt1Id, FK_PurchaseOrderItemId = PurchaseOrderItem1Id, AcceptedQuantity = 200, RejectedQuantity = 0, CreatedAt = new DateTime(2026, 8, 15), IsActive = true }, new GoodsReceiptItem { Id = GoodsReceiptItem2Id, FK_GoodsReceiptId = GoodsReceipt1Id, FK_PurchaseOrderItemId = PurchaseOrderItem2Id, AcceptedQuantity = 98, RejectedQuantity = 2, CreatedAt = new DateTime(2026, 8, 15), IsActive = true } ); modelBuilder.Entity().HasData( new PurchaseReturn { Id = PurchaseReturn1Id, FK_PurchaseOrderId = PurchaseOrder2Id, Reason = "Damaged in transit", CreatedAt = new DateTime(2026, 8, 16), IsActive = true } ); modelBuilder.Entity().HasData( new PurchaseReturnItem { Id = PurchaseReturnItem1Id, FK_PurchaseReturnId = PurchaseReturn1Id, FK_ItemId = MasterDataSeed.LaysClassicItemId, Quantity = 10, CreatedAt = new DateTime(2026, 8, 16), IsActive = true } ); modelBuilder.Entity().HasData( new SupplierClaim { Id = SupplierClaim1Id, FK_PurchaseOrderId = PurchaseOrder1Id, FK_GoodsReceiptId = GoodsReceipt1Id, Details = "2 units of Coke 1.5L received damaged", EvidenceUrl = null, Status = SupplierClaimStatus.Approved, ResolutionType = SupplierClaimResolutionType.Credit, ResolutionAmount = 160m, ResolutionNotes = "Credited against next invoice", RaisedByUserId = MasterDataSeed.Supervisor1UserId, ResolvedByUserId = MasterDataSeed.RegionalManager1UserId, ResolvedAt = new DateTime(2026, 8, 16), CreatedAt = new DateTime(2026, 8, 15), IsActive = true } ); modelBuilder.Entity().HasData( new SupplierClaimItem { Id = SupplierClaimItem1Id, FK_SupplierClaimId = SupplierClaim1Id, FK_ItemId = MasterDataSeed.Coke1500ItemId, Quantity = 2m, IssueType = SupplierClaimIssueType.Damaged, CreatedAt = new DateTime(2026, 8, 15), IsActive = true } ); } }