using Distribution.Models; using Microsoft.EntityFrameworkCore; namespace Distribution.Data.Seed; public static class OperationsExtrasSeed { // Role id matches RegionalAgency in Data/Seed/RoleAndPermissionSeed.cs (private there). private static readonly Guid RegionalAgencyRoleId = new("10000000-0000-0000-0000-000000000006"); internal static readonly Guid RegionalAgency1UserId = new("70000000-0000-0000-0000-000000000001"); private static readonly Guid CaseUomId = new("67000000-0000-0000-0000-000000000001"); private static readonly Guid UomConversion1Id = new("67000000-0000-0000-0000-000000000002"); private static readonly Guid RegionAgencyMap1Id = new("57000000-0000-0000-0000-000000000001"); private static readonly Guid RegionalBudget1Id = new("58000000-0000-0000-0000-000000000001"); private static readonly Guid RegionalTarget1Id = new("59000000-0000-0000-0000-000000000001"); private static readonly Guid RegionalTaxRule1Id = new("60000000-0000-0000-0000-000000000001"); private static readonly Guid StockBalance1Id = new("61000000-0000-0000-0000-000000000001"); private static readonly Guid StockBalance2Id = new("61000000-0000-0000-0000-000000000002"); private static readonly Guid StockBalance3Id = new("61000000-0000-0000-0000-000000000003"); private static readonly Guid StockMovement1Id = new("62000000-0000-0000-0000-000000000001"); private static readonly Guid StockMovement2Id = new("62000000-0000-0000-0000-000000000002"); private static readonly Guid StockMovement3Id = new("62000000-0000-0000-0000-000000000003"); private static readonly Guid StoreKycDocument1Id = new("63000000-0000-0000-0000-000000000001"); private static readonly Guid StoreKycDocument2Id = new("63000000-0000-0000-0000-000000000002"); private static readonly Guid DriverComplianceConfig1Id = new("64000000-0000-0000-0000-000000000001"); private static readonly Guid RideCancelRequest1Id = new("65000000-0000-0000-0000-000000000001"); private static readonly Guid RouteVisitLog1Id = new("66000000-0000-0000-0000-000000000001"); private static readonly Guid RouteVisitLog2Id = new("66000000-0000-0000-0000-000000000002"); private static readonly Guid UserRegionScope1Id = new("68000000-0000-0000-0000-000000000001"); private static readonly Guid UserRouteScope1Id = new("68000000-0000-0000-0000-000000000002"); private static readonly Guid UserStoreScope1Id = new("68000000-0000-0000-0000-000000000003"); private static readonly Guid SaleRoute1Id = new("69000000-0000-0000-0000-000000000001"); private static readonly Guid SaleRoute2Id = new("69000000-0000-0000-0000-000000000002"); public static void Apply(ModelBuilder modelBuilder) { modelBuilder.Entity().HasData( new User { Id = RegionalAgency1UserId, Username = "channa.desilva", PasswordHash = MasterDataSeed.SeedPasswordHash, FullName = "Channa De Silva", FK_RoleId = RegionalAgencyRoleId, FK_ReportsToUserId = null, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new Uom { Id = CaseUomId, Name = "Case", CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new UomConversion { Id = UomConversion1Id, FK_ItemId = MasterDataSeed.Coke500ItemId, FK_FromUomId = CaseUomId, FK_ToUomId = MasterDataSeed.PieceUomId, Factor = 24m } ); modelBuilder.Entity().HasData( new RegionAgencyMap { Id = RegionAgencyMap1Id, FK_RegionId = MasterDataSeed.WesternRegionId, FK_AgencyUserId = RegionalAgency1UserId, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new RegionalBudget { Id = RegionalBudget1Id, FK_RegionId = MasterDataSeed.WesternRegionId, Period = "2026-08", BudgetAmount = 200000m, CreatedAt = new DateTime(2026, 8, 1), IsActive = true } ); modelBuilder.Entity().HasData( new RegionalTarget { Id = RegionalTarget1Id, FK_RegionId = MasterDataSeed.WesternRegionId, Period = "2026-08", TargetValue = 500000m, CreatedAt = new DateTime(2026, 8, 1), IsActive = true } ); modelBuilder.Entity().HasData( new RegionalTaxRule { Id = RegionalTaxRule1Id, FK_RegionId = MasterDataSeed.WesternRegionId, RuleConfig = "{\"rate\": 0.15}", CreatedAt = new DateTime(2026, 8, 1), IsActive = true } ); modelBuilder.Entity().HasData( new StockBalance { Id = StockBalance1Id, FK_ItemId = MasterDataSeed.Coke500ItemId, LocationId = MasterDataSeed.ColomboWarehouseId, LocationType = LocationType.Warehouse, Quantity = 150m, UpdatedAt = new DateTime(2026, 8, 25, 9, 30, 0) }, new StockBalance { Id = StockBalance2Id, FK_ItemId = MasterDataSeed.LaysClassicItemId, LocationId = MasterDataSeed.ColomboWarehouseId, LocationType = LocationType.Warehouse, Quantity = 90m, UpdatedAt = new DateTime(2026, 8, 25, 9, 30, 0) }, new StockBalance { Id = StockBalance3Id, FK_ItemId = MasterDataSeed.Coke500ItemId, LocationId = MasterDataSeed.VanVehicleId, LocationType = LocationType.Vehicle, Quantity = 20m, UpdatedAt = new DateTime(2026, 8, 25, 9, 30, 0) } ); modelBuilder.Entity().HasData( new StockMovement { Id = StockMovement1Id, FK_ItemId = MasterDataSeed.Coke500ItemId, FromLocationId = null, FromLocationType = null, ToLocationId = MasterDataSeed.ColomboWarehouseId, ToLocationType = LocationType.Warehouse, Quantity = 200m, Type = MovementType.PurchaseReceipt, ReasonCode = null, ReferenceId = ProcurementSeed.GoodsReceipt1Id, CreatedAt = new DateTime(2026, 8, 15), CreatedBy = MasterDataSeed.Supervisor1UserId }, new StockMovement { Id = StockMovement2Id, FK_ItemId = MasterDataSeed.Coke500ItemId, FromLocationId = MasterDataSeed.ColomboWarehouseId, FromLocationType = LocationType.Warehouse, ToLocationId = MasterDataSeed.VanVehicleId, ToLocationType = LocationType.Vehicle, Quantity = 50m, Type = MovementType.Load, ReasonCode = null, ReferenceId = OperationsDataSeed.LoadingSheet1Id, CreatedAt = new DateTime(2026, 8, 25, 7, 30, 0), CreatedBy = MasterDataSeed.Supervisor1UserId }, new StockMovement { Id = StockMovement3Id, FK_ItemId = MasterDataSeed.Coke500ItemId, FromLocationId = MasterDataSeed.VanVehicleId, FromLocationType = LocationType.Vehicle, ToLocationId = null, ToLocationType = null, Quantity = 30m, Type = MovementType.Sale, ReasonCode = null, ReferenceId = OperationsDataSeed.Sale1Id, CreatedAt = new DateTime(2026, 8, 25, 9, 30, 0), CreatedBy = MasterDataSeed.SalesRep1UserId } ); modelBuilder.Entity().HasData( new StoreKycDocument { Id = StoreKycDocument1Id, FK_StoreId = MasterDataSeed.FortStoreId, DocumentType = "Business Registration", FileReference = "seed/kyc/fort-mini-mart-brc.pdf", UploadedAt = new DateTime(2026, 8, 10), CreatedAt = new DateTime(2026, 8, 10), IsActive = true }, new StoreKycDocument { Id = StoreKycDocument2Id, FK_StoreId = MasterDataSeed.WattalaStoreId, DocumentType = "NIC", FileReference = "seed/kyc/wattala-owner-nic.pdf", UploadedAt = new DateTime(2026, 8, 12), CreatedAt = new DateTime(2026, 8, 12), IsActive = true } ); modelBuilder.Entity().HasData( new DriverComplianceConfig { Id = DriverComplianceConfig1Id, EnforceLicenseExpiry = true, EnforceMedicalClearance = true, UpdatedAt = new DateTime(2026, 8, 20), UpdatedBy = MasterDataSeed.Supervisor1UserId } ); modelBuilder.Entity().HasData( new RideCancelRequest { Id = RideCancelRequest1Id, FK_RideId = OperationsDataSeed.ActiveDeliveryRunId, TypeCode = CancelRequestType.VehicleBreakdown, Reason = "Reported minor engine issue, resolved after inspection", RequestedBy = MasterDataSeed.Driver2UserId, RequestedAt = new DateTime(2026, 8, 30, 9, 10, 0), Status = CancelRequestStatus.Rejected, ApprovedBy = MasterDataSeed.Supervisor1UserId, ApprovedAt = new DateTime(2026, 8, 30, 9, 15, 0) } ); modelBuilder.Entity().HasData( new RouteVisitLog { Id = RouteVisitLog1Id, FK_RouteId = MasterDataSeed.ColomboRouteId, FK_StoreId = MasterDataSeed.FortStoreId, FK_UserId = MasterDataSeed.SalesRep1UserId, CheckInAt = new DateTime(2026, 8, 25, 9, 0, 0), CheckInLatitude = 6.9344m, CheckInLongitude = 79.8428m, IsDeviationFlagged = false, CheckOutAt = new DateTime(2026, 8, 25, 9, 25, 0), CreatedAt = new DateTime(2026, 8, 25, 9, 0, 0), IsActive = true }, new RouteVisitLog { Id = RouteVisitLog2Id, FK_RouteId = MasterDataSeed.ColomboRouteId, FK_StoreId = MasterDataSeed.DehiwalaStoreId, FK_UserId = MasterDataSeed.SalesRep1UserId, CheckInAt = new DateTime(2026, 8, 25, 10, 0, 0), CheckInLatitude = 6.9000m, CheckInLongitude = 79.8654m, IsDeviationFlagged = true, CheckOutAt = null, CreatedAt = new DateTime(2026, 8, 25, 10, 0, 0), IsActive = true } ); modelBuilder.Entity().HasData( new UserRegionScope { Id = UserRegionScope1Id, FK_UserId = MasterDataSeed.RegionalManager1UserId, FK_RegionId = MasterDataSeed.WesternRegionId, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new UserRouteScope { Id = UserRouteScope1Id, FK_UserId = MasterDataSeed.Supervisor1UserId, FK_RouteId = MasterDataSeed.ColomboRouteId, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new UserStoreScope { Id = UserStoreScope1Id, FK_UserId = MasterDataSeed.SalesRep2UserId, FK_StoreId = MasterDataSeed.KandyStoreId, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); modelBuilder.Entity().HasData( new SaleRoute { Id = SaleRoute1Id, CreatedAt = new DateTime(2026, 8, 20), IsActive = true }, new SaleRoute { Id = SaleRoute2Id, CreatedAt = new DateTime(2026, 8, 20), IsActive = true } ); } }