IF OBJECT_ID(N'[__EFMigrationsHistory]') IS NULL BEGIN CREATE TABLE [__EFMigrationsHistory] ( [MigrationId] nvarchar(150) NOT NULL, [ProductVersion] nvarchar(32) NOT NULL, CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY ([MigrationId]) ); END; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetRoles] ( [Id] nvarchar(450) NOT NULL, [Name] nvarchar(256) NULL, [NormalizedName] nvarchar(256) NULL, [ConcurrencyStamp] nvarchar(max) NULL, CONSTRAINT [PK_AspNetRoles] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetUsers] ( [Id] nvarchar(450) NOT NULL, [FirstName] nvarchar(max) NOT NULL, [LastName] nvarchar(max) NOT NULL, [EmployeeNumber] nvarchar(max) NULL, [DateOfBirth] datetime2 NULL, [HireDate] datetime2 NOT NULL, [TerminationDate] datetime2 NULL, [Address] nvarchar(max) NULL, [City] nvarchar(max) NULL, [State] nvarchar(max) NULL, [ZipCode] nvarchar(max) NULL, [Department] nvarchar(max) NULL, [Position] nvarchar(max) NULL, [HourlyRate] decimal(18,2) NOT NULL, [Theme] nvarchar(max) NULL, [DateFormat] nvarchar(max) NULL, [TimeZone] nvarchar(max) NULL, [DashboardLayout] int NULL, [IsActive] bit NOT NULL, [CanViewShopFloor] bit NOT NULL, [CanManageJobs] bit NOT NULL, [CanManageInventory] bit NOT NULL, [CanManageCustomers] bit NOT NULL, [CanCreateQuotes] bit NOT NULL, [CanApproveQuotes] bit NOT NULL, [ProfilePicturePath] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [LastLoginDate] datetime2 NULL, [UserName] nvarchar(256) NULL, [NormalizedUserName] nvarchar(256) NULL, [Email] nvarchar(256) NULL, [NormalizedEmail] nvarchar(256) NULL, [EmailConfirmed] bit NOT NULL, [PasswordHash] nvarchar(max) NULL, [SecurityStamp] nvarchar(max) NULL, [ConcurrencyStamp] nvarchar(max) NULL, [PhoneNumber] nvarchar(max) NULL, [PhoneNumberConfirmed] bit NOT NULL, [TwoFactorEnabled] bit NOT NULL, [LockoutEnd] datetimeoffset NULL, [LockoutEnabled] bit NOT NULL, [AccessFailedCount] int NOT NULL, CONSTRAINT [PK_AspNetUsers] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [Equipment] ( [Id] int NOT NULL IDENTITY, [EquipmentName] nvarchar(max) NOT NULL, [EquipmentNumber] nvarchar(max) NULL, [EquipmentType] nvarchar(max) NOT NULL, [Manufacturer] nvarchar(max) NULL, [Model] nvarchar(max) NULL, [SerialNumber] nvarchar(max) NULL, [PurchaseDate] datetime2 NULL, [PurchasePrice] decimal(18,2) NOT NULL, [WarrantyExpiration] datetime2 NULL, [Status] int NOT NULL, [Location] nvarchar(max) NULL, [RecommendedMaintenanceIntervalDays] int NOT NULL, [LastMaintenanceDate] datetime2 NULL, [NextScheduledMaintenance] datetime2 NULL, [Notes] nvarchar(max) NULL, [IsActive] bit NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Equipment] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [PricingTiers] ( [Id] int NOT NULL IDENTITY, [TierName] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [DiscountPercent] decimal(18,2) NOT NULL, [IsActive] bit NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_PricingTiers] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [Suppliers] ( [Id] int NOT NULL IDENTITY, [CompanyName] nvarchar(max) NOT NULL, [ContactName] nvarchar(max) NULL, [Email] nvarchar(max) NULL, [Phone] nvarchar(max) NULL, [Address] nvarchar(max) NULL, [City] nvarchar(max) NULL, [State] nvarchar(max) NULL, [ZipCode] nvarchar(max) NULL, [Country] nvarchar(max) NULL, [Website] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [IsActive] bit NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Suppliers] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetRoleClaims] ( [Id] int NOT NULL IDENTITY, [RoleId] nvarchar(450) NOT NULL, [ClaimType] nvarchar(max) NULL, [ClaimValue] nvarchar(max) NULL, CONSTRAINT [PK_AspNetRoleClaims] PRIMARY KEY ([Id]), CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [AspNetRoles] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetUserClaims] ( [Id] int NOT NULL IDENTITY, [UserId] nvarchar(450) NOT NULL, [ClaimType] nvarchar(max) NULL, [ClaimValue] nvarchar(max) NULL, CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY ([Id]), CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetUserLogins] ( [LoginProvider] nvarchar(450) NOT NULL, [ProviderKey] nvarchar(450) NOT NULL, [ProviderDisplayName] nvarchar(max) NULL, [UserId] nvarchar(450) NOT NULL, CONSTRAINT [PK_AspNetUserLogins] PRIMARY KEY ([LoginProvider], [ProviderKey]), CONSTRAINT [FK_AspNetUserLogins_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetUserRoles] ( [UserId] nvarchar(450) NOT NULL, [RoleId] nvarchar(450) NOT NULL, CONSTRAINT [PK_AspNetUserRoles] PRIMARY KEY ([UserId], [RoleId]), CONSTRAINT [FK_AspNetUserRoles_AspNetRoles_RoleId] FOREIGN KEY ([RoleId]) REFERENCES [AspNetRoles] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_AspNetUserRoles_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [AspNetUserTokens] ( [UserId] nvarchar(450) NOT NULL, [LoginProvider] nvarchar(450) NOT NULL, [Name] nvarchar(450) NOT NULL, [Value] nvarchar(max) NULL, CONSTRAINT [PK_AspNetUserTokens] PRIMARY KEY ([UserId], [LoginProvider], [Name]), CONSTRAINT [FK_AspNetUserTokens_AspNetUsers_UserId] FOREIGN KEY ([UserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [MaintenanceRecords] ( [Id] int NOT NULL IDENTITY, [EquipmentId] int NOT NULL, [MaintenanceType] nvarchar(max) NOT NULL, [Status] int NOT NULL, [Priority] int NOT NULL, [ScheduledDate] datetime2 NOT NULL, [CompletedDate] datetime2 NULL, [PerformedById] nvarchar(450) NULL, [Description] nvarchar(max) NOT NULL, [WorkPerformed] nvarchar(max) NULL, [PartsReplaced] nvarchar(max) NULL, [LaborCost] decimal(18,2) NOT NULL, [PartsCost] decimal(18,2) NOT NULL, [TotalCost] decimal(18,2) NOT NULL, [DowntimeHours] decimal(18,2) NOT NULL, [Notes] nvarchar(max) NULL, [TechnicianNotes] nvarchar(max) NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_MaintenanceRecords] PRIMARY KEY ([Id]), CONSTRAINT [FK_MaintenanceRecords_AspNetUsers_PerformedById] FOREIGN KEY ([PerformedById]) REFERENCES [AspNetUsers] ([Id]) ON DELETE SET NULL, CONSTRAINT [FK_MaintenanceRecords_Equipment_EquipmentId] FOREIGN KEY ([EquipmentId]) REFERENCES [Equipment] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [Customers] ( [Id] int NOT NULL IDENTITY, [CompanyName] nvarchar(450) NOT NULL, [ContactFirstName] nvarchar(max) NULL, [ContactLastName] nvarchar(max) NULL, [Email] nvarchar(450) NOT NULL, [Phone] nvarchar(max) NULL, [MobilePhone] nvarchar(max) NULL, [Address] nvarchar(max) NULL, [City] nvarchar(max) NULL, [State] nvarchar(max) NULL, [ZipCode] nvarchar(max) NULL, [Country] nvarchar(max) NULL, [IsCommercial] bit NOT NULL, [TaxId] nvarchar(max) NULL, [CreditLimit] decimal(18,2) NOT NULL, [CurrentBalance] decimal(18,2) NOT NULL, [PaymentTerms] nvarchar(max) NULL, [PricingTierId] int NULL, [GeneralNotes] nvarchar(max) NULL, [IsActive] bit NOT NULL, [LastContactDate] datetime2 NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Customers] PRIMARY KEY ([Id]), CONSTRAINT [FK_Customers_PricingTiers_PricingTierId] FOREIGN KEY ([PricingTierId]) REFERENCES [PricingTiers] ([Id]) ON DELETE SET NULL ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [InventoryItems] ( [Id] int NOT NULL IDENTITY, [SKU] nvarchar(450) NOT NULL, [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [Category] nvarchar(max) NOT NULL, [ColorName] nvarchar(max) NULL, [ColorCode] nvarchar(max) NULL, [Finish] nvarchar(max) NULL, [Manufacturer] nvarchar(max) NULL, [ManufacturerPartNumber] nvarchar(max) NULL, [QuantityOnHand] decimal(18,2) NOT NULL, [UnitOfMeasure] nvarchar(max) NOT NULL, [ReorderPoint] decimal(18,2) NOT NULL, [ReorderQuantity] decimal(18,2) NOT NULL, [MinimumStock] decimal(18,2) NOT NULL, [MaximumStock] decimal(18,2) NOT NULL, [UnitCost] decimal(18,2) NOT NULL, [AverageCost] decimal(18,2) NOT NULL, [LastPurchasePrice] decimal(18,2) NOT NULL, [LastPurchaseDate] datetime2 NULL, [PrimarySupplierId] int NULL, [SupplierPartNumber] nvarchar(max) NULL, [Location] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [IsActive] bit NOT NULL, [DiscontinuedDate] datetime2 NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_InventoryItems] PRIMARY KEY ([Id]), CONSTRAINT [FK_InventoryItems_Suppliers_PrimarySupplierId] FOREIGN KEY ([PrimarySupplierId]) REFERENCES [Suppliers] ([Id]) ON DELETE SET NULL ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [CustomerNotes] ( [Id] int NOT NULL IDENTITY, [CustomerId] int NOT NULL, [Note] nvarchar(max) NOT NULL, [IsImportant] bit NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_CustomerNotes] PRIMARY KEY ([Id]), CONSTRAINT [FK_CustomerNotes_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [Quotes] ( [Id] int NOT NULL IDENTITY, [QuoteNumber] nvarchar(450) NOT NULL, [CustomerId] int NOT NULL, [PreparedById] nvarchar(450) NULL, [Status] int NOT NULL, [IsCommercial] bit NOT NULL, [QuoteDate] datetime2 NOT NULL, [ExpirationDate] datetime2 NULL, [SentDate] datetime2 NULL, [ApprovedDate] datetime2 NULL, [SubTotal] decimal(18,2) NOT NULL, [DiscountPercent] decimal(18,2) NOT NULL, [DiscountAmount] decimal(18,2) NOT NULL, [TaxPercent] decimal(18,2) NOT NULL, [TaxAmount] decimal(18,2) NOT NULL, [Total] decimal(18,2) NOT NULL, [Description] nvarchar(max) NULL, [Terms] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [CustomerPO] nvarchar(max) NULL, [AISuggestedPrice] decimal(18,2) NULL, [AIPriceRationale] nvarchar(max) NULL, [UsedAISuggestion] bit NOT NULL, [ConvertedToJobId] int NULL, [ConvertedDate] datetime2 NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Quotes] PRIMARY KEY ([Id]), CONSTRAINT [FK_Quotes_AspNetUsers_PreparedById] FOREIGN KEY ([PreparedById]) REFERENCES [AspNetUsers] ([Id]) ON DELETE SET NULL, CONSTRAINT [FK_Quotes_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [InventoryTransactions] ( [Id] int NOT NULL IDENTITY, [InventoryItemId] int NOT NULL, [TransactionType] int NOT NULL, [Quantity] decimal(18,2) NOT NULL, [UnitCost] decimal(18,2) NOT NULL, [TotalCost] decimal(18,2) NOT NULL, [TransactionDate] datetime2 NOT NULL, [Reference] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [BalanceAfter] decimal(18,2) NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_InventoryTransactions] PRIMARY KEY ([Id]), CONSTRAINT [FK_InventoryTransactions_InventoryItems_InventoryItemId] FOREIGN KEY ([InventoryItemId]) REFERENCES [InventoryItems] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [Jobs] ( [Id] int NOT NULL IDENTITY, [JobNumber] nvarchar(450) NOT NULL, [CustomerId] int NOT NULL, [QuoteId] int NULL, [AssignedEmployeeId] nvarchar(450) NULL, [Description] nvarchar(max) NOT NULL, [Status] int NOT NULL, [Priority] int NOT NULL, [ScheduledDate] datetime2 NULL, [StartedDate] datetime2 NULL, [CompletedDate] datetime2 NULL, [DueDate] datetime2 NULL, [EstimatedCost] decimal(18,2) NOT NULL, [ActualCost] decimal(18,2) NOT NULL, [QuotedPrice] decimal(18,2) NOT NULL, [FinalPrice] decimal(18,2) NOT NULL, [CustomerPO] nvarchar(max) NULL, [SpecialInstructions] nvarchar(max) NULL, [RequiresCustomerApproval] bit NOT NULL, [IsCustomerApproved] bit NOT NULL, [CustomerApprovedDate] datetime2 NULL, [EstimatedHours] int NOT NULL, [ActualHours] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Jobs] PRIMARY KEY ([Id]), CONSTRAINT [FK_Jobs_AspNetUsers_AssignedEmployeeId] FOREIGN KEY ([AssignedEmployeeId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE SET NULL, CONSTRAINT [FK_Jobs_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_Jobs_Quotes_QuoteId] FOREIGN KEY ([QuoteId]) REFERENCES [Quotes] ([Id]) ON DELETE SET NULL ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [QuoteItems] ( [Id] int NOT NULL IDENTITY, [QuoteId] int NOT NULL, [Description] nvarchar(max) NOT NULL, [Quantity] int NOT NULL, [ColorName] nvarchar(max) NULL, [ColorCode] nvarchar(max) NULL, [Finish] nvarchar(max) NULL, [Length] decimal(18,2) NULL, [Width] decimal(18,2) NULL, [Height] decimal(18,2) NULL, [SurfaceArea] decimal(18,2) NULL, [MeasurementUnit] nvarchar(max) NULL, [UnitPrice] decimal(18,2) NOT NULL, [TotalPrice] decimal(18,2) NOT NULL, [RequiresSandblasting] bit NOT NULL, [RequiresMasking] bit NOT NULL, [EstimatedMinutes] int NOT NULL, [Notes] nvarchar(max) NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuoteItems] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuoteItems_Quotes_QuoteId] FOREIGN KEY ([QuoteId]) REFERENCES [Quotes] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [JobItems] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [Description] nvarchar(max) NOT NULL, [Quantity] int NOT NULL, [PowderInventoryId] int NULL, [ColorName] nvarchar(max) NULL, [ColorCode] nvarchar(max) NULL, [Finish] nvarchar(max) NULL, [Length] decimal(18,2) NULL, [Width] decimal(18,2) NULL, [Height] decimal(18,2) NULL, [Weight] decimal(18,2) NULL, [SurfaceArea] decimal(18,2) NULL, [MeasurementUnit] nvarchar(max) NULL, [UnitPrice] decimal(18,2) NOT NULL, [TotalPrice] decimal(18,2) NOT NULL, [MaterialCost] decimal(18,2) NOT NULL, [LaborCost] decimal(18,2) NOT NULL, [RequiresSandblasting] bit NOT NULL, [RequiresMasking] bit NOT NULL, [EstimatedMinutes] int NOT NULL, [ActualMinutes] int NOT NULL, [Notes] nvarchar(max) NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobItems] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobItems_InventoryItems_PowderInventoryId] FOREIGN KEY ([PowderInventoryId]) REFERENCES [InventoryItems] ([Id]), CONSTRAINT [FK_JobItems_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [JobNotes] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [Note] nvarchar(max) NOT NULL, [IsImportant] bit NOT NULL, [IsInternal] bit NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobNotes] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobNotes_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [JobPhotos] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [FileName] nvarchar(max) NOT NULL, [FilePath] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [PhotoType] nvarchar(max) NOT NULL, [PhotoDate] datetime2 NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobPhotos] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobPhotos_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE TABLE [JobStatusHistory] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [FromStatus] int NOT NULL, [ToStatus] int NOT NULL, [ChangedDate] datetime2 NOT NULL, [Notes] nvarchar(max) NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobStatusHistory] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobStatusHistory_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'CreatedAt', N'CreatedBy', N'DeletedAt', N'DeletedBy', N'Description', N'DiscountPercent', N'IsActive', N'IsDeleted', N'TierName', N'UpdatedAt', N'UpdatedBy') AND [object_id] = OBJECT_ID(N'[PricingTiers]')) SET IDENTITY_INSERT [PricingTiers] ON; EXEC(N'INSERT INTO [PricingTiers] ([Id], [CreatedAt], [CreatedBy], [DeletedAt], [DeletedBy], [Description], [DiscountPercent], [IsActive], [IsDeleted], [TierName], [UpdatedAt], [UpdatedBy]) VALUES (1, ''2026-02-05T16:37:50.1751418Z'', NULL, NULL, NULL, N''Standard pricing for regular customers'', 0.0, CAST(1 AS bit), CAST(0 AS bit), N''Standard'', NULL, NULL), (2, ''2026-02-05T16:37:50.1751424Z'', NULL, NULL, NULL, N''5% discount for preferred customers'', 5.0, CAST(1 AS bit), CAST(0 AS bit), N''Preferred'', NULL, NULL), (3, ''2026-02-05T16:37:50.1751426Z'', NULL, NULL, NULL, N''10% discount for premium customers'', 10.0, CAST(1 AS bit), CAST(0 AS bit), N''Premium'', NULL, NULL)'); IF EXISTS (SELECT * FROM [sys].[identity_columns] WHERE [name] IN (N'Id', N'CreatedAt', N'CreatedBy', N'DeletedAt', N'DeletedBy', N'Description', N'DiscountPercent', N'IsActive', N'IsDeleted', N'TierName', N'UpdatedAt', N'UpdatedBy') AND [object_id] = OBJECT_ID(N'[PricingTiers]')) SET IDENTITY_INSERT [PricingTiers] OFF; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_AspNetRoleClaims_RoleId] ON [AspNetRoleClaims] ([RoleId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [RoleNameIndex] ON [AspNetRoles] ([NormalizedName]) WHERE [NormalizedName] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_AspNetUserClaims_UserId] ON [AspNetUserClaims] ([UserId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_AspNetUserLogins_UserId] ON [AspNetUserLogins] ([UserId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_AspNetUserRoles_RoleId] ON [AspNetUserRoles] ([RoleId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [EmailIndex] ON [AspNetUsers] ([NormalizedEmail]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [UserNameIndex] ON [AspNetUsers] ([NormalizedUserName]) WHERE [NormalizedUserName] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_CustomerNotes_CustomerId] ON [CustomerNotes] ([CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Customers_CompanyName] ON [Customers] ([CompanyName]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE UNIQUE INDEX [IX_Customers_Email] ON [Customers] ([Email]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Customers_PricingTierId] ON [Customers] ([PricingTierId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_InventoryItems_PrimarySupplierId] ON [InventoryItems] ([PrimarySupplierId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE UNIQUE INDEX [IX_InventoryItems_SKU] ON [InventoryItems] ([SKU]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_InventoryTransactions_InventoryItemId] ON [InventoryTransactions] ([InventoryItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_JobItems_JobId] ON [JobItems] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_JobItems_PowderInventoryId] ON [JobItems] ([PowderInventoryId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_JobNotes_JobId] ON [JobNotes] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_JobPhotos_JobId] ON [JobPhotos] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Jobs_AssignedEmployeeId] ON [Jobs] ([AssignedEmployeeId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Jobs_CustomerId] ON [Jobs] ([CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE UNIQUE INDEX [IX_Jobs_JobNumber] ON [Jobs] ([JobNumber]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [IX_Jobs_QuoteId] ON [Jobs] ([QuoteId]) WHERE [QuoteId] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_JobStatusHistory_JobId] ON [JobStatusHistory] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_EquipmentId] ON [MaintenanceRecords] ([EquipmentId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_PerformedById] ON [MaintenanceRecords] ([PerformedById]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_QuoteItems_QuoteId] ON [QuoteItems] ([QuoteId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Quotes_CustomerId] ON [Quotes] ([CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE INDEX [IX_Quotes_PreparedById] ON [Quotes] ([PreparedById]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN CREATE UNIQUE INDEX [IX_Quotes_QuoteNumber] ON [Quotes] ([QuoteNumber]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260205163837_InitialCreate' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260205163837_InitialCreate', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE TABLE [Companies] ( [Id] int NOT NULL IDENTITY, [CompanyName] nvarchar(max) NOT NULL, [CompanyCode] nvarchar(450) NULL, [PrimaryContactName] nvarchar(max) NOT NULL, [PrimaryContactEmail] nvarchar(max) NOT NULL, [Phone] nvarchar(max) NULL, [Address] nvarchar(max) NULL, [City] nvarchar(max) NULL, [State] nvarchar(max) NULL, [ZipCode] nvarchar(max) NULL, [IsActive] bit NOT NULL, [SubscriptionStartDate] datetime2 NOT NULL, [SubscriptionEndDate] datetime2 NULL, [SubscriptionPlan] nvarchar(max) NULL, [TimeZone] nvarchar(max) NULL, [LogoPath] nvarchar(max) NULL, [Settings] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Companies] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [IX_Companies_CompanyCode] ON [Companies] ([CompanyCode]) WHERE [CompanyCode] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN SET IDENTITY_INSERT Companies ON; INSERT INTO Companies (Id, CompanyName, CompanyCode, PrimaryContactName, PrimaryContactEmail, Phone, Address, City, State, ZipCode, IsActive, SubscriptionStartDate, SubscriptionPlan, TimeZone, CompanyId, CreatedAt, IsDeleted) VALUES (1, 'Demo Company', 'DEMO', 'Admin User', 'admin@demo.com', '(555) 123-4567', '123 Demo Street', 'Demo City', 'CA', '90210', 1, GETUTCDATE(), 'Enterprise', 'America/New_York', 1, GETUTCDATE(), 0); SET IDENTITY_INSERT Companies OFF; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Suppliers] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Quotes] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [QuoteItems] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [PricingTiers] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [JobStatusHistory] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Jobs] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [JobPhotos] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [JobNotes] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [JobItems] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [InventoryTransactions] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [InventoryItems] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Equipment] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Customers] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [CustomerNotes] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CompanyId] int NOT NULL DEFAULT 1; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CompanyRole] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CompanyId] = 1, [CreatedAt] = ''2026-02-06T01:20:42.5015235Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CompanyId] = 1, [CreatedAt] = ''2026-02-06T01:20:42.5015242Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CompanyId] = 1, [CreatedAt] = ''2026-02-06T01:20:42.5015243Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_Suppliers_CompanyId] ON [Suppliers] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_Quotes_CompanyId] ON [Quotes] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_PricingTiers_CompanyId] ON [PricingTiers] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId] ON [Jobs] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_InventoryItems_CompanyId] ON [InventoryItems] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_Equipment_CompanyId] ON [Equipment] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_Customers_CompanyId] ON [Customers] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN CREATE INDEX [IX_AspNetUsers_CompanyId] ON [AspNetUsers] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [AspNetUsers] ADD CONSTRAINT [FK_AspNetUsers_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Customers] ADD CONSTRAINT [FK_Customers_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Equipment] ADD CONSTRAINT [FK_Equipment_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [InventoryItems] ADD CONSTRAINT [FK_InventoryItems_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [PricingTiers] ADD CONSTRAINT [FK_PricingTiers_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Quotes] ADD CONSTRAINT [FK_Quotes_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN ALTER TABLE [Suppliers] ADD CONSTRAINT [FK_Suppliers_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206012125_AddMultiTenancy' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260206012125_AddMultiTenancy', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206150138_MakeCompanyNameOptional' ) BEGIN DECLARE @var0 sysname; SELECT @var0 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'CompanyName'); IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var0 + '];'); ALTER TABLE [Customers] ALTER COLUMN [CompanyName] nvarchar(450) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206150138_MakeCompanyNameOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T15:00:38.8151700Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206150138_MakeCompanyNameOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T15:00:38.8151704Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206150138_MakeCompanyNameOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T15:00:38.8151706Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206150138_MakeCompanyNameOptional' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260206150138_MakeCompanyNameOptional', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN CREATE TABLE [CompanyOperatingCosts] ( [Id] int NOT NULL IDENTITY, [CompanyId] int NOT NULL, [StandardLaborRate] decimal(18,2) NOT NULL, [OvertimeLaborRate] decimal(18,2) NOT NULL, [SpecializedLaborRate] decimal(18,2) NOT NULL, [ElectricityRatePerKwh] decimal(18,2) NOT NULL, [GasRatePerUnit] decimal(18,2) NOT NULL, [WaterRatePerUnit] decimal(18,2) NOT NULL, [OvenOperatingCostPerHour] decimal(18,2) NOT NULL, [SandblasterCostPerHour] decimal(18,2) NOT NULL, [CoatingBoothCostPerHour] decimal(18,2) NOT NULL, [GeneralMarkupPercentage] decimal(18,2) NOT NULL, [AdminOverheadPercentage] decimal(18,2) NOT NULL, [FacilityCostPercentage] decimal(18,2) NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_CompanyOperatingCosts] PRIMARY KEY ([Id]), CONSTRAINT [FK_CompanyOperatingCosts_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T17:43:30.0415021Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T17:43:30.0415026Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T17:43:30.0415028Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN CREATE UNIQUE INDEX [IX_CompanyOperatingCosts_CompanyId] ON [CompanyOperatingCosts] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206174417_AddCompanyOperatingCosts' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260206174417_AddCompanyOperatingCosts', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN DROP INDEX [IX_Customers_Email] ON [Customers]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN DECLARE @var1 sysname; SELECT @var1 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Customers]') AND [c].[name] = N'Email'); IF @var1 IS NOT NULL EXEC(N'ALTER TABLE [Customers] DROP CONSTRAINT [' + @var1 + '];'); ALTER TABLE [Customers] ALTER COLUMN [Email] nvarchar(450) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T21:35:23.2581715Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T21:35:23.2581722Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-06T21:35:23.2581724Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [IX_Customers_Email] ON [Customers] ([Email]) WHERE [Email] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260206213627_MakeCustomerEmailOptional' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260206213627_MakeCustomerEmailOptional', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN DECLARE @var2 sysname; SELECT @var2 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'CustomerId'); IF @var2 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var2 + '];'); ALTER TABLE [Quotes] ALTER COLUMN [CustomerId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectAddress] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectCity] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectCompanyName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectContactName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectEmail] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectPhone] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectState] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN ALTER TABLE [Quotes] ADD [ProspectZipCode] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:42:43.2794915Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:42:43.2794919Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:42:43.2794921Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207034246_UpdateQuoteForProspects' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207034246_UpdateQuoteForProspects', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [PowderCoatingCostPerSqFt] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [TaxPercent] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:55:32.3427640Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:55:32.3427647Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T03:55:32.3427649Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207035534_AddPowderCoatingCostAndTaxToOperatingCosts', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD [InventoryItemId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD [PowderCostOverride] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD [SurfaceAreaSqFt] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T04:32:10.0998342Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T04:32:10.0998349Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T04:32:10.0998351Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN CREATE INDEX [IX_QuoteItems_InventoryItemId] ON [QuoteItems] ([InventoryItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD CONSTRAINT [FK_QuoteItems_InventoryItems_InventoryItemId] FOREIGN KEY ([InventoryItemId]) REFERENCES [InventoryItems] ([Id]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207043212_AddPowderCostFieldsToQuoteItems' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207043212_AddPowderCostFieldsToQuoteItems', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207152856_AddCoverageSqFtPerLbToInventoryItem' ) BEGIN ALTER TABLE [InventoryItems] ADD [CoverageSqFtPerLb] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207152856_AddCoverageSqFtPerLbToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:28:54.4593675Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207152856_AddCoverageSqFtPerLbToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:28:54.4593680Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207152856_AddCoverageSqFtPerLbToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:28:54.4593682Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207152856_AddCoverageSqFtPerLbToInventoryItem' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207152856_AddCoverageSqFtPerLbToInventoryItem', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207153545_AddTransferEfficiencyToInventoryItem' ) BEGIN ALTER TABLE [InventoryItems] ADD [TransferEfficiency] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207153545_AddTransferEfficiencyToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:35:42.9455847Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207153545_AddTransferEfficiencyToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:35:42.9455851Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207153545_AddTransferEfficiencyToInventoryItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T15:35:42.9455853Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207153545_AddTransferEfficiencyToInventoryItem' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207153545_AddTransferEfficiencyToInventoryItem', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [AssignedWorkerId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN ALTER TABLE [Jobs] ADD [AssignedWorkerId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN CREATE TABLE [ShopWorkers] ( [Id] int NOT NULL IDENTITY, [Name] nvarchar(max) NOT NULL, [Role] int NOT NULL, [Phone] nvarchar(max) NULL, [Email] nvarchar(max) NULL, [IsActive] bit NOT NULL, [Notes] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_ShopWorkers] PRIMARY KEY ([Id]), CONSTRAINT [FK_ShopWorkers_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T20:06:23.0605718Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T20:06:23.0605725Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-07T20:06:23.0605728Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_AssignedWorkerId] ON [MaintenanceRecords] ([AssignedWorkerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN CREATE INDEX [IX_Jobs_AssignedWorkerId] ON [Jobs] ([AssignedWorkerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN CREATE INDEX [IX_ShopWorkers_CompanyId] ON [ShopWorkers] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_ShopWorkers_AssignedWorkerId] FOREIGN KEY ([AssignedWorkerId]) REFERENCES [ShopWorkers] ([Id]) ON DELETE SET NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD CONSTRAINT [FK_MaintenanceRecords_ShopWorkers_AssignedWorkerId] FOREIGN KEY ([AssignedWorkerId]) REFERENCES [ShopWorkers] ([Id]) ON DELETE SET NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260207200633_AddShopWorkers' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260207200633_AddShopWorkers', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN EXEC sp_rename N'[Companies].[LogoPath]', N'LogoContentType', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN ALTER TABLE [Companies] ADD [LogoData] varbinary(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:00:14.7529664Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:00:14.7529711Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:00:14.7529713Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208160017_StoreLogoInDatabase' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208160017_StoreLogoInDatabase', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN EXEC sp_rename N'[AspNetUsers].[ProfilePicturePath]', N'SidebarColor', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN ALTER TABLE [AspNetUsers] ADD [ProfilePictureContentType] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN ALTER TABLE [AspNetUsers] ADD [ProfilePictureData] varbinary(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:43:39.0977992Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:43:39.0978000Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T16:43:39.0978002Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208164341_AddProfilePictureAndSidebarColor' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208164341_AddProfilePictureAndSidebarColor', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN CREATE TABLE [CompanyPreferences] ( [Id] int NOT NULL IDENTITY, [CompanyId] int NOT NULL, [DefaultCurrency] nvarchar(max) NOT NULL, [DefaultDateFormat] nvarchar(max) NOT NULL, [DefaultTimeFormat] nvarchar(max) NOT NULL, [DefaultPaymentTerms] nvarchar(max) NOT NULL, [DefaultQuoteValidityDays] int NOT NULL, [QuoteNumberPrefix] nvarchar(max) NOT NULL, [JobNumberPrefix] nvarchar(max) NOT NULL, [DefaultJobPriority] nvarchar(max) NOT NULL, [RequireCustomerPO] bit NOT NULL, [AllowCustomerApproval] bit NOT NULL, [DefaultTurnaroundDays] int NOT NULL, [EnableSandblastingStep] bit NOT NULL, [EnableMaskingStep] bit NOT NULL, [EmailNotificationsEnabled] bit NOT NULL, [NotifyOnNewJob] bit NOT NULL, [NotifyOnJobStatusChange] bit NOT NULL, [NotifyOnQuoteApproval] bit NOT NULL, [NotifyOnPaymentReceived] bit NOT NULL, [QuoteExpiryWarningDays] int NOT NULL, [DueDateWarningDays] int NOT NULL, [MaintenanceAlertDays] int NOT NULL, [QuoteRetentionYears] int NOT NULL, [JobRetentionYears] int NOT NULL, [LogRetentionDays] int NOT NULL, [AutoArchiveJobsDays] int NOT NULL, [DeletedRecordRetentionDays] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_CompanyPreferences] PRIMARY KEY ([Id]), CONSTRAINT [FK_CompanyPreferences_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T18:14:35.8493756Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T18:14:35.8493760Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T18:14:35.8493762Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN CREATE UNIQUE INDEX [IX_CompanyPreferences_CompanyId] ON [CompanyPreferences] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208181438_AddCompanyPreferences' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208181438_AddCompanyPreferences', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN ALTER TABLE [Customers] ADD [IsTaxExempt] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN ALTER TABLE [Customers] ADD [TaxExemptCertificateContentType] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN ALTER TABLE [Customers] ADD [TaxExemptCertificateData] varbinary(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN ALTER TABLE [Customers] ADD [TaxExemptCertificateFileName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T22:44:23.0992986Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T22:44:23.0992993Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T22:44:23.0992995Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208224426_AddTaxExemptionToCustomer' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208224426_AddTaxExemptionToCustomer', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208230323_AddRushChargePercentage' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [RushChargePercentage] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208230323_AddRushChargePercentage' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:03:20.9733994Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208230323_AddRushChargePercentage' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:03:20.9733999Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208230323_AddRushChargePercentage' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:03:20.9734001Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208230323_AddRushChargePercentage' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208230323_AddRushChargePercentage', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208231408_AddShopMinimumCharge' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [ShopMinimumCharge] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208231408_AddShopMinimumCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:14:05.6375506Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208231408_AddShopMinimumCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:14:05.6375510Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208231408_AddShopMinimumCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-08T23:14:05.6375512Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260208231408_AddShopMinimumCharge' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260208231408_AddShopMinimumCharge', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211002823_AddProfilePictureFilePath' ) BEGIN ALTER TABLE [AspNetUsers] ADD [ProfilePictureFilePath] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211002823_AddProfilePictureFilePath' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:28:19.8975461Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211002823_AddProfilePictureFilePath' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:28:19.8975466Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211002823_AddProfilePictureFilePath' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:28:19.8975469Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211002823_AddProfilePictureFilePath' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211002823_AddProfilePictureFilePath', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN EXEC sp_rename N'[JobPhotos].[PhotoDate]', N'UploadedDate', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN EXEC sp_rename N'[JobPhotos].[Description]', N'Caption', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN DECLARE @var3 sysname; SELECT @var3 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobPhotos]') AND [c].[name] = N'PhotoType'); IF @var3 IS NOT NULL EXEC(N'ALTER TABLE [JobPhotos] DROP CONSTRAINT [' + @var3 + '];'); ALTER TABLE [JobPhotos] ALTER COLUMN [PhotoType] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN ALTER TABLE [JobPhotos] ADD [ContentType] nvarchar(max) NOT NULL DEFAULT N''; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN ALTER TABLE [JobPhotos] ADD [DisplayOrder] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN ALTER TABLE [JobPhotos] ADD [FileSize] bigint NOT NULL DEFAULT CAST(0 AS bigint); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN ALTER TABLE [JobPhotos] ADD [UploadedById] nvarchar(450) NOT NULL DEFAULT N''; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:54:54.2629259Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:54:54.2629263Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T00:54:54.2629265Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN CREATE INDEX [IX_JobPhotos_UploadedById] ON [JobPhotos] ([UploadedById]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN ALTER TABLE [JobPhotos] ADD CONSTRAINT [FK_JobPhotos_AspNetUsers_UploadedById] FOREIGN KEY ([UploadedById]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211005456_UpdateJobPhotoEntity' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211005456_UpdateJobPhotoEntity', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Equipment] ADD [ManualContentType] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Equipment] ADD [ManualFileName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Equipment] ADD [ManualFilePath] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Equipment] ADD [ManualFileSize] bigint NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Equipment] ADD [ManualUploadedDate] datetime2 NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN ALTER TABLE [Companies] ADD [LogoFilePath] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:06:13.9839041Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:06:13.9839046Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:06:13.9839048Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211020617_AddFileSystemStorageForLogosAndManuals' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211020617_AddFileSystemStorageForLogosAndManuals', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE TABLE [CatalogCategories] ( [Id] int NOT NULL IDENTITY, [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [ParentCategoryId] int NULL, [DisplayOrder] int NOT NULL, [IsActive] bit NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_CatalogCategories] PRIMARY KEY ([Id]), CONSTRAINT [FK_CatalogCategories_CatalogCategories_ParentCategoryId] FOREIGN KEY ([ParentCategoryId]) REFERENCES [CatalogCategories] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_CatalogCategories_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE TABLE [CatalogItems] ( [Id] int NOT NULL IDENTITY, [Name] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [SKU] nvarchar(max) NULL, [CategoryId] int NOT NULL, [DefaultPrice] decimal(18,2) NOT NULL, [DefaultRequiresSandblasting] bit NOT NULL, [DefaultRequiresMasking] bit NOT NULL, [DefaultEstimatedMinutes] int NULL, [DisplayOrder] int NOT NULL, [IsActive] bit NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_CatalogItems] PRIMARY KEY ([Id]), CONSTRAINT [FK_CatalogItems_CatalogCategories_CategoryId] FOREIGN KEY ([CategoryId]) REFERENCES [CatalogCategories] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_CatalogItems_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:47:52.8155540Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:47:52.8155546Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T02:47:52.8155548Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE INDEX [IX_CatalogCategories_CompanyId] ON [CatalogCategories] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE INDEX [IX_CatalogCategories_ParentCategoryId] ON [CatalogCategories] ([ParentCategoryId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE INDEX [IX_CatalogItems_CategoryId] ON [CatalogItems] ([CategoryId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN CREATE INDEX [IX_CatalogItems_CompanyId] ON [CatalogItems] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211024755_AddProductCatalog' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211024755_AddProductCatalog', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD [CatalogItemId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T04:38:17.1662142Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T04:38:17.1662149Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T04:38:17.1662151Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN CREATE INDEX [IX_QuoteItems_CatalogItemId] ON [QuoteItems] ([CatalogItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN ALTER TABLE [QuoteItems] ADD CONSTRAINT [FK_QuoteItems_CatalogItems_CatalogItemId] FOREIGN KEY ([CatalogItemId]) REFERENCES [CatalogItems] ([Id]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211043819_AddCatalogItemIdToQuoteItems' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211043819_AddCatalogItemIdToQuoteItems', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var4 sysname; SELECT @var4 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'AdminOverheadPercentage'); IF @var4 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var4 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [AdminOverheadPercentage]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var5 sysname; SELECT @var5 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'ElectricityRatePerKwh'); IF @var5 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var5 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [ElectricityRatePerKwh]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var6 sysname; SELECT @var6 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'FacilityCostPercentage'); IF @var6 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var6 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [FacilityCostPercentage]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var7 sysname; SELECT @var7 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'GasRatePerUnit'); IF @var7 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var7 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [GasRatePerUnit]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var8 sysname; SELECT @var8 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'OvertimeLaborRate'); IF @var8 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var8 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [OvertimeLaborRate]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN DECLARE @var9 sysname; SELECT @var9 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyOperatingCosts]') AND [c].[name] = N'SpecializedLaborRate'); IF @var9 IS NOT NULL EXEC(N'ALTER TABLE [CompanyOperatingCosts] DROP CONSTRAINT [' + @var9 + '];'); ALTER TABLE [CompanyOperatingCosts] DROP COLUMN [SpecializedLaborRate]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN EXEC sp_rename N'[CompanyOperatingCosts].[WaterRatePerUnit]', N'RushChargeFixedAmount', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [RushChargeType] nvarchar(20) NOT NULL DEFAULT N'Percentage'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T19:55:20.0897507Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T19:55:20.0897511Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-11T19:55:20.0897513Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260211195523_UpdateOperatingCostsRushCharge' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260211195523_UpdateOperatingCostsRushCharge', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN ALTER TABLE [Jobs] DROP CONSTRAINT [FK_Jobs_AspNetUsers_AssignedEmployeeId]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DROP INDEX [IX_Jobs_AssignedEmployeeId] ON [Jobs]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var10 sysname; SELECT @var10 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'AIPriceRationale'); IF @var10 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var10 + '];'); ALTER TABLE [Quotes] DROP COLUMN [AIPriceRationale]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var11 sysname; SELECT @var11 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'AISuggestedPrice'); IF @var11 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var11 + '];'); ALTER TABLE [Quotes] DROP COLUMN [AISuggestedPrice]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var12 sysname; SELECT @var12 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'UsedAISuggestion'); IF @var12 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var12 + '];'); ALTER TABLE [Quotes] DROP COLUMN [UsedAISuggestion]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var13 sysname; SELECT @var13 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'Height'); IF @var13 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var13 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [Height]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var14 sysname; SELECT @var14 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'Length'); IF @var14 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var14 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [Length]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var15 sysname; SELECT @var15 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'MeasurementUnit'); IF @var15 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var15 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [MeasurementUnit]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var16 sysname; SELECT @var16 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'Width'); IF @var16 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var16 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [Width]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var17 sysname; SELECT @var17 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'ActualCost'); IF @var17 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var17 + '];'); ALTER TABLE [Jobs] DROP COLUMN [ActualCost]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var18 sysname; SELECT @var18 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'ActualHours'); IF @var18 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var18 + '];'); ALTER TABLE [Jobs] DROP COLUMN [ActualHours]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var19 sysname; SELECT @var19 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'AssignedEmployeeId'); IF @var19 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var19 + '];'); ALTER TABLE [Jobs] DROP COLUMN [AssignedEmployeeId]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var20 sysname; SELECT @var20 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'CustomerApprovedDate'); IF @var20 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var20 + '];'); ALTER TABLE [Jobs] DROP COLUMN [CustomerApprovedDate]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var21 sysname; SELECT @var21 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'EstimatedCost'); IF @var21 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var21 + '];'); ALTER TABLE [Jobs] DROP COLUMN [EstimatedCost]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var22 sysname; SELECT @var22 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'EstimatedHours'); IF @var22 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var22 + '];'); ALTER TABLE [Jobs] DROP COLUMN [EstimatedHours]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var23 sysname; SELECT @var23 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'ActualMinutes'); IF @var23 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var23 + '];'); ALTER TABLE [JobItems] DROP COLUMN [ActualMinutes]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var24 sysname; SELECT @var24 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'Height'); IF @var24 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var24 + '];'); ALTER TABLE [JobItems] DROP COLUMN [Height]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var25 sysname; SELECT @var25 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'Length'); IF @var25 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var25 + '];'); ALTER TABLE [JobItems] DROP COLUMN [Length]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var26 sysname; SELECT @var26 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'MaterialCost'); IF @var26 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var26 + '];'); ALTER TABLE [JobItems] DROP COLUMN [MaterialCost]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var27 sysname; SELECT @var27 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'MeasurementUnit'); IF @var27 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var27 + '];'); ALTER TABLE [JobItems] DROP COLUMN [MeasurementUnit]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var28 sysname; SELECT @var28 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'Weight'); IF @var28 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var28 + '];'); ALTER TABLE [JobItems] DROP COLUMN [Weight]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN DECLARE @var29 sysname; SELECT @var29 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobItems]') AND [c].[name] = N'Width'); IF @var29 IS NOT NULL EXEC(N'ALTER TABLE [JobItems] DROP CONSTRAINT [' + @var29 + '];'); ALTER TABLE [JobItems] DROP COLUMN [Width]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T13:50:54.4827815Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T13:50:54.4827821Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T13:50:54.4827822Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213135057_RemoveUnusedFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260213135057_RemoveUnusedFields', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN ALTER TABLE [Suppliers] ADD [AccountNumber] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN ALTER TABLE [Suppliers] ADD [CreditLimit] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN ALTER TABLE [Suppliers] ADD [IsPreferred] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN ALTER TABLE [Suppliers] ADD [PaymentTerms] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN ALTER TABLE [Suppliers] ADD [TaxId] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T16:25:10.0855660Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T16:25:10.0855668Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T16:25:10.0855669Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213162512_AddSupplierEnhancements' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260213162512_AddSupplierEnhancements', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD [OldStatus] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD [OldPriority] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Quotes] ADD [OldStatus] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD [OldFromStatus] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD [OldToStatus] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE Jobs SET OldStatus = Status, OldPriority = Priority END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE Quotes SET OldStatus = Status END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE JobStatusHistory SET OldFromStatus = FromStatus, OldToStatus = ToStatus END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE TABLE [JobStatusLookups] ( [Id] int NOT NULL IDENTITY, [StatusCode] nvarchar(450) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [ColorClass] nvarchar(max) NOT NULL, [IconClass] nvarchar(max) NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [IsTerminalStatus] bit NOT NULL, [IsWorkInProgressStatus] bit NOT NULL, [Description] nvarchar(max) NULL, [WorkflowCategory] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobStatusLookups] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobStatusLookups_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE TABLE [JobPriorityLookups] ( [Id] int NOT NULL IDENTITY, [PriorityCode] nvarchar(450) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [ColorClass] nvarchar(max) NOT NULL, [IconClass] nvarchar(max) NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [Description] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobPriorityLookups] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobPriorityLookups_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE TABLE [QuoteStatusLookups] ( [Id] int NOT NULL IDENTITY, [StatusCode] nvarchar(450) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [ColorClass] nvarchar(max) NOT NULL, [IconClass] nvarchar(max) NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [IsApprovedStatus] bit NOT NULL, [IsConvertedStatus] bit NOT NULL, [IsDraftStatus] bit NOT NULL, [Description] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuoteStatusLookups] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuoteStatusLookups_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN INSERT INTO JobStatusLookups (StatusCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, IsTerminalStatus, IsWorkInProgressStatus, Description, WorkflowCategory, CompanyId, CreatedAt, IsDeleted) SELECT s.StatusCode, s.DisplayName, s.DisplayOrder, s.ColorClass, s.IconClass, s.IsActive, s.IsSystemDefined, s.IsTerminalStatus, s.IsWorkInProgressStatus, s.Description, s.WorkflowCategory, c.Id, GETUTCDATE(), 0 FROM Companies c CROSS JOIN (VALUES ('PENDING', 'Pending', 1, 'secondary', 'bi-clock', 1, 1, 0, 0, 'Job is pending approval or scheduling', 'Pre-Production'), ('QUOTED', 'Quoted', 2, 'info', 'bi-file-earmark-text', 1, 0, 0, 0, 'Quote has been generated', 'Pre-Production'), ('APPROVED', 'Approved', 3, 'primary', 'bi-check-circle', 1, 0, 0, 0, 'Job has been approved', 'Pre-Production'), ('IN_PREPARATION', 'In Preparation', 4, 'warning', 'bi-tools', 1, 0, 0, 1, 'Job is being prepared', 'Production'), ('SANDBLASTING', 'Sandblasting', 5, 'warning', 'bi-hurricane', 1, 0, 0, 1, 'Surface preparation in progress', 'Production'), ('MASKING_TAPING', 'Masking/Taping', 6, 'warning', 'bi-scissors', 1, 0, 0, 1, 'Masking areas for coating', 'Production'), ('CLEANING', 'Cleaning', 7, 'warning', 'bi-droplet', 1, 0, 0, 1, 'Pre-coat cleaning', 'Production'), ('IN_OVEN', 'In Oven', 8, 'warning', 'bi-thermometer-half', 1, 0, 0, 1, 'Pre-heating in oven', 'Production'), ('COATING', 'Coating', 9, 'warning', 'bi-paint-bucket', 1, 0, 0, 1, 'Applying powder coating', 'Production'), ('CURING', 'Curing', 10, 'warning', 'bi-thermometer-sun', 1, 0, 0, 1, 'Heat curing the coating', 'Production'), ('QUALITY_CHECK', 'Quality Check', 11, 'info', 'bi-search', 1, 0, 0, 1, 'Quality inspection', 'Production'), ('COMPLETED', 'Completed', 12, 'success', 'bi-check-all', 1, 1, 1, 0, 'Job is completed', 'Post-Production'), ('READY_FOR_PICKUP', 'Ready for Pickup', 13, 'success', 'bi-box-seam', 1, 0, 0, 0, 'Ready for customer pickup', 'Post-Production'), ('DELIVERED', 'Delivered', 14, 'success', 'bi-truck', 1, 0, 1, 0, 'Delivered to customer', 'Post-Production'), ('ON_HOLD', 'On Hold', 15, 'dark', 'bi-pause-circle', 1, 0, 0, 0, 'Job is temporarily on hold', 'Other'), ('CANCELLED', 'Cancelled', 16, 'danger', 'bi-x-circle', 1, 1, 1, 0, 'Job has been cancelled', 'Other') ) AS s(StatusCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, IsTerminalStatus, IsWorkInProgressStatus, Description, WorkflowCategory) WHERE c.IsDeleted = 0 END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN INSERT INTO JobPriorityLookups (PriorityCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, Description, CompanyId, CreatedAt, IsDeleted) SELECT p.PriorityCode, p.DisplayName, p.DisplayOrder, p.ColorClass, p.IconClass, p.IsActive, p.IsSystemDefined, p.Description, c.Id, GETUTCDATE(), 0 FROM Companies c CROSS JOIN (VALUES ('LOW', 'Low', 1, 'secondary', 'bi-arrow-down', 1, 0, 'Low priority job'), ('NORMAL', 'Normal', 2, 'primary', NULL, 1, 1, 'Standard priority job'), ('HIGH', 'High', 3, 'info', 'bi-arrow-up', 1, 0, 'High priority job'), ('URGENT', 'Urgent', 4, 'warning', 'bi-exclamation-triangle', 1, 0, 'Urgent job - expedited processing'), ('RUSH', 'Rush', 5, 'danger', 'bi-lightning', 1, 0, 'Rush job - immediate processing required') ) AS p(PriorityCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, Description) WHERE c.IsDeleted = 0 END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN INSERT INTO QuoteStatusLookups (StatusCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, IsApprovedStatus, IsConvertedStatus, IsDraftStatus, Description, CompanyId, CreatedAt, IsDeleted) SELECT qs.StatusCode, qs.DisplayName, qs.DisplayOrder, qs.ColorClass, qs.IconClass, qs.IsActive, qs.IsSystemDefined, qs.IsApprovedStatus, qs.IsConvertedStatus, qs.IsDraftStatus, qs.Description, c.Id, GETUTCDATE(), 0 FROM Companies c CROSS JOIN (VALUES ('DRAFT', 'Draft', 1, 'secondary', 'bi-pencil', 1, 1, 0, 0, 1, 'Quote is being drafted'), ('SENT', 'Sent', 2, 'info', 'bi-send', 1, 0, 0, 0, 0, 'Quote has been sent to customer'), ('APPROVED', 'Approved', 3, 'success', 'bi-check-circle', 1, 1, 1, 0, 0, 'Quote has been approved by customer'), ('REJECTED', 'Rejected', 4, 'danger', 'bi-x-circle', 1, 0, 0, 0, 0, 'Quote was rejected by customer'), ('EXPIRED', 'Expired', 5, 'dark', 'bi-clock-history', 1, 0, 0, 0, 0, 'Quote has expired'), ('CONVERTED', 'Converted', 6, 'primary', 'bi-arrow-right-circle', 1, 1, 0, 1, 0, 'Quote has been converted to job'), ('REVISED', 'Revised', 7, 'warning', 'bi-arrow-clockwise', 1, 0, 0, 0, 0, 'Quote is being revised') ) AS qs(StatusCode, DisplayName, DisplayOrder, ColorClass, IconClass, IsActive, IsSystemDefined, IsApprovedStatus, IsConvertedStatus, IsDraftStatus, Description) WHERE c.IsDeleted = 0 END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC sp_rename N'[Jobs].[Status]', N'JobStatusId_OLD', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC sp_rename N'[Jobs].[Priority]', N'JobPriorityId_OLD', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC sp_rename N'[Quotes].[Status]', N'QuoteStatusId_OLD', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC sp_rename N'[JobStatusHistory].[FromStatus]', N'FromStatusId_OLD', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC sp_rename N'[JobStatusHistory].[ToStatus]', N'ToStatusId_OLD', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD [JobStatusId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD [JobPriorityId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Quotes] ADD [QuoteStatusId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD [FromStatusId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD [ToStatusId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE j SET j.JobStatusId = s.Id FROM Jobs j INNER JOIN JobStatusLookups s ON j.CompanyId = s.CompanyId WHERE s.StatusCode = CASE j.OldStatus WHEN 0 THEN 'PENDING' WHEN 1 THEN 'QUOTED' WHEN 2 THEN 'APPROVED' WHEN 3 THEN 'IN_PREPARATION' WHEN 4 THEN 'SANDBLASTING' WHEN 5 THEN 'MASKING_TAPING' WHEN 6 THEN 'CLEANING' WHEN 7 THEN 'IN_OVEN' WHEN 8 THEN 'COATING' WHEN 9 THEN 'CURING' WHEN 10 THEN 'QUALITY_CHECK' WHEN 11 THEN 'COMPLETED' WHEN 12 THEN 'READY_FOR_PICKUP' WHEN 13 THEN 'DELIVERED' WHEN 14 THEN 'ON_HOLD' WHEN 15 THEN 'CANCELLED' END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE j SET j.JobPriorityId = p.Id FROM Jobs j INNER JOIN JobPriorityLookups p ON j.CompanyId = p.CompanyId WHERE p.PriorityCode = CASE j.OldPriority WHEN 0 THEN 'LOW' WHEN 1 THEN 'NORMAL' WHEN 2 THEN 'HIGH' WHEN 3 THEN 'URGENT' WHEN 4 THEN 'RUSH' END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE q SET q.QuoteStatusId = s.Id FROM Quotes q INNER JOIN QuoteStatusLookups s ON q.CompanyId = s.CompanyId WHERE s.StatusCode = CASE q.OldStatus WHEN 0 THEN 'DRAFT' WHEN 1 THEN 'SENT' WHEN 2 THEN 'APPROVED' WHEN 3 THEN 'REJECTED' WHEN 4 THEN 'EXPIRED' WHEN 5 THEN 'CONVERTED' WHEN 6 THEN 'REVISED' END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE h SET h.FromStatusId = s.Id FROM JobStatusHistory h INNER JOIN Jobs j ON h.JobId = j.Id INNER JOIN JobStatusLookups s ON j.CompanyId = s.CompanyId WHERE s.StatusCode = CASE h.OldFromStatus WHEN 0 THEN 'PENDING' WHEN 1 THEN 'QUOTED' WHEN 2 THEN 'APPROVED' WHEN 3 THEN 'IN_PREPARATION' WHEN 4 THEN 'SANDBLASTING' WHEN 5 THEN 'MASKING_TAPING' WHEN 6 THEN 'CLEANING' WHEN 7 THEN 'IN_OVEN' WHEN 8 THEN 'COATING' WHEN 9 THEN 'CURING' WHEN 10 THEN 'QUALITY_CHECK' WHEN 11 THEN 'COMPLETED' WHEN 12 THEN 'READY_FOR_PICKUP' WHEN 13 THEN 'DELIVERED' WHEN 14 THEN 'ON_HOLD' WHEN 15 THEN 'CANCELLED' END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN UPDATE h SET h.ToStatusId = s.Id FROM JobStatusHistory h INNER JOIN Jobs j ON h.JobId = j.Id INNER JOIN JobStatusLookups s ON j.CompanyId = s.CompanyId WHERE s.StatusCode = CASE h.OldToStatus WHEN 0 THEN 'PENDING' WHEN 1 THEN 'QUOTED' WHEN 2 THEN 'APPROVED' WHEN 3 THEN 'IN_PREPARATION' WHEN 4 THEN 'SANDBLASTING' WHEN 5 THEN 'MASKING_TAPING' WHEN 6 THEN 'CLEANING' WHEN 7 THEN 'IN_OVEN' WHEN 8 THEN 'COATING' WHEN 9 THEN 'CURING' WHEN 10 THEN 'QUALITY_CHECK' WHEN 11 THEN 'COMPLETED' WHEN 12 THEN 'READY_FOR_PICKUP' WHEN 13 THEN 'DELIVERED' WHEN 14 THEN 'ON_HOLD' WHEN 15 THEN 'CANCELLED' END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var30 sysname; SELECT @var30 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'JobStatusId'); IF @var30 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var30 + '];'); ALTER TABLE [Jobs] ALTER COLUMN [JobStatusId] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var31 sysname; SELECT @var31 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'JobPriorityId'); IF @var31 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var31 + '];'); ALTER TABLE [Jobs] ALTER COLUMN [JobPriorityId] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var32 sysname; SELECT @var32 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'QuoteStatusId'); IF @var32 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var32 + '];'); ALTER TABLE [Quotes] ALTER COLUMN [QuoteStatusId] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var33 sysname; SELECT @var33 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'FromStatusId'); IF @var33 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var33 + '];'); ALTER TABLE [JobStatusHistory] ALTER COLUMN [FromStatusId] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var34 sysname; SELECT @var34 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'ToStatusId'); IF @var34 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var34 + '];'); ALTER TABLE [JobStatusHistory] ALTER COLUMN [ToStatusId] int NOT NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_Jobs_JobStatusId] ON [Jobs] ([JobStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_Jobs_JobPriorityId] ON [Jobs] ([JobPriorityId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_Quotes_QuoteStatusId] ON [Quotes] ([QuoteStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_JobStatusHistory_FromStatusId] ON [JobStatusHistory] ([FromStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_JobStatusHistory_ToStatusId] ON [JobStatusHistory] ([ToStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_JobStatusLookups_CompanyId] ON [JobStatusLookups] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE UNIQUE INDEX [IX_JobStatusLookups_CompanyId_StatusCode] ON [JobStatusLookups] ([CompanyId], [StatusCode]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_JobPriorityLookups_CompanyId] ON [JobPriorityLookups] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE UNIQUE INDEX [IX_JobPriorityLookups_CompanyId_PriorityCode] ON [JobPriorityLookups] ([CompanyId], [PriorityCode]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE INDEX [IX_QuoteStatusLookups_CompanyId] ON [QuoteStatusLookups] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN CREATE UNIQUE INDEX [IX_QuoteStatusLookups_CompanyId_StatusCode] ON [QuoteStatusLookups] ([CompanyId], [StatusCode]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_JobStatusLookups_JobStatusId] FOREIGN KEY ([JobStatusId]) REFERENCES [JobStatusLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_JobPriorityLookups_JobPriorityId] FOREIGN KEY ([JobPriorityId]) REFERENCES [JobPriorityLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [Quotes] ADD CONSTRAINT [FK_Quotes_QuoteStatusLookups_QuoteStatusId] FOREIGN KEY ([QuoteStatusId]) REFERENCES [QuoteStatusLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_FromStatusId] FOREIGN KEY ([FromStatusId]) REFERENCES [JobStatusLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN ALTER TABLE [JobStatusHistory] ADD CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_ToStatusId] FOREIGN KEY ([ToStatusId]) REFERENCES [JobStatusLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var35 sysname; SELECT @var35 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'OldStatus'); IF @var35 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var35 + '];'); ALTER TABLE [Jobs] DROP COLUMN [OldStatus]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var36 sysname; SELECT @var36 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'OldPriority'); IF @var36 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var36 + '];'); ALTER TABLE [Jobs] DROP COLUMN [OldPriority]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var37 sysname; SELECT @var37 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'OldStatus'); IF @var37 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var37 + '];'); ALTER TABLE [Quotes] DROP COLUMN [OldStatus]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var38 sysname; SELECT @var38 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'OldFromStatus'); IF @var38 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var38 + '];'); ALTER TABLE [JobStatusHistory] DROP COLUMN [OldFromStatus]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var39 sysname; SELECT @var39 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'OldToStatus'); IF @var39 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var39 + '];'); ALTER TABLE [JobStatusHistory] DROP COLUMN [OldToStatus]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var40 sysname; SELECT @var40 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'JobStatusId_OLD'); IF @var40 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var40 + '];'); ALTER TABLE [Jobs] DROP COLUMN [JobStatusId_OLD]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var41 sysname; SELECT @var41 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Jobs]') AND [c].[name] = N'JobPriorityId_OLD'); IF @var41 IS NOT NULL EXEC(N'ALTER TABLE [Jobs] DROP CONSTRAINT [' + @var41 + '];'); ALTER TABLE [Jobs] DROP COLUMN [JobPriorityId_OLD]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var42 sysname; SELECT @var42 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Quotes]') AND [c].[name] = N'QuoteStatusId_OLD'); IF @var42 IS NOT NULL EXEC(N'ALTER TABLE [Quotes] DROP CONSTRAINT [' + @var42 + '];'); ALTER TABLE [Quotes] DROP COLUMN [QuoteStatusId_OLD]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var43 sysname; SELECT @var43 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'FromStatusId_OLD'); IF @var43 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var43 + '];'); ALTER TABLE [JobStatusHistory] DROP COLUMN [FromStatusId_OLD]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN DECLARE @var44 sysname; SELECT @var44 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[JobStatusHistory]') AND [c].[name] = N'ToStatusId_OLD'); IF @var44 IS NOT NULL EXEC(N'ALTER TABLE [JobStatusHistory] DROP CONSTRAINT [' + @var44 + '];'); ALTER TABLE [JobStatusHistory] DROP COLUMN [ToStatusId_OLD]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T18:39:09.9091116Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T18:39:09.9091124Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-13T18:39:09.9091127Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260213183913_ConvertEnumsToLookupTables' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260213183913_ConvertEnumsToLookupTables', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214023832_AddShopSuppliesRateToOperatingCosts' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [ShopSuppliesRate] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214023832_AddShopSuppliesRateToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T02:38:28.7266427Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214023832_AddShopSuppliesRateToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T02:38:28.7266433Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214023832_AddShopSuppliesRateToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T02:38:28.7266437Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214023832_AddShopSuppliesRateToOperatingCosts' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214023832_AddShopSuppliesRateToOperatingCosts', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN ALTER TABLE [InventoryItems] ADD [InventoryCategoryId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN CREATE TABLE [InventoryCategoryLookups] ( [Id] int NOT NULL IDENTITY, [CategoryCode] nvarchar(450) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [Description] nvarchar(max) NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_InventoryCategoryLookups] PRIMARY KEY ([Id]), CONSTRAINT [FK_InventoryCategoryLookups_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:18:25.8821520Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:18:25.8821525Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:18:25.8821527Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN INSERT INTO InventoryCategoryLookups (CategoryCode, DisplayName, DisplayOrder, IsActive, IsSystemDefined, CompanyId, CreatedAt, IsDeleted) SELECT 'POWDER', 'Powder', 1, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'PRIMER', 'Primer', 2, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'CLEANER', 'Cleaner', 3, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'MASKING', 'Masking Supplies', 4, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'ABRASIVE', 'Abrasive Media', 5, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'CHEMICAL', 'Chemicals', 6, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'CONSUMABLE', 'Consumables', 7, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'TOOL', 'Tools', 8, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c UNION ALL SELECT 'OTHER', 'Other', 9, 1, 1, c.Id, GETUTCDATE(), 0 FROM Companies c END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN UPDATE i SET i.InventoryCategoryId = c.Id FROM InventoryItems i INNER JOIN InventoryCategoryLookups c ON i.CompanyId = c.CompanyId WHERE i.Category = 'Powder' AND c.CategoryCode = 'POWDER' OR i.Category = 'Primer' AND c.CategoryCode = 'PRIMER' OR i.Category = 'Cleaner' AND c.CategoryCode = 'CLEANER' OR i.Category = 'Masking' AND c.CategoryCode = 'MASKING' OR i.Category = 'Abrasive' AND c.CategoryCode = 'ABRASIVE' OR i.Category = 'Chemical' AND c.CategoryCode = 'CHEMICAL' OR i.Category = 'Consumable' AND c.CategoryCode = 'CONSUMABLE' OR i.Category = 'Tool' AND c.CategoryCode = 'TOOL' OR i.Category = 'Other' AND c.CategoryCode = 'OTHER' END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN CREATE INDEX [IX_InventoryItems_InventoryCategoryId] ON [InventoryItems] ([InventoryCategoryId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN CREATE INDEX [IX_InventoryCategoryLookups_CompanyId] ON [InventoryCategoryLookups] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN CREATE UNIQUE INDEX [IX_InventoryCategoryLookups_CompanyId_CategoryCode] ON [InventoryCategoryLookups] ([CompanyId], [CategoryCode]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN ALTER TABLE [InventoryItems] ADD CONSTRAINT [FK_InventoryItems_InventoryCategoryLookups_InventoryCategoryId] FOREIGN KEY ([InventoryCategoryId]) REFERENCES [InventoryCategoryLookups] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214041829_AddInventoryCategoryLookup' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214041829_AddInventoryCategoryLookup', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214044605_AddIsCoatingToInventoryCategory' ) BEGIN ALTER TABLE [InventoryCategoryLookups] ADD [IsCoating] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214044605_AddIsCoatingToInventoryCategory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:46:02.4897150Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214044605_AddIsCoatingToInventoryCategory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:46:02.4897155Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214044605_AddIsCoatingToInventoryCategory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T04:46:02.4897157Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214044605_AddIsCoatingToInventoryCategory' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214044605_AddIsCoatingToInventoryCategory', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN CREATE TABLE [QuoteChangeHistories] ( [Id] int NOT NULL IDENTITY, [QuoteId] int NOT NULL, [ChangedByUserId] nvarchar(450) NOT NULL, [ChangedAt] datetime2 NOT NULL, [FieldName] nvarchar(max) NOT NULL, [OldValue] nvarchar(max) NULL, [NewValue] nvarchar(max) NULL, [ChangeDescription] nvarchar(max) NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuoteChangeHistories] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuoteChangeHistories_AspNetUsers_ChangedByUserId] FOREIGN KEY ([ChangedByUserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteChangeHistories_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteChangeHistories_Quotes_QuoteId] FOREIGN KEY ([QuoteId]) REFERENCES [Quotes] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T16:34:11.9752246Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T16:34:11.9752252Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T16:34:11.9752254Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN CREATE INDEX [IX_QuoteChangeHistories_ChangedByUserId] ON [QuoteChangeHistories] ([ChangedByUserId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN CREATE INDEX [IX_QuoteChangeHistories_CompanyId] ON [QuoteChangeHistories] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN CREATE INDEX [IX_QuoteChangeHistories_QuoteId] ON [QuoteChangeHistories] ([QuoteId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214163415_AddQuoteChangeHistory' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214163415_AddQuoteChangeHistory', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN CREATE TABLE [JobChangeHistories] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [ChangedByUserId] nvarchar(450) NOT NULL, [ChangedAt] datetime2 NOT NULL, [FieldName] nvarchar(max) NOT NULL, [OldValue] nvarchar(max) NULL, [NewValue] nvarchar(max) NULL, [ChangeDescription] nvarchar(max) NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobChangeHistories] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobChangeHistories_AspNetUsers_ChangedByUserId] FOREIGN KEY ([ChangedByUserId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_JobChangeHistories_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_JobChangeHistories_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T17:09:52.0923949Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T17:09:52.0923957Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T17:09:52.0923959Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN CREATE INDEX [IX_JobChangeHistories_ChangedByUserId] ON [JobChangeHistories] ([ChangedByUserId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN CREATE INDEX [IX_JobChangeHistories_CompanyId] ON [JobChangeHistories] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN CREATE INDEX [IX_JobChangeHistories_JobId] ON [JobChangeHistories] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214170954_AddJobChangeHistory' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214170954_AddJobChangeHistory', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214182904_AddMetricSystemPreference' ) BEGIN ALTER TABLE [CompanyPreferences] ADD [UseMetricSystem] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214182904_AddMetricSystemPreference' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T18:29:01.4505899Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214182904_AddMetricSystemPreference' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T18:29:01.4505906Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214182904_AddMetricSystemPreference' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T18:29:01.4505907Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214182904_AddMetricSystemPreference' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214182904_AddMetricSystemPreference', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE TABLE [AppointmentStatusLookups] ( [Id] int NOT NULL IDENTITY, [StatusCode] nvarchar(max) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [ColorClass] nvarchar(max) NOT NULL, [IconClass] nvarchar(max) NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [IsTerminalStatus] bit NOT NULL, [Description] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_AppointmentStatusLookups] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE TABLE [AppointmentTypeLookups] ( [Id] int NOT NULL IDENTITY, [TypeCode] nvarchar(max) NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [DisplayOrder] int NOT NULL, [ColorClass] nvarchar(max) NOT NULL, [IconClass] nvarchar(max) NULL, [RequiresJobLink] bit NOT NULL, [IsActive] bit NOT NULL, [IsSystemDefined] bit NOT NULL, [Description] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_AppointmentTypeLookups] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE TABLE [Appointments] ( [Id] int NOT NULL IDENTITY, [AppointmentNumber] nvarchar(max) NOT NULL, [Title] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [CustomerId] int NOT NULL, [JobId] int NULL, [AppointmentStatusId] int NOT NULL, [AppointmentTypeId] int NOT NULL, [AssignedWorkerId] int NULL, [ScheduledStartTime] datetime2 NOT NULL, [ScheduledEndTime] datetime2 NOT NULL, [IsAllDay] bit NOT NULL, [ActualStartTime] datetime2 NULL, [ActualEndTime] datetime2 NULL, [Location] nvarchar(max) NULL, [Notes] nvarchar(max) NULL, [IsReminderEnabled] bit NOT NULL, [ReminderMinutesBefore] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_Appointments] PRIMARY KEY ([Id]), CONSTRAINT [FK_Appointments_AppointmentStatusLookups_AppointmentStatusId] FOREIGN KEY ([AppointmentStatusId]) REFERENCES [AppointmentStatusLookups] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_Appointments_AppointmentTypeLookups_AppointmentTypeId] FOREIGN KEY ([AppointmentTypeId]) REFERENCES [AppointmentTypeLookups] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_Appointments_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_Appointments_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]), CONSTRAINT [FK_Appointments_ShopWorkers_AssignedWorkerId] FOREIGN KEY ([AssignedWorkerId]) REFERENCES [ShopWorkers] ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T22:13:31.2633342Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T22:13:31.2633348Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-14T22:13:31.2633349Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE INDEX [IX_Appointments_AppointmentStatusId] ON [Appointments] ([AppointmentStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE INDEX [IX_Appointments_AppointmentTypeId] ON [Appointments] ([AppointmentTypeId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE INDEX [IX_Appointments_AssignedWorkerId] ON [Appointments] ([AssignedWorkerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE INDEX [IX_Appointments_CustomerId] ON [Appointments] ([CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN CREATE INDEX [IX_Appointments_JobId] ON [Appointments] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260214221334_AddAppointmentScheduling' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260214221334_AddAppointmentScheduling', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN ALTER TABLE [Appointments] DROP CONSTRAINT [FK_Appointments_Customers_CustomerId]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN DECLARE @var45 sysname; SELECT @var45 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Appointments]') AND [c].[name] = N'CustomerId'); IF @var45 IS NOT NULL EXEC(N'ALTER TABLE [Appointments] DROP CONSTRAINT [' + @var45 + '];'); ALTER TABLE [Appointments] ALTER COLUMN [CustomerId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:05:25.6925144Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:05:25.6925153Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:05:25.6925155Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN ALTER TABLE [Appointments] ADD CONSTRAINT [FK_Appointments_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215000528_MakeAppointmentCustomerIdOptional' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215000528_MakeAppointmentCustomerIdOptional', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanManageCalendar] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanManageEquipment] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanManageMaintenance] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanManageProducts] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanManageSuppliers] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanViewCalendar] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN ALTER TABLE [AspNetUsers] ADD [CanViewProducts] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:34:41.2332987Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:34:41.2332995Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T00:34:41.2332997Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215003444_AddAdditionalUserPermissions' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215003444_AddAdditionalUserPermissions', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN DROP INDEX [IX_JobPhotos_JobId] ON [JobPhotos]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN DROP INDEX [IX_JobNotes_JobId] ON [JobNotes]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN DROP INDEX [IX_CustomerNotes_CustomerId] ON [CustomerNotes]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T05:05:35.3159644Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T05:05:35.3159650Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T05:05:35.3159652Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Quotes_CompanyId_ExpirationDate] ON [Quotes] ([CompanyId], [ExpirationDate]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Quotes_CompanyId_QuoteStatusId] ON [Quotes] ([CompanyId], [QuoteStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_CompanyId_ScheduledDate] ON [MaintenanceRecords] ([CompanyId], [ScheduledDate]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_CompanyId_Status] ON [MaintenanceRecords] ([CompanyId], [Status]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId_CustomerId] ON [Jobs] ([CompanyId], [CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId_DueDate] ON [Jobs] ([CompanyId], [DueDate]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId_JobPriorityId] ON [Jobs] ([CompanyId], [JobPriorityId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId_JobStatusId] ON [Jobs] ([CompanyId], [JobStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Jobs_CompanyId_ScheduledDate] ON [Jobs] ([CompanyId], [ScheduledDate]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_JobPhotos_JobId_IsDeleted_DisplayOrder] ON [JobPhotos] ([JobId], [IsDeleted], [DisplayOrder]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_JobNotes_JobId_CreatedAt] ON [JobNotes] ([JobId], [CreatedAt]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_JobItems_JobId_IsDeleted] ON [JobItems] ([JobId], [IsDeleted]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_InventoryItems_CompanyId_Quantity_Reorder] ON [InventoryItems] ([CompanyId], [QuantityOnHand], [ReorderPoint]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Equipment_CompanyId_Status] ON [Equipment] ([CompanyId], [Status]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_CustomerNotes_CustomerId_CreatedAt] ON [CustomerNotes] ([CustomerId], [CreatedAt]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Appointments_CompanyId_AppointmentStatusId] ON [Appointments] ([CompanyId], [AppointmentStatusId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN CREATE INDEX [IX_Appointments_CompanyId_ScheduledStartTime] ON [Appointments] ([CompanyId], [ScheduledStartTime]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215050538_AddPerformanceIndexes' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215050538_AddPerformanceIndexes', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN ALTER TABLE [QuoteItems] DROP CONSTRAINT [FK_QuoteItems_InventoryItems_InventoryItemId]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DROP INDEX [IX_QuoteItems_InventoryItemId] ON [QuoteItems]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DECLARE @var46 sysname; SELECT @var46 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'ColorCode'); IF @var46 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var46 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [ColorCode]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DECLARE @var47 sysname; SELECT @var47 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'ColorName'); IF @var47 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var47 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [ColorName]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DECLARE @var48 sysname; SELECT @var48 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'Finish'); IF @var48 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var48 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [Finish]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DECLARE @var49 sysname; SELECT @var49 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'InventoryItemId'); IF @var49 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var49 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [InventoryItemId]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN DECLARE @var50 sysname; SELECT @var50 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[QuoteItems]') AND [c].[name] = N'PowderCostOverride'); IF @var50 IS NOT NULL EXEC(N'ALTER TABLE [QuoteItems] DROP CONSTRAINT [' + @var50 + '];'); ALTER TABLE [QuoteItems] DROP COLUMN [PowderCostOverride]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN CREATE TABLE [QuoteItemCoats] ( [Id] int NOT NULL IDENTITY, [QuoteItemId] int NOT NULL, [CoatName] nvarchar(max) NOT NULL, [Sequence] int NOT NULL, [InventoryItemId] int NULL, [ColorName] nvarchar(max) NULL, [ColorCode] nvarchar(max) NULL, [Finish] nvarchar(max) NULL, [CoverageSqFtPerLb] decimal(18,2) NOT NULL, [TransferEfficiency] decimal(18,2) NOT NULL, [PowderCostPerLb] decimal(18,2) NULL, [CoatMaterialCost] decimal(18,2) NOT NULL, [CoatLaborCost] decimal(18,2) NOT NULL, [CoatTotalCost] decimal(18,2) NOT NULL, [Notes] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuoteItemCoats] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuoteItemCoats_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteItemCoats_InventoryItems_InventoryItemId] FOREIGN KEY ([InventoryItemId]) REFERENCES [InventoryItems] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteItemCoats_QuoteItems_QuoteItemId] FOREIGN KEY ([QuoteItemId]) REFERENCES [QuoteItems] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T15:49:00.4799039Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T15:49:00.4799044Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T15:49:00.4799046Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN CREATE INDEX [IX_QuoteItemCoats_CompanyId] ON [QuoteItemCoats] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN CREATE INDEX [IX_QuoteItemCoats_InventoryItemId] ON [QuoteItemCoats] ([InventoryItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN CREATE INDEX [IX_QuoteItemCoats_QuoteItemId] ON [QuoteItemCoats] ([QuoteItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215154903_AddQuoteItemCoatsSupport' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215154903_AddQuoteItemCoatsSupport', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN ALTER TABLE [QuoteItemCoats] ADD [PowderToOrder] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN ALTER TABLE [QuoteItemCoats] ADD [SupplierId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:06:37.5359459Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:06:37.5359465Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:06:37.5359467Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN CREATE INDEX [IX_QuoteItemCoats_SupplierId] ON [QuoteItemCoats] ([SupplierId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN ALTER TABLE [QuoteItemCoats] ADD CONSTRAINT [FK_QuoteItemCoats_Suppliers_SupplierId] FOREIGN KEY ([SupplierId]) REFERENCES [Suppliers] ([Id]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215230641_AddPowderToOrderAndSupplierIdToQuoteItemCoat', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts' ) BEGIN ALTER TABLE [CompanyOperatingCosts] ADD [AdditionalCoatLaborPercent] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:41:19.8949787Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:41:19.8949795Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-15T23:41:19.8949841Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260215234122_AddAdditionalCoatLaborPercentToOperatingCosts', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260216011141_AddInternalNotesToJob' ) BEGIN ALTER TABLE [Jobs] ADD [InternalNotes] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260216011141_AddInternalNotesToJob' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-16T01:11:38.6019819Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260216011141_AddInternalNotesToJob' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-16T01:11:38.6019882Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260216011141_AddInternalNotesToJob' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-16T01:11:38.6019883Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260216011141_AddInternalNotesToJob' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260216011141_AddInternalNotesToJob', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN DROP INDEX [IX_Customers_Email] ON [Customers]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T01:53:11.9190829Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T01:53:11.9190834Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T01:53:11.9190836Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN EXEC(N'CREATE UNIQUE INDEX [IX_Customers_CompanyId_Email] ON [Customers] ([CompanyId], [Email]) WHERE [Email] IS NOT NULL'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217015314_FixCustomerEmailUniqueIndex' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260217015314_FixCustomerEmailUniqueIndex', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN ALTER TABLE [Jobs] ADD [ActualTimeSpentHours] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN CREATE TABLE [JobItemCoats] ( [Id] int NOT NULL IDENTITY, [JobItemId] int NOT NULL, [CoatName] nvarchar(max) NOT NULL, [Sequence] int NOT NULL, [InventoryItemId] int NULL, [ColorName] nvarchar(max) NULL, [SupplierId] int NULL, [ColorCode] nvarchar(max) NULL, [Finish] nvarchar(max) NULL, [CoverageSqFtPerLb] decimal(18,2) NOT NULL, [TransferEfficiency] decimal(18,2) NOT NULL, [PowderCostPerLb] decimal(18,2) NULL, [PowderToOrder] decimal(18,2) NULL, [ActualPowderUsedLbs] decimal(18,2) NULL, [Notes] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobItemCoats] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobItemCoats_InventoryItems_InventoryItemId] FOREIGN KEY ([InventoryItemId]) REFERENCES [InventoryItems] ([Id]), CONSTRAINT [FK_JobItemCoats_JobItems_JobItemId] FOREIGN KEY ([JobItemId]) REFERENCES [JobItems] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_JobItemCoats_Suppliers_SupplierId] FOREIGN KEY ([SupplierId]) REFERENCES [Suppliers] ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T03:17:51.7026263Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T03:17:51.7026268Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T03:17:51.7026270Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN CREATE INDEX [IX_JobItemCoats_InventoryItemId] ON [JobItemCoats] ([InventoryItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN CREATE INDEX [IX_JobItemCoats_JobItemId] ON [JobItemCoats] ([JobItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN CREATE INDEX [IX_JobItemCoats_SupplierId] ON [JobItemCoats] ([SupplierId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217031754_AddJobItemCoatEntity' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260217031754_AddJobItemCoatEntity', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN ALTER TABLE [Quotes] ADD [DiscountReason] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN ALTER TABLE [Quotes] ADD [DiscountType] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN ALTER TABLE [Quotes] ADD [DiscountValue] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T05:23:38.1735311Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T05:23:38.1735344Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T05:23:38.1735347Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217052340_AddQuoteDiscountFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260217052340_AddQuoteDiscountFields', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN CREATE TABLE [JobDailyPriorities] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [ScheduledDate] datetime2 NOT NULL, [DisplayOrder] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobDailyPriorities] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobDailyPriorities_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T17:05:51.5460473Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T17:05:51.5460480Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T17:05:51.5460482Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN CREATE INDEX [IX_JobDailyPriorities_JobId] ON [JobDailyPriorities] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217170554_AddJobDailyPriority' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260217170554_AddJobDailyPriority', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN ALTER TABLE [Quotes] ADD [IsRushJob] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN ALTER TABLE [Quotes] ADD [RushFee] decimal(18,2) NOT NULL DEFAULT 0.0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T18:54:27.7742836Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T18:54:27.7742841Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-17T18:54:27.7742843Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260217185430_AddRushJobToQuote' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260217185430_AddRushJobToQuote', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218004437_AddPrepServicesTable' ) BEGIN CREATE TABLE [PrepServices] ( [Id] int NOT NULL IDENTITY, [ServiceName] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [DisplayOrder] int NOT NULL, [IsActive] bit NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_PrepServices] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218004437_AddPrepServicesTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T00:44:34.4266737Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218004437_AddPrepServicesTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T00:44:34.4266742Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218004437_AddPrepServicesTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T00:44:34.4266788Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218004437_AddPrepServicesTable' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260218004437_AddPrepServicesTable', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN CREATE TABLE [QuotePrepServices] ( [Id] int NOT NULL IDENTITY, [QuoteId] int NOT NULL, [PrepServiceId] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuotePrepServices] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuotePrepServices_PrepServices_PrepServiceId] FOREIGN KEY ([PrepServiceId]) REFERENCES [PrepServices] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_QuotePrepServices_Quotes_QuoteId] FOREIGN KEY ([QuoteId]) REFERENCES [Quotes] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:01:25.3203798Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:01:25.3203805Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:01:25.3203807Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN CREATE INDEX [IX_QuotePrepServices_PrepServiceId] ON [QuotePrepServices] ([PrepServiceId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN CREATE INDEX [IX_QuotePrepServices_QuoteId] ON [QuotePrepServices] ([QuoteId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218010128_AddQuotePrepServiceRelationship' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260218010128_AddQuotePrepServiceRelationship', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN CREATE TABLE [JobPrepServices] ( [Id] int NOT NULL IDENTITY, [JobId] int NOT NULL, [PrepServiceId] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_JobPrepServices] PRIMARY KEY ([Id]), CONSTRAINT [FK_JobPrepServices_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE CASCADE, CONSTRAINT [FK_JobPrepServices_PrepServices_PrepServiceId] FOREIGN KEY ([PrepServiceId]) REFERENCES [PrepServices] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:28:57.6058224Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:28:57.6058229Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T01:28:57.6058231Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN CREATE INDEX [IX_JobPrepServices_JobId] ON [JobPrepServices] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN CREATE INDEX [IX_JobPrepServices_PrepServiceId] ON [JobPrepServices] ([PrepServiceId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218012900_AddJobPrepServices' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260218012900_AddJobPrepServices', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218023413_AddApproximateAreaToCatalogItem' ) BEGIN ALTER TABLE [CatalogItems] ADD [ApproximateArea] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218023413_AddApproximateAreaToCatalogItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T02:34:09.3788277Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218023413_AddApproximateAreaToCatalogItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T02:34:09.3788282Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218023413_AddApproximateAreaToCatalogItem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-18T02:34:09.3788284Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260218023413_AddApproximateAreaToCatalogItem' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260218023413_AddApproximateAreaToCatalogItem', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [IsRecurring] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [RecurrenceEndDate] datetime2 NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [RecurrenceFrequency] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [RecurrenceGroupId] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD [RecurrenceParentId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-19T14:11:02.7803625Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-19T14:11:02.7803630Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-19T14:11:02.7803632Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN CREATE INDEX [IX_MaintenanceRecords_RecurrenceParentId] ON [MaintenanceRecords] ([RecurrenceParentId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN ALTER TABLE [MaintenanceRecords] ADD CONSTRAINT [FK_MaintenanceRecords_MaintenanceRecords_RecurrenceParentId] FOREIGN KEY ([RecurrenceParentId]) REFERENCES [MaintenanceRecords] ([Id]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260219141105_AddMaintenanceRecurrence' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260219141105_AddMaintenanceRecurrence', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN ALTER TABLE [Quotes] ADD [OvenCostId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN CREATE TABLE [OvenCosts] ( [Id] int NOT NULL IDENTITY, [Label] nvarchar(100) NOT NULL, [CostPerHour] decimal(18,2) NOT NULL, [IsActive] bit NOT NULL, [DisplayOrder] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_OvenCosts] PRIMARY KEY ([Id]), CONSTRAINT [FK_OvenCosts_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-20T17:17:01.4986759Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-20T17:17:01.4986764Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-20T17:17:01.4986765Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN CREATE INDEX [IX_Quotes_OvenCostId] ON [Quotes] ([OvenCostId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN CREATE INDEX [IX_OvenCosts_CompanyId] ON [OvenCosts] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN ALTER TABLE [Quotes] ADD CONSTRAINT [FK_Quotes_OvenCosts_OvenCostId] FOREIGN KEY ([OvenCostId]) REFERENCES [OvenCosts] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260220171704_AddOvenCostTable' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260220171704_AddOvenCostTable', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN ALTER TABLE [Jobs] ADD [OvenCostId] int NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:13:27.8500454Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:13:27.8500462Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:13:27.8500464Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN CREATE INDEX [IX_Jobs_OvenCostId] ON [Jobs] ([OvenCostId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN ALTER TABLE [Jobs] ADD CONSTRAINT [FK_Jobs_OvenCosts_OvenCostId] FOREIGN KEY ([OvenCostId]) REFERENCES [OvenCosts] ([Id]) ON DELETE NO ACTION; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221001331_AddOvenCostToJobs' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260221001331_AddOvenCostToJobs', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN DECLARE @var51 sysname; SELECT @var51 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[AspNetUsers]') AND [c].[name] = N'ProfilePictureContentType'); IF @var51 IS NOT NULL EXEC(N'ALTER TABLE [AspNetUsers] DROP CONSTRAINT [' + @var51 + '];'); ALTER TABLE [AspNetUsers] DROP COLUMN [ProfilePictureContentType]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN DECLARE @var52 sysname; SELECT @var52 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[AspNetUsers]') AND [c].[name] = N'ProfilePictureData'); IF @var52 IS NOT NULL EXEC(N'ALTER TABLE [AspNetUsers] DROP CONSTRAINT [' + @var52 + '];'); ALTER TABLE [AspNetUsers] DROP COLUMN [ProfilePictureData]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:34:31.8544923Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:34:31.8544930Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T00:34:31.8544931Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221003434_RemoveProfilePictureDatabaseFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260221003434_RemoveProfilePictureDatabaseFields', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN ALTER TABLE [Customers] ADD [NotifyByEmail] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN ALTER TABLE [Customers] ADD [NotifyBySms] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE TABLE [NotificationLogs] ( [Id] int NOT NULL IDENTITY, [Channel] int NOT NULL, [NotificationType] int NOT NULL, [Status] int NOT NULL, [RecipientName] nvarchar(max) NOT NULL, [Recipient] nvarchar(max) NOT NULL, [Subject] nvarchar(max) NULL, [Message] nvarchar(max) NOT NULL, [ErrorMessage] nvarchar(max) NULL, [SentAt] datetime2 NOT NULL, [CustomerId] int NULL, [JobId] int NULL, [QuoteId] int NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_NotificationLogs] PRIMARY KEY ([Id]), CONSTRAINT [FK_NotificationLogs_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_NotificationLogs_Customers_CustomerId] FOREIGN KEY ([CustomerId]) REFERENCES [Customers] ([Id]) ON DELETE SET NULL, CONSTRAINT [FK_NotificationLogs_Jobs_JobId] FOREIGN KEY ([JobId]) REFERENCES [Jobs] ([Id]) ON DELETE SET NULL, CONSTRAINT [FK_NotificationLogs_Quotes_QuoteId] FOREIGN KEY ([QuoteId]) REFERENCES [Quotes] ([Id]) ON DELETE SET NULL ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T13:55:37.8574079Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T13:55:37.8574086Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T13:55:37.8574088Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE INDEX [IX_NotificationLogs_CompanyId_SentAt] ON [NotificationLogs] ([CompanyId], [SentAt]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE INDEX [IX_NotificationLogs_CompanyId_Status] ON [NotificationLogs] ([CompanyId], [Status]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE INDEX [IX_NotificationLogs_CustomerId] ON [NotificationLogs] ([CustomerId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE INDEX [IX_NotificationLogs_JobId] ON [NotificationLogs] ([JobId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN CREATE INDEX [IX_NotificationLogs_QuoteId] ON [NotificationLogs] ([QuoteId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221135541_AddNotificationSystem' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260221135541_AddNotificationSystem', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN ALTER TABLE [Customers] ADD [UnsubscribeToken] nvarchar(450) NOT NULL DEFAULT (REPLACE(NEWID(),'-','')); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T14:18:31.3321750Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T14:18:31.3321756Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T14:18:31.3321758Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN CREATE UNIQUE INDEX [IX_Customers_UnsubscribeToken] ON [Customers] ([UnsubscribeToken]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221141834_AddCustomerUnsubscribeToken' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260221141834_AddCustomerUnsubscribeToken', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN ALTER TABLE [Customers] ADD [SmsConsentMethod] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN ALTER TABLE [Customers] ADD [SmsConsentedAt] datetime2 NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T23:29:14.2199767Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T23:29:14.2199772Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-21T23:29:14.2199774Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260221232918_AddSmsConsent' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260221232918_AddSmsConsent', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN CREATE TABLE [NotificationTemplates] ( [Id] int NOT NULL IDENTITY, [NotificationType] int NOT NULL, [Channel] int NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [Subject] nvarchar(max) NULL, [Body] nvarchar(max) NOT NULL, [IsActive] bit NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_NotificationTemplates] PRIMARY KEY ([Id]), CONSTRAINT [FK_NotificationTemplates_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-22T13:30:59.4147610Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-22T13:30:59.4147617Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-22T13:30:59.4147619Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN CREATE UNIQUE INDEX [IX_NotificationTemplates_Company_Type_Channel] ON [NotificationTemplates] ([CompanyId], [NotificationType], [Channel]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260222133103_AddNotificationTemplates' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260222133103_AddNotificationTemplates', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'CompanyPreferences' AND COLUMN_NAME = 'EmailFromAddress') ALTER TABLE [CompanyPreferences] ADD [EmailFromAddress] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'CompanyPreferences' AND COLUMN_NAME = 'EmailFromName') ALTER TABLE [CompanyPreferences] ADD [EmailFromName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN DECLARE @var53 sysname; SELECT @var53 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyPreferences]') AND [c].[name] = N'EmailFromName'); IF @var53 IS NOT NULL EXEC(N'ALTER TABLE [CompanyPreferences] DROP CONSTRAINT [' + @var53 + '];'); ALTER TABLE [CompanyPreferences] ALTER COLUMN [EmailFromName] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN DECLARE @var54 sysname; SELECT @var54 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[CompanyPreferences]') AND [c].[name] = N'EmailFromAddress'); IF @var54 IS NOT NULL EXEC(N'ALTER TABLE [CompanyPreferences] DROP CONSTRAINT [' + @var54 + '];'); ALTER TABLE [CompanyPreferences] ALTER COLUMN [EmailFromAddress] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN ALTER TABLE [Companies] ADD [SubscriptionPlanNew] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN UPDATE Companies SET SubscriptionPlanNew = CASE SubscriptionPlan WHEN 'Enterprise' THEN 2 WHEN 'Pro' THEN 1 WHEN 'Basic' THEN 0 ELSE 0 END END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN DECLARE @var55 sysname; SELECT @var55 = [d].[name] FROM [sys].[default_constraints] [d] INNER JOIN [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id] WHERE ([d].[parent_object_id] = OBJECT_ID(N'[Companies]') AND [c].[name] = N'SubscriptionPlan'); IF @var55 IS NOT NULL EXEC(N'ALTER TABLE [Companies] DROP CONSTRAINT [' + @var55 + '];'); ALTER TABLE [Companies] DROP COLUMN [SubscriptionPlan]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN EXEC sp_rename N'[Companies].[SubscriptionPlanNew]', N'SubscriptionPlan', N'COLUMN'; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN ALTER TABLE [Companies] ADD [StripeCustomerId] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN ALTER TABLE [Companies] ADD [StripeSubscriptionId] nvarchar(max) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN ALTER TABLE [Companies] ADD [SubscriptionStatus] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN CREATE TABLE [SubscriptionPlanConfigs] ( [Id] int NOT NULL IDENTITY, [Plan] int NOT NULL, [DisplayName] nvarchar(max) NOT NULL, [Description] nvarchar(max) NULL, [MaxUsers] int NOT NULL, [MaxActiveJobs] int NOT NULL, [MaxCustomers] int NOT NULL, [MonthlyPrice] decimal(18,2) NOT NULL, [AnnualPrice] decimal(18,2) NOT NULL, [StripePriceIdMonthly] nvarchar(max) NULL, [StripePriceIdAnnual] nvarchar(max) NULL, [IsActive] bit NOT NULL, [SortOrder] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_SubscriptionPlanConfigs] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T01:51:32.2577721Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T01:51:32.2577726Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T01:51:32.2577728Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224015135_AddSubscriptionEnumAndStripeFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260224015135_AddSubscriptionEnumAndStripeFields', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224035934_AddStarterPlanAndQuoteLimit' ) BEGIN ALTER TABLE [SubscriptionPlanConfigs] ADD [MaxQuotes] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224035934_AddStarterPlanAndQuoteLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T03:59:30.7397881Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224035934_AddStarterPlanAndQuoteLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T03:59:30.7397890Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224035934_AddStarterPlanAndQuoteLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T03:59:30.7397891Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224035934_AddStarterPlanAndQuoteLimit' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260224035934_AddStarterPlanAndQuoteLimit', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224040916_AddCatalogItemLimit' ) BEGIN ALTER TABLE [SubscriptionPlanConfigs] ADD [MaxCatalogItems] int NOT NULL DEFAULT 0; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224040916_AddCatalogItemLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T04:09:11.4847911Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224040916_AddCatalogItemLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T04:09:11.4847917Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224040916_AddCatalogItemLimit' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-24T04:09:11.4847919Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260224040916_AddCatalogItemLimit' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260224040916_AddCatalogItemLimit', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN ALTER TABLE [QuoteItems] ADD [IsGenericItem] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN ALTER TABLE [QuoteItems] ADD [ManualUnitPrice] decimal(18,2) NULL; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T03:39:48.7901225Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T03:39:48.7901233Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T03:39:48.7901234Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225033952_AddGenericQuoteItemFields' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260225033952_AddGenericQuoteItemFields', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN ALTER TABLE [QuoteItems] ADD [IsLaborItem] bit NOT NULL DEFAULT CAST(0 AS bit); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN CREATE TABLE [QuoteItemPrepServices] ( [Id] int NOT NULL IDENTITY, [QuoteItemId] int NOT NULL, [PrepServiceId] int NOT NULL, [EstimatedMinutes] int NOT NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_QuoteItemPrepServices] PRIMARY KEY ([Id]), CONSTRAINT [FK_QuoteItemPrepServices_Companies_CompanyId] FOREIGN KEY ([CompanyId]) REFERENCES [Companies] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteItemPrepServices_PrepServices_PrepServiceId] FOREIGN KEY ([PrepServiceId]) REFERENCES [PrepServices] ([Id]) ON DELETE NO ACTION, CONSTRAINT [FK_QuoteItemPrepServices_QuoteItems_QuoteItemId] FOREIGN KEY ([QuoteItemId]) REFERENCES [QuoteItems] ([Id]) ON DELETE CASCADE ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T13:51:28.7925967Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T13:51:28.7925974Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-25T13:51:28.7925975Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN CREATE INDEX [IX_QuoteItemPrepServices_CompanyId] ON [QuoteItemPrepServices] ([CompanyId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN CREATE INDEX [IX_QuoteItemPrepServices_PrepServiceId] ON [QuoteItemPrepServices] ([PrepServiceId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN CREATE INDEX [IX_QuoteItemPrepServices_QuoteItemId] ON [QuoteItemPrepServices] ([QuoteItemId]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260225135132_AddQuoteItemPrepServices' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260225135132_AddQuoteItemPrepServices', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN DROP INDEX [IX_Quotes_QuoteNumber] ON [Quotes]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN DROP INDEX [IX_Jobs_JobNumber] ON [Jobs]; END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-26T17:16:01.0942463Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-26T17:16:01.0942470Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-26T17:16:01.0942471Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN CREATE UNIQUE INDEX [IX_Quotes_CompanyId_QuoteNumber] ON [Quotes] ([CompanyId], [QuoteNumber]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN CREATE UNIQUE INDEX [IX_Jobs_CompanyId_JobNumber] ON [Jobs] ([CompanyId], [JobNumber]); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260226171604_FixJobQuoteNumberUniqueIndexPerCompany', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227020607_RemoveSubscriptionPlanEnum' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T02:06:03.2426692Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227020607_RemoveSubscriptionPlanEnum' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T02:06:03.2426696Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227020607_RemoveSubscriptionPlanEnum' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T02:06:03.2426698Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227020607_RemoveSubscriptionPlanEnum' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260227020607_RemoveSubscriptionPlanEnum', N'8.0.11'); END; GO COMMIT; GO BEGIN TRANSACTION; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227042457_AddBugReports' ) BEGIN CREATE TABLE [BugReports] ( [Id] int NOT NULL IDENTITY, [Title] nvarchar(max) NOT NULL, [Description] nvarchar(max) NOT NULL, [SubmittedByUserId] nvarchar(max) NOT NULL, [SubmittedByUserName] nvarchar(max) NOT NULL, [Priority] int NOT NULL, [Status] int NOT NULL, [ResolutionNotes] nvarchar(max) NULL, [ResolvedAt] datetime2 NULL, [ResolvedBy] nvarchar(max) NULL, [CompanyId] int NOT NULL, [CreatedAt] datetime2 NOT NULL, [UpdatedAt] datetime2 NULL, [CreatedBy] nvarchar(max) NULL, [UpdatedBy] nvarchar(max) NULL, [IsDeleted] bit NOT NULL, [DeletedAt] datetime2 NULL, [DeletedBy] nvarchar(max) NULL, CONSTRAINT [PK_BugReports] PRIMARY KEY ([Id]) ); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227042457_AddBugReports' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T04:24:54.3532986Z'' WHERE [Id] = 1; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227042457_AddBugReports' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T04:24:54.3532991Z'' WHERE [Id] = 2; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227042457_AddBugReports' ) BEGIN EXEC(N'UPDATE [PricingTiers] SET [CreatedAt] = ''2026-02-27T04:24:54.3532993Z'' WHERE [Id] = 3; SELECT @@ROWCOUNT'); END; GO IF NOT EXISTS ( SELECT * FROM [__EFMigrationsHistory] WHERE [MigrationId] = N'20260227042457_AddBugReports' ) BEGIN INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260227042457_AddBugReports', N'8.0.11'); END; GO COMMIT; GO