USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Contacts] Script Date: 1/21/2026 4:16:02 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Contacts]( [Id] [int] IDENTITY(1,1) NOT NULL, [PhoneNumber] [nvarchar](max) NULL, [Email] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [Title] [nvarchar](200) NULL, [Owner] [nvarchar](200) NULL, [FirstName] [nvarchar](100) NULL, [MiddleName] [nvarchar](100) NULL, [LastName] [nvarchar](100) NULL, [ContactType] [nvarchar](100) NULL, [Address1] [nvarchar](255) NULL, [Address2] [nvarchar](255) NULL, [City] [nvarchar](100) NULL, [State] [nvarchar](100) NULL, [Zip] [nvarchar](20) NULL, [FacebookUrl] [nvarchar](255) NULL, [LinkedInUrl] [nvarchar](255) NULL, [TwitterUrl] [nvarchar](255) NULL, [LocationId] [int] NULL, [AccountId] [int] NULL, CONSTRAINT [PK_Contacts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Contacts] WITH CHECK ADD CONSTRAINT [FK_Contacts_Accounts] FOREIGN KEY([AccountId]) REFERENCES [dbo].[Accounts] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Contacts] CHECK CONSTRAINT [FK_Contacts_Accounts] GO ALTER TABLE [dbo].[Contacts] WITH CHECK ADD CONSTRAINT [FK_Contacts_Locations] FOREIGN KEY([LocationId]) REFERENCES [dbo].[Locations] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Contacts] CHECK CONSTRAINT [FK_Contacts_Locations] GO CREATE TABLE Assets ( Id INT IDENTITY(1,1) PRIMARY KEY, AssetCode NVARCHAR(50) NOT NULL, Name NVARCHAR(255) NOT NULL, Description NVARCHAR(MAX) NULL, AccountId INT NULL, LocationId INT NULL, IsActive BIT NOT NULL DEFAULT 1, CreatedDate DATETIME2 NOT NULL DEFAULT GETUTCDATE(), CreatedBy INT NULL, LastModificationTime DATETIME2 NULL, LastModifiedBy INT NULL, CONSTRAINT FK_Assets_Accounts FOREIGN KEY (AccountId) REFERENCES Accounts(Id), CONSTRAINT FK_Assets_Locations FOREIGN KEY (LocationId) REFERENCES Locations(Id) ); CREATE TABLE PMSchedules ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(255) NOT NULL, Frequency NVARCHAR(50) NOT NULL, -- Monthly / Quarterly / Yearly StartDate DATE NOT NULL, IsActive BIT NOT NULL DEFAULT 1, AssetId INT NULL, LocationId INT NULL, CreatedDate DATETIME2 NOT NULL DEFAULT GETUTCDATE(), CreatedBy INT NULL, LastModificationTime DATETIME2 NULL, LastModifiedBy INT NULL, CONSTRAINT FK_PMSchedules_Assets FOREIGN KEY (AssetId) REFERENCES Assets(Id), CONSTRAINT FK_PMSchedules_Locations FOREIGN KEY (LocationId) REFERENCES Locations(Id) ); CREATE TABLE FollowUps ( Id INT IDENTITY(1,1) PRIMARY KEY, Reason NVARCHAR(MAX) NOT NULL, ScheduleDate DATETIME2 NOT NULL, ScheduleStartTime TIME NOT NULL, Status NVARCHAR(20) NOT NULL DEFAULT 'Open', -- Open | Completed | Cancelled EmployeeId INT NULL, WorkOrderId INT NULL, AccountId INT NULL, LocationId INT NULL, CreatedDate DATETIME2 NOT NULL DEFAULT GETUTCDATE(), CreatedBy INT NULL, LastModificationTime DATETIME2 NULL, LastModifiedBy INT NULL, CONSTRAINT FK_FollowUps_Employees FOREIGN KEY (EmployeeId) REFERENCES Employees(Id), CONSTRAINT FK_FollowUps_WorkOrders FOREIGN KEY (WorkOrderId) REFERENCES WorkOrders(Id), CONSTRAINT FK_FollowUps_Accounts FOREIGN KEY (AccountId) REFERENCES Accounts(Id), CONSTRAINT FK_FollowUps_Locations FOREIGN KEY (LocationId) REFERENCES Locations(Id) ); CREATE TABLE Employees ( Id INT IDENTITY(1,1) PRIMARY KEY, -- General Details FirstName NVARCHAR(50) NOT NULL, MiddleName NVARCHAR(50) NULL, LastName NVARCHAR(50) NOT NULL, DepartmentId INT NULL, TimeZone NVARCHAR(200) NULL, Gender INT NULL, -- 0=Male,1=Female,2=Not specified,3=Other DateOfBirth DATE NULL, JobTitleId INT NULL, EmployeeNumber NVARCHAR(50) NULL, HireDate DATE NULL, RegionId INT NULL, CanChangeProviderNumber BIT NULL, About NVARCHAR(255) NULL, -- Login & Role (stored locally, no Identity) PermissionGroupId INT NULL, -- LoginInfo.PermissionGroupID UserName NVARCHAR(256) NULL, -- LoginInfo.UserName ConfirmUserName NVARCHAR(256) NULL, -- LoginInfo.ConfirmUserName -- Additional Details SMSAddress NVARCHAR(270) NULL, Website NVARCHAR(2048) NULL, -- Social Media FacebookUrl NVARCHAR(2048) NULL, LinkedInUrl NVARCHAR(2048) NULL, TwitterUrl NVARCHAR(2048) NULL, -- Status (for list grid) Status NVARCHAR(50) NULL, -- "Active", "Offline", "Awaiting Confirmation" LastLogin DATETIME NULL, -- Soft delete / audit IsDeleted BIT NULL, CreatedBy NVARCHAR(MAX) NULL, CreatedDate DATETIME2 NULL, LastModificationTime DATETIME2 NULL, LastModifierUserId INT NULL ); CREATE TABLE EmployeeAddresses ( Id INT IDENTITY(1,1) PRIMARY KEY, EmployeeId INT NOT NULL, Street NVARCHAR(250) NULL, StreetLineTwo NVARCHAR(250) NULL, City NVARCHAR(100) NULL, Zip NVARCHAR(20) NULL, CountryCode NVARCHAR(10) NULL, -- "US" StateCode NVARCHAR(10) NULL, -- "NY", "CA", etc. CountyId INT NULL, FOREIGN KEY (EmployeeId) REFERENCES Employees(Id) ON DELETE CASCADE ); CREATE TABLE EmployeePhones ( Id INT IDENTITY(1,1) PRIMARY KEY, EmployeeId INT NOT NULL, PhoneTypeId INT NULL, -- 1=Work, 2=Home, etc. Number NVARCHAR(25) NULL, Extension NVARCHAR(10) NULL, IsPrimary BIT NULL, FOREIGN KEY (EmployeeId) REFERENCES Employees(Id) ON DELETE CASCADE ); CREATE TABLE EmployeeEmails ( Id INT IDENTITY(1,1) PRIMARY KEY, EmployeeId INT NOT NULL, EmailTypeId INT NULL, -- 1=Work,2=Home,3=Other Address NVARCHAR(256) NULL, IsPrimary BIT NULL, FOREIGN KEY (EmployeeId) REFERENCES Employees(Id) ON DELETE CASCADE ); CREATE TABLE Departments ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(200) NOT NULL ); CREATE TABLE JobTitles ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(200) NOT NULL ); CREATE TABLE Regions ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(200) NOT NULL ); CREATE TABLE PermissionGroups ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(200) NOT NULL ); CREATE TABLE PhoneTypes ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(50) NOT NULL ); CREATE TABLE EmailTypes ( Id INT IDENTITY(1,1) PRIMARY KEY, Name NVARCHAR(50) NOT NULL ); USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Accounts] Script Date: 1/21/2026 4:10:39 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Accounts]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](255) NULL, [Type] [nvarchar](100) NULL, [Importance] [int] NULL, [TerritoryId] [int] NULL, [OwnerEmployeeId] [int] NULL, [PrivacySetting] [nvarchar](100) NULL, [About] [nvarchar](max) NULL, [Tags] [nvarchar](500) NULL, [Phone] [nvarchar](50) NULL, [Email] [nvarchar](150) NULL, [IndustryId] [int] NULL, [TimeZone] [nvarchar](100) NULL, [Website] [nvarchar](255) NULL, [CurrencyCode] [nvarchar](50) NULL, [ServiceInstructions] [nvarchar](max) NULL, [FacebookUrl] [nvarchar](255) NULL, [LinkedInUrl] [nvarchar](255) NULL, [TwitterUrl] [nvarchar](255) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](450) NULL, [DeleterUserId] [nvarchar](450) NULL, [DeletionTime] [datetime] NULL, [CreatedDate] [datetime] NULL, [LastModificationTime] [datetime] NULL, [LastModifierUserId] [int] NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Accounts] ADD DEFAULT ((0)) FOR [IsDeleted] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[workOrderAttachments] Script Date: 1/21/2026 4:30:43 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[workOrderAttachments]( [Id] [int] IDENTITY(1,1) NOT NULL, [Attachments] [nvarchar](max) NULL, [WorkorderId] [int] NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, CONSTRAINT [PK_workOrderAttachments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[workOrderAttachments] WITH CHECK ADD CONSTRAINT [FK_workOrderAttachments_workOrders_WorkorderId] FOREIGN KEY([WorkorderId]) REFERENCES [dbo].[workOrders] ([Id]) GO ALTER TABLE [dbo].[workOrderAttachments] CHECK CONSTRAINT [FK_workOrderAttachments_workOrders_WorkorderId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[workOrderCategories] Script Date: 1/21/2026 4:31:16 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[workOrderCategories]( [Id] [int] IDENTITY(1,1) NOT NULL, [CategoryId] [int] NULL, [WorkorderId] [int] NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, CONSTRAINT [PK_workOrderCategories] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[workOrderCategories] WITH CHECK ADD CONSTRAINT [FK_workOrderCategories_Categories_CategoryId] FOREIGN KEY([CategoryId]) REFERENCES [dbo].[Categories] ([Id]) GO ALTER TABLE [dbo].[workOrderCategories] CHECK CONSTRAINT [FK_workOrderCategories_Categories_CategoryId] GO ALTER TABLE [dbo].[workOrderCategories] WITH CHECK ADD CONSTRAINT [FK_workOrderCategories_workOrders_WorkorderId] FOREIGN KEY([WorkorderId]) REFERENCES [dbo].[workOrders] ([Id]) GO ALTER TABLE [dbo].[workOrderCategories] CHECK CONSTRAINT [FK_workOrderCategories_workOrders_WorkorderId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[WorkOrderContacts] Script Date: 1/21/2026 4:31:56 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[WorkOrderContacts]( [Id] [int] IDENTITY(1,1) NOT NULL, [ContactId] [int] NULL, [WorkorderId] [int] NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, CONSTRAINT [PK_WorkOrderContacts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[WorkOrderContacts] WITH CHECK ADD CONSTRAINT [FK_WorkOrderContacts_Contacts_ContactId] FOREIGN KEY([ContactId]) REFERENCES [dbo].[Contacts] ([Id]) GO ALTER TABLE [dbo].[WorkOrderContacts] CHECK CONSTRAINT [FK_WorkOrderContacts_Contacts_ContactId] GO ALTER TABLE [dbo].[WorkOrderContacts] WITH CHECK ADD CONSTRAINT [FK_WorkOrderContacts_workOrders_WorkorderId] FOREIGN KEY([WorkorderId]) REFERENCES [dbo].[workOrders] ([Id]) GO ALTER TABLE [dbo].[WorkOrderContacts] CHECK CONSTRAINT [FK_WorkOrderContacts_workOrders_WorkorderId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[workOrders] Script Date: 1/21/2026 4:32:35 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[workOrders]( [Id] [int] IDENTITY(1,1) NOT NULL, [WorkerOrderNumber] [nvarchar](max) NULL, [WorkerOrderTitle] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [PO] [nvarchar](max) NULL, [TT] [nvarchar](max) NULL, [SignOffAttachment] [nvarchar](max) NULL, [AssignTo] [nvarchar](450) NULL, [DueDate] [datetime2](7) NULL, [Priority] [nvarchar](max) NULL, [Status] [nvarchar](max) NULL, [LocationId] [int] NULL, [Attachments] [nvarchar](max) NULL, [BeforPhotoIssue] [nvarchar](max) NULL, [BeforPhotoAttachment] [nvarchar](max) NULL, [AfterPhotoIssue] [nvarchar](max) NULL, [AfterPhotoAttachment] [nvarchar](max) NULL, [SignOffName] [nvarchar](max) NULL, [SignOffSignature] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [istemplate] [bit] NULL, [WorkOrderType] [varchar](50) NULL, [AvettaTask] [varchar](max) NULL, [AssignDate] [date] NULL, CONSTRAINT [PK_workOrders] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[workOrders] WITH CHECK ADD CONSTRAINT [FK_workOrders_AspNetUsers_AssignTo] FOREIGN KEY([AssignTo]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[workOrders] CHECK CONSTRAINT [FK_workOrders_AspNetUsers_AssignTo] GO ALTER TABLE [dbo].[workOrders] WITH CHECK ADD CONSTRAINT [FK_workOrders_Locations_LocationId] FOREIGN KEY([LocationId]) REFERENCES [dbo].[Locations] ([Id]) GO ALTER TABLE [dbo].[workOrders] CHECK CONSTRAINT [FK_workOrders_Locations_LocationId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Templates] Script Date: 1/21/2026 4:33:35 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Templates]( [Id] [int] IDENTITY(1,1) NOT NULL, [WorkerOrderNumber] [nvarchar](max) NULL, [WorkerOrderTitle] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [PO] [nvarchar](max) NULL, [TT] [nvarchar](max) NULL, [SignOffAttachment] [nvarchar](max) NULL, [AssignTo] [nvarchar](450) NULL, [DueDate] [datetime2](7) NULL, [Priority] [nvarchar](max) NULL, [Status] [nvarchar](max) NULL, [LocationId] [int] NULL, [CategoryId] [int] NULL, [Attachments] [nvarchar](max) NULL, [BeforPhotoIssue] [nvarchar](max) NULL, [BeforPhotoAttachment] [nvarchar](max) NULL, [AfterPhotoIssue] [nvarchar](max) NULL, [AfterPhotoAttachment] [nvarchar](max) NULL, [SignOffName] [nvarchar](max) NULL, [SignOffSignature] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [ContactId] [int] NULL, CONSTRAINT [PK_Templates] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Templates] WITH CHECK ADD CONSTRAINT [FK_Templates_AspNetUsers_AssignTo] FOREIGN KEY([AssignTo]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Templates] CHECK CONSTRAINT [FK_Templates_AspNetUsers_AssignTo] GO ALTER TABLE [dbo].[Templates] WITH CHECK ADD CONSTRAINT [FK_Templates_Categories_CategoryId] FOREIGN KEY([CategoryId]) REFERENCES [dbo].[Categories] ([Id]) GO ALTER TABLE [dbo].[Templates] CHECK CONSTRAINT [FK_Templates_Categories_CategoryId] GO ALTER TABLE [dbo].[Templates] WITH CHECK ADD CONSTRAINT [FK_Templates_Contacts_ContactId] FOREIGN KEY([ContactId]) REFERENCES [dbo].[Contacts] ([Id]) GO ALTER TABLE [dbo].[Templates] CHECK CONSTRAINT [FK_Templates_Contacts_ContactId] GO ALTER TABLE [dbo].[Templates] WITH CHECK ADD CONSTRAINT [FK_Templates_Locations_LocationId] FOREIGN KEY([LocationId]) REFERENCES [dbo].[Locations] ([Id]) GO ALTER TABLE [dbo].[Templates] CHECK CONSTRAINT [FK_Templates_Locations_LocationId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Regions] Script Date: 1/21/2026 4:34:46 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Regions]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](200) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[QuotesLines] Script Date: 1/21/2026 4:35:20 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuotesLines]( [Id] [int] IDENTITY(1,1) NOT NULL, [LineitemNumber] [int] NULL, [Lineitem] [decimal](18, 2) NULL, [QuoteId] [int] NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [Descriptions] [nvarchar](max) NULL, CONSTRAINT [PK_QuotesLines] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[QuotesLines] WITH CHECK ADD CONSTRAINT [FK_QuotesLines_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) GO ALTER TABLE [dbo].[QuotesLines] CHECK CONSTRAINT [FK_QuotesLines_Quotes_QuoteId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Quotes] Script Date: 1/21/2026 4:35:57 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Quotes]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuotId] [nvarchar](max) NULL, [Date] [datetime2](7) NULL, [BillingAddress] [nvarchar](max) NULL, [TT] [nvarchar](max) NULL, [PO] [nvarchar](max) NULL, [ContactId] [int] NULL, [WorkorderId] [int] NULL, [ProjectName] [nvarchar](max) NULL, [SiteName] [nvarchar](max) NULL, [SiteId] [nvarchar](max) NULL, [ShippingAddress] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [Status] [nvarchar](max) NULL, CONSTRAINT [PK_Quotes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_Contacts_ContactId] FOREIGN KEY([ContactId]) REFERENCES [dbo].[Contacts] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_Contacts_ContactId] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_workOrders_WorkorderId] FOREIGN KEY([WorkorderId]) REFERENCES [dbo].[workOrders] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_workOrders_WorkorderId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[PermissionGroups] Script Date: 1/21/2026 4:36:37 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PermissionGroups]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](200) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Locations] Script Date: 1/21/2026 4:37:09 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Locations]( [Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NULL, [Name] [nvarchar](max) NULL, [Latitude] [nvarchar](max) NULL, [Longitude] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, CONSTRAINT [PK_Locations] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[JobTitles] Script Date: 1/21/2026 4:39:15 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTitles]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](200) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[ForgetPasswordCodes] Script Date: 1/21/2026 4:41:21 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ForgetPasswordCodes]( [Id] [int] IDENTITY(1,1) NOT NULL, [UserId] [nvarchar](max) NOT NULL, [Email] [nvarchar](max) NOT NULL, [Code] [nvarchar](max) NOT NULL, CONSTRAINT [PK_ForgetPasswordCodes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Categories] Script Date: 1/21/2026 4:42:50 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Categories]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, CONSTRAINT [PK_Categories] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Comments] Script Date: 1/21/2026 4:44:45 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Comments]( [Id] [int] IDENTITY(1,1) NOT NULL, [Commenttext] [nvarchar](max) NULL, [WorkerOrderId] [int] NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](max) NULL, [DeleterUserId] [nvarchar](max) NULL, [DeletionTime] [datetime2](7) NULL, [CreatedDate] [datetime2](7) NULL, [LastModificationTime] [datetime2](7) NULL, [LastModifierUserId] [int] NULL, [UserId] [nvarchar](450) NULL, [Documents] [nvarchar](max) NULL, CONSTRAINT [PK_Comments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comments_AspNetUsers_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Comments] CHECK CONSTRAINT [FK_Comments_AspNetUsers_UserId] GO ALTER TABLE [dbo].[Comments] WITH CHECK ADD CONSTRAINT [FK_Comments_workOrders_WorkerOrderId] FOREIGN KEY([WorkerOrderId]) REFERENCES [dbo].[workOrders] ([Id]) GO ALTER TABLE [dbo].[Comments] CHECK CONSTRAINT [FK_Comments_workOrders_WorkerOrderId] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[ContactDetails] Script Date: 1/21/2026 4:45:14 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ContactDetails]( [Id] [int] IDENTITY(1,1) NOT NULL, [ContactId] [int] NOT NULL, [Gender] [nvarchar](50) NULL, [DateOfBirth] [datetime] NULL, [Territory] [nvarchar](100) NULL, [PrivacySetting] [nvarchar](100) NULL, [About] [nvarchar](max) NULL, [Tags] [nvarchar](500) NULL, [FacebookUrl] [nvarchar](255) NULL, [LinkedInUrl] [nvarchar](255) NULL, [TwitterUrl] [nvarchar](255) NULL, [IsDeleted] [bit] NULL, [createdby] [nvarchar](450) NULL, [DeleterUserId] [nvarchar](450) NULL, [DeletionTime] [datetime] NULL, [CreatedDate] [datetime] NULL, [LastModificationTime] [datetime] NULL, [LastModifierUserId] [int] NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[ContactDetails] ADD DEFAULT ((0)) FOR [IsDeleted] GO ALTER TABLE [dbo].[ContactDetails] WITH CHECK ADD CONSTRAINT [FK_ContactDetails_Contacts] FOREIGN KEY([ContactId]) REFERENCES [dbo].[Contacts] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[ContactDetails] CHECK CONSTRAINT [FK_ContactDetails_Contacts] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[Departments] Script Date: 1/21/2026 4:45:43 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Departments]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](200) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO USE [db_a7141e_seahavenindustry] GO /****** Object: Table [dbo].[EmailTypes] Script Date: 1/21/2026 4:46:25 PM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[EmailTypes]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](50) NOT NULL, PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO -- ================================================================== -- DATABASE CHANGES APPLIED ON 2026-04-22 -- Migration: Calendar Module + Missing Column Fixes -- Applied by: AI Agent -- ================================================================== -- ================================================================== -- 1. EVENTS TABLE (Calendar Module) -- Migration: 20260422021353_AddEventsTable -- ================================================================== USE [db_a7141e_seahavenindustry] GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Events]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[Events]( [Id] [int] IDENTITY(1,1) NOT NULL, -- Basic Event Information [Title] [nvarchar](100) NOT NULL, [Description] [nvarchar](max) NULL, [Location] [nvarchar](150) NULL, -- Related Record (Link to Accounts, Contacts, Work Orders, etc.) [RecordID] [int] NULL, [RecordName] [nvarchar](max) NULL, [RecordTargetType] [nvarchar](max) NULL, -- Reminder & Display Settings [ReminderMinutes] [int] NOT NULL CONSTRAINT [DF_Events_ReminderMinutes] DEFAULT ((15)), [EventColor] [nvarchar](20) NOT NULL CONSTRAINT [DF_Events_EventColor] DEFAULT (N'primary'), -- Schedule Information [StartDate] [datetime2](7) NOT NULL, [StartTime] [nvarchar](10) NULL, [EndDate] [datetime2](7) NOT NULL, [EndTime] [nvarchar](10) NULL, [AllDay] [bit] NOT NULL CONSTRAINT [DF_Events_AllDay] DEFAULT ((0)), -- Audit Fields (from FullAuditEntity) [IsDeleted] [bit] NOT NULL CONSTRAINT [DF_Events_IsDeleted] DEFAULT ((0)), [DeletionTime] [datetime2](7) NULL, [createdby] [nvarchar](max) NULL, [CreatedDate] [datetime2](7) NULL, [lastmodifiedby] [nvarchar](max) NULL, [LastModificationTime] [datetime2](7) NULL, CONSTRAINT [PK_Events] PRIMARY KEY CLUSTERED ([Id] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] END GO -- Create Index on StartDate for faster calendar queries IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Events_StartDate' AND object_id = OBJECT_ID('[dbo].[Events]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Events_StartDate] ON [dbo].[Events] ( [StartDate] ASC ) WHERE ([IsDeleted] = 0) END GO -- Create Index on IsDeleted for soft delete queries IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Events_IsDeleted' AND object_id = OBJECT_ID('[dbo].[Events]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Events_IsDeleted] ON [dbo].[Events] ( [IsDeleted] ASC ) END GO -- ================================================================== -- 2. WORKORDERS TABLE - MISSING COLUMNS -- Migrations: 20260416212330, 20260416224015, 20260417142453 -- ================================================================== -- Migration: 20260416224015_AddInternalWONumber ALTER TABLE [dbo].[WorkOrders] ADD [InternalWONumber] [nvarchar](max) NULL GO -- Migration: 20260416212330_AddExternalSyncFields ALTER TABLE [dbo].[WorkOrders] ADD [ExternalWorkOrderId] [nvarchar](max) NULL, [Source] [nvarchar](max) NULL GO -- Migration: 20260417142453_AddDropdownOptionsAndWOFields ALTER TABLE [dbo].[WorkOrders] ADD [Problem] [nvarchar](max) NULL, [Trade] [nvarchar](max) NULL, [SubTrade] [nvarchar](max) NULL, [VendorNTE] [decimal](18, 2) NULL, [ScheduledDate] [datetime2](7) NULL, [CompletedDate] [datetime2](7) NULL GO -- ================================================================== -- 3. COMMENTS TABLE - MISSING COLUMNS -- Migrations: 20260416220656, 20260417171152 -- ================================================================== -- Migration: 20260416220656_AddCommentTypeAndAuditLog ALTER TABLE [dbo].[Comments] ADD [CommentType] [nvarchar](max) NULL, [Commenter] [nvarchar](max) NULL, [RecordType] [nvarchar](max) NULL GO -- Migration: 20260417171152_AddDispatchNumberAndCommentDispatchId ALTER TABLE [dbo].[Comments] ADD [DispatchId] [int] NULL GO -- ================================================================== -- 4. LOCATIONS TABLE - MISSING COLUMNS -- Migration: 20260416210833_AddLocationFields -- ================================================================== ALTER TABLE [dbo].[Locations] ADD [Address1] [nvarchar](max) NULL, [Address2] [nvarchar](max) NULL, [City] [nvarchar](max) NULL, [State] [nvarchar](max) NULL, [Zip] [nvarchar](max) NULL, [PhoneNumber] [nvarchar](max) NULL, [Email] [nvarchar](max) NULL, [Status] [nvarchar](max) NULL GO -- ================================================================== -- 5. MIGRATION HISTORY RECORDS -- Marked these migrations as applied to sync with code -- ================================================================== INSERT INTO [dbo].[__EFMigrationsHistory] ([MigrationId], [ProductVersion]) VALUES (N'20260416204109_SyncContactsAndModels', N'8.0.8'), (N'20260416210833_AddLocationFields', N'8.0.8'), (N'20260416212330_AddExternalSyncFields', N'8.0.8'), (N'20260416220656_AddCommentTypeAndAuditLog', N'8.0.8'), (N'20260416224015_AddInternalWONumber', N'8.0.8'), (N'20260417142453_AddDropdownOptionsAndWOFields', N'8.0.8'), (N'20260417153405_AddVendorAndDispatch', N'8.0.8'), (N'20260417154641_AddDispatchScheduledDate', N'8.0.8'), (N'20260417171152_AddDispatchNumberAndCommentDispatchId', N'8.0.8'), (N'20260417182910_AddTaskListTemplates', N'8.0.8'), (N'20260417190743_MultiWODispatch', N'8.0.8'), (N'20260417192012_AddDispatchChecklist', N'8.0.8'), (N'20260417194438_AddDispatchSignoffs', N'8.0.8'), (N'20260417195316_AddDispatchVerification', N'8.0.8'), (N'20260420151445_AddVendorAccessToken', N'8.0.8'), (N'20260420164708_AddDispatchUpliftRequest', N'8.0.8'), (N'20260422021353_AddEventsTable', N'8.0.8') GO -- ================================================================== -- SUMMARY OF CHANGES (2026-04-22) -- ================================================================== -- Tables Created (11): -- 1. Events (Calendar/Events module) -- 2. WorkOrderAuditLogs (Audit trail for work order changes) -- 3. DropdownOptions (Dynamic dropdown values) -- 4. Vendors (Vendor management) -- 5. Dispatches (Vendor dispatch workflow) -- 6. TaskListTemplates (Reusable task templates) -- 7. TaskListTemplateItems (Template task items) -- 8. DispatchWorkOrders (Many-to-many: Dispatch <-> WorkOrders) -- 9. DispatchChecklistItems (Dispatch checklist) -- 10. DispatchSignoffs (Customer & Vendor signatures) -- 11. DispatchUpliftRequests (NTE increase requests) -- -- Columns Added to WorkOrders (9): -- - InternalWONumber, ExternalWorkOrderId, Source -- - Problem, Trade, SubTrade -- - VendorNTE, ScheduledDate, CompletedDate -- -- Columns Added to Comments (4): -- - CommentType, Commenter, RecordType, DispatchId -- -- Columns Added to Locations (8): -- - Address1, Address2, City, State, Zip -- - PhoneNumber, Email, Status -- -- Columns Added to Dispatches (7): -- - ScheduledDate, DispatchNumber, CompletedDate -- - VerifiedBy, VerifiedAt, AcceptToken, AcknowledgedAt -- -- Columns Added to Vendors (1): -- - AccessToken -- -- Migrations Applied: 17 -- From: 20260416204109_SyncContactsAndModels -- To: 20260422021353_AddEventsTable -- -- Database Status: UP TO DATE ✓ -- ==================================================================