diff --git a/0-Nine.Core/Entities/Property.cs b/0-Nine.Core/Entities/Property.cs
index 6be6ef1..66b7c9a 100644
--- a/0-Nine.Core/Entities/Property.cs
+++ b/0-Nine.Core/Entities/Property.cs
@@ -96,8 +96,8 @@ public class Property : BaseModel
public string Description { get; set; } = string.Empty;
[JsonInclude]
- [Display(Name = "Is Available?", Description = "Indicates if the property is currently available for lease")]
- public bool IsAvailable { get; set; } = true;
+ [Display(Name = "Is Active?", Description = "Indicates if the property is active in the system")]
+ public bool IsActive { get; set; } = true;
[JsonInclude]
[StringLength(50)]
diff --git a/0-Nine.Core/Exceptions/DatabaseExceptions.cs b/0-Nine.Core/Exceptions/DatabaseExceptions.cs
new file mode 100644
index 0000000..81f4537
--- /dev/null
+++ b/0-Nine.Core/Exceptions/DatabaseExceptions.cs
@@ -0,0 +1,54 @@
+namespace Nine.Core.Exceptions;
+
+///
+/// Groups database-specific exceptions thrown by the Nine database layer.
+///
+public static class DatabaseExceptions
+{
+ ///
+ /// Thrown when the database schema is more than two major versions behind the
+ /// current release and cannot be bridged automatically. The database has been
+ /// copied to before this
+ /// exception is thrown; the user must import their data via the application's
+ /// import workflow instead.
+ ///
+ public class SchemaNotSupportedException : Exception
+ {
+ /// Full path of the backup copy made before this exception was thrown.
+ public string BackupPath { get; }
+
+ public SchemaNotSupportedException(string backupPath)
+ : base(
+ "The database has an incompatible schema version and cannot be upgraded " +
+ $"automatically. A backup has been saved to: {backupPath}")
+ {
+ BackupPath = backupPath;
+ }
+ }
+
+ ///
+ /// Thrown when the database schema structure is invalid, unrecognised, or
+ /// internally inconsistent in a way that prevents normal operation.
+ ///
+ public class SchemaInvalidException : Exception
+ {
+ public SchemaInvalidException(string message) : base(message) { }
+
+ public SchemaInvalidException(string message, Exception inner)
+ : base(message, inner) { }
+ }
+
+ ///
+ /// Thrown when an era bridge migration step fails. Used inside
+ /// ApplyFirstAncestorBridgeAsync and ApplySecondAncestorBridgeAsync
+ /// to surface a descriptive failure without leaking raw SQL exception details to
+ /// the UI layer.
+ ///
+ public class MigrationException : Exception
+ {
+ public MigrationException(string message) : base(message) { }
+
+ public MigrationException(string message, Exception inner)
+ : base(message, inner) { }
+ }
+}
diff --git a/1-Nine.Infrastructure/Data/CompiledModels/PropertyEntityType.cs b/1-Nine.Infrastructure/Data/CompiledModels/PropertyEntityType.cs
index dd0580a..5948734 100644
--- a/1-Nine.Infrastructure/Data/CompiledModels/PropertyEntityType.cs
+++ b/1-Nine.Infrastructure/Data/CompiledModels/PropertyEntityType.cs
@@ -87,11 +87,11 @@ public static RuntimeEntityType Create(RuntimeModel model, RuntimeEntityType bas
fieldInfo: typeof(Property).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
maxLength: 1000);
- var isAvailable = runtimeEntityType.AddProperty(
- "IsAvailable",
+ var isActive = runtimeEntityType.AddProperty(
+ "IsActive",
typeof(bool),
- propertyInfo: typeof(Property).GetProperty("IsAvailable", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
- fieldInfo: typeof(Property).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
+ propertyInfo: typeof(Property).GetProperty("IsActive", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly),
+ fieldInfo: typeof(Property).GetField("k__BackingField", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly),
sentinel: false);
var isDeleted = runtimeEntityType.AddProperty(
diff --git a/1-Nine.Infrastructure/Data/DesignTimeDbContextFactory.cs b/1-Nine.Infrastructure/Data/DesignTimeDbContextFactory.cs
new file mode 100644
index 0000000..ede66f2
--- /dev/null
+++ b/1-Nine.Infrastructure/Data/DesignTimeDbContextFactory.cs
@@ -0,0 +1,17 @@
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Design;
+
+namespace Nine.Infrastructure.Data;
+
+///
+/// Design-time factory to allow dotnet-ef migrations to run without the full application host.
+///
+public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory
+{
+ public ApplicationDbContext CreateDbContext(string[] args)
+ {
+ var optionsBuilder = new DbContextOptionsBuilder();
+ optionsBuilder.UseSqlite("DataSource=design-time-temp.db");
+ return new ApplicationDbContext(optionsBuilder.Options);
+ }
+}
diff --git a/1-Nine.Infrastructure/Data/Migrations/20260313122831_RenameIsAvailableToIsActive.Designer.cs b/1-Nine.Infrastructure/Data/Migrations/20260313122831_RenameIsAvailableToIsActive.Designer.cs
new file mode 100644
index 0000000..26f5cae
--- /dev/null
+++ b/1-Nine.Infrastructure/Data/Migrations/20260313122831_RenameIsAvailableToIsActive.Designer.cs
@@ -0,0 +1,4392 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using Nine.Infrastructure.Data;
+
+#nullable disable
+
+namespace Nine.Infrastructure.Migrations
+{
+ [DbContext(typeof(ApplicationDbContext))]
+ [Migration("20260313122831_RenameIsAvailableToIsActive")]
+ partial class RenameIsAvailableToIsActive
+ {
+ ///
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder.HasAnnotation("ProductVersion", "10.0.1");
+
+ modelBuilder.Entity("Nine.Core.Entities.ApplicationScreening", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("BackgroundCheckCompletedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("BackgroundCheckNotes")
+ .HasMaxLength(1000)
+ .HasColumnType("TEXT");
+
+ b.Property("BackgroundCheckPassed")
+ .HasColumnType("INTEGER");
+
+ b.Property("BackgroundCheckRequested")
+ .HasColumnType("INTEGER");
+
+ b.Property("BackgroundCheckRequestedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreditCheckCompletedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreditCheckNotes")
+ .HasMaxLength(1000)
+ .HasColumnType("TEXT");
+
+ b.Property("CreditCheckPassed")
+ .HasColumnType("INTEGER");
+
+ b.Property("CreditCheckRequested")
+ .HasColumnType("INTEGER");
+
+ b.Property("CreditCheckRequestedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreditScore")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("OverallResult")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("RentalApplicationId")
+ .HasColumnType("TEXT");
+
+ b.Property("ResultNotes")
+ .HasMaxLength(2000)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrganizationId");
+
+ b.HasIndex("OverallResult");
+
+ b.HasIndex("RentalApplicationId")
+ .IsUnique();
+
+ b.ToTable("ApplicationScreenings");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.CalendarEvent", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("Color")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasMaxLength(2000)
+ .HasColumnType("TEXT");
+
+ b.Property("DurationMinutes")
+ .HasColumnType("INTEGER");
+
+ b.Property("EndOn")
+ .HasColumnType("TEXT");
+
+ b.Property("EventType")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("Icon")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Location")
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("PropertyId")
+ .HasColumnType("TEXT");
+
+ b.Property("SourceEntityId")
+ .HasColumnType("TEXT");
+
+ b.Property("SourceEntityType")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("StartOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("Title")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("EventType");
+
+ b.HasIndex("OrganizationId");
+
+ b.HasIndex("PropertyId");
+
+ b.HasIndex("SourceEntityId");
+
+ b.HasIndex("StartOn");
+
+ b.HasIndex("SourceEntityType", "SourceEntityId");
+
+ b.ToTable("CalendarEvents");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.CalendarSettings", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("AutoCreateEvents")
+ .HasColumnType("INTEGER");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("DefaultColor")
+ .HasColumnType("TEXT");
+
+ b.Property("DefaultIcon")
+ .HasColumnType("TEXT");
+
+ b.Property("DisplayOrder")
+ .HasColumnType("INTEGER");
+
+ b.Property("EntityType")
+ .IsRequired()
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("ShowOnCalendar")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("OrganizationId");
+
+ b.HasIndex("OrganizationId", "EntityType")
+ .IsUnique();
+
+ b.ToTable("CalendarSettings");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.Checklist", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("ChecklistTemplateId")
+ .HasColumnType("TEXT");
+
+ b.Property("ChecklistType")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("CompletedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CompletedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("DocumentId")
+ .HasColumnType("TEXT");
+
+ b.Property("GeneralNotes")
+ .HasMaxLength(2000)
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("LeaseId")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("PropertyId")
+ .HasColumnType("TEXT");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChecklistTemplateId");
+
+ b.HasIndex("ChecklistType");
+
+ b.HasIndex("CompletedOn");
+
+ b.HasIndex("DocumentId");
+
+ b.HasIndex("LeaseId");
+
+ b.HasIndex("PropertyId");
+
+ b.HasIndex("Status");
+
+ b.ToTable("Checklists");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.ChecklistItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("CategorySection")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("ChecklistId")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("IsChecked")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemOrder")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemText")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Notes")
+ .HasMaxLength(1000)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("PhotoUrl")
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("RequiresValue")
+ .HasColumnType("INTEGER");
+
+ b.Property("SectionOrder")
+ .HasColumnType("INTEGER");
+
+ b.Property("Value")
+ .HasMaxLength(200)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChecklistId");
+
+ b.ToTable("ChecklistItems");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.ChecklistTemplate", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("Category")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSystemTemplate")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Name")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("Category");
+
+ b.HasIndex("OrganizationId");
+
+ b.ToTable("ChecklistTemplates");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0001-000000000001"),
+ Category = "Tour",
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ Description = "Standard property showing checklist",
+ IsDeleted = false,
+ IsSampleData = false,
+ IsSystemTemplate = true,
+ Name = "Property Tour",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000")
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0001-000000000002"),
+ Category = "MoveIn",
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ Description = "Move-in inspection checklist",
+ IsDeleted = false,
+ IsSampleData = false,
+ IsSystemTemplate = true,
+ Name = "Move-In",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000")
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0001-000000000003"),
+ Category = "MoveOut",
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ Description = "Move-out inspection checklist",
+ IsDeleted = false,
+ IsSampleData = false,
+ IsSystemTemplate = true,
+ Name = "Move-Out",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000")
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0001-000000000004"),
+ Category = "Tour",
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ Description = "Open house event checklist",
+ IsDeleted = false,
+ IsSampleData = false,
+ IsSystemTemplate = true,
+ Name = "Open House",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000")
+ });
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.ChecklistTemplateItem", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("AllowsNotes")
+ .HasColumnType("INTEGER");
+
+ b.Property("CategorySection")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("ChecklistTemplateId")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsRequired")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemOrder")
+ .HasColumnType("INTEGER");
+
+ b.Property("ItemText")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("RequiresValue")
+ .HasColumnType("INTEGER");
+
+ b.Property("SectionOrder")
+ .HasColumnType("INTEGER");
+
+ b.HasKey("Id");
+
+ b.HasIndex("ChecklistTemplateId");
+
+ b.ToTable("ChecklistTemplateItems");
+
+ b.HasData(
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000001"),
+ AllowsNotes = true,
+ CategorySection = "Arrival & Introduction",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 1,
+ ItemText = "Greeted prospect and verified appointment",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000002"),
+ AllowsNotes = true,
+ CategorySection = "Arrival & Introduction",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 2,
+ ItemText = "Reviewed property exterior and curb appeal",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000003"),
+ AllowsNotes = true,
+ CategorySection = "Arrival & Introduction",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 3,
+ ItemText = "Showed parking area/garage",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000004"),
+ AllowsNotes = true,
+ CategorySection = "Interior Tour",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 4,
+ ItemText = "Toured living room/common areas",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 2
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000005"),
+ AllowsNotes = true,
+ CategorySection = "Interior Tour",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 5,
+ ItemText = "Showed all bedrooms",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 2
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000006"),
+ AllowsNotes = true,
+ CategorySection = "Interior Tour",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 6,
+ ItemText = "Showed all bathrooms",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 2
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000007"),
+ AllowsNotes = true,
+ CategorySection = "Kitchen & Appliances",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 7,
+ ItemText = "Toured kitchen and demonstrated appliances",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 3
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000008"),
+ AllowsNotes = true,
+ CategorySection = "Kitchen & Appliances",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 8,
+ ItemText = "Explained which appliances are included",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 3
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000009"),
+ AllowsNotes = true,
+ CategorySection = "Utilities & Systems",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 9,
+ ItemText = "Explained HVAC system and thermostat controls",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 4
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000010"),
+ AllowsNotes = true,
+ CategorySection = "Utilities & Systems",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 10,
+ ItemText = "Reviewed utility responsibilities (tenant vs landlord)",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 4
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000011"),
+ AllowsNotes = true,
+ CategorySection = "Utilities & Systems",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 11,
+ ItemText = "Showed water heater location",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 4
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000012"),
+ AllowsNotes = true,
+ CategorySection = "Storage & Amenities",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 12,
+ ItemText = "Showed storage areas (closets, attic, basement)",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 5
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000013"),
+ AllowsNotes = true,
+ CategorySection = "Storage & Amenities",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 13,
+ ItemText = "Showed laundry facilities",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 5
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000014"),
+ AllowsNotes = true,
+ CategorySection = "Storage & Amenities",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 14,
+ ItemText = "Showed outdoor space (yard, patio, balcony)",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 5
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000015"),
+ AllowsNotes = true,
+ CategorySection = "Lease Terms",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 15,
+ ItemText = "Discussed monthly rent amount",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 6
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000016"),
+ AllowsNotes = true,
+ CategorySection = "Lease Terms",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 16,
+ ItemText = "Explained security deposit and move-in costs",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 6
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000017"),
+ AllowsNotes = true,
+ CategorySection = "Lease Terms",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 17,
+ ItemText = "Reviewed lease term length and start date",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 6
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000018"),
+ AllowsNotes = true,
+ CategorySection = "Lease Terms",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 18,
+ ItemText = "Explained pet policy",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 6
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000019"),
+ AllowsNotes = true,
+ CategorySection = "Next Steps",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 19,
+ ItemText = "Explained application process and requirements",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 7
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000020"),
+ AllowsNotes = true,
+ CategorySection = "Next Steps",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 20,
+ ItemText = "Reviewed screening process (background, credit check)",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 7
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000021"),
+ AllowsNotes = true,
+ CategorySection = "Next Steps",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 21,
+ ItemText = "Answered all prospect questions",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 7
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000022"),
+ AllowsNotes = true,
+ CategorySection = "Assessment",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 22,
+ ItemText = "Prospect Interest Level",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = true,
+ SectionOrder = 8
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000023"),
+ AllowsNotes = true,
+ CategorySection = "Assessment",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000001"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 23,
+ ItemText = "Overall showing feedback and notes",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 8
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000024"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000002"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 1,
+ ItemText = "Document property condition",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000025"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000002"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 2,
+ ItemText = "Collect keys and access codes",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000026"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000002"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 3,
+ ItemText = "Review lease terms with tenant",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000027"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000003"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 1,
+ ItemText = "Inspect property condition",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000028"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000003"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 2,
+ ItemText = "Collect all keys and access devices",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000029"),
+ AllowsNotes = true,
+ CategorySection = "General",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000003"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 3,
+ ItemText = "Document damages and needed repairs",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000030"),
+ AllowsNotes = true,
+ CategorySection = "Preparation",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000004"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 1,
+ ItemText = "Set up signage and directional markers",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000031"),
+ AllowsNotes = true,
+ CategorySection = "Preparation",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000004"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 2,
+ ItemText = "Prepare information packets",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ },
+ new
+ {
+ Id = new Guid("00000000-0000-0000-0002-000000000032"),
+ AllowsNotes = true,
+ CategorySection = "Preparation",
+ ChecklistTemplateId = new Guid("00000000-0000-0000-0001-000000000004"),
+ CreatedBy = "",
+ CreatedOn = new DateTime(2025, 11, 30, 0, 0, 0, 0, DateTimeKind.Utc),
+ IsDeleted = false,
+ IsRequired = true,
+ IsSampleData = false,
+ ItemOrder = 3,
+ ItemText = "Set up visitor sign-in sheet",
+ OrganizationId = new Guid("00000000-0000-0000-0000-000000000000"),
+ RequiresValue = false,
+ SectionOrder = 1
+ });
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.DatabaseSettings", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("INTEGER");
+
+ b.Property("DatabaseEncryptionEnabled")
+ .HasColumnType("INTEGER");
+
+ b.Property("EncryptionChangedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("EncryptionSalt")
+ .HasMaxLength(256)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedBy")
+ .IsRequired()
+ .HasMaxLength(128)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.ToTable("DatabaseSettings");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.Document", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("ContentType")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("DocumentType")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("FileData")
+ .IsRequired()
+ .HasColumnType("BLOB");
+
+ b.Property("FileExtension")
+ .IsRequired()
+ .HasMaxLength(10)
+ .HasColumnType("TEXT");
+
+ b.Property("FileName")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("TEXT");
+
+ b.Property("FilePath")
+ .IsRequired()
+ .HasMaxLength(255)
+ .HasColumnType("TEXT");
+
+ b.Property("FileSize")
+ .HasColumnType("INTEGER");
+
+ b.Property("FileType")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("InvoiceId")
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("LeaseId")
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("PaymentId")
+ .HasColumnType("TEXT");
+
+ b.Property("PropertyId")
+ .HasColumnType("TEXT");
+
+ b.Property("TenantId")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("InvoiceId");
+
+ b.HasIndex("LeaseId");
+
+ b.HasIndex("OrganizationId");
+
+ b.HasIndex("PaymentId");
+
+ b.HasIndex("PropertyId");
+
+ b.HasIndex("TenantId");
+
+ b.ToTable("Documents");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.Inspection", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("ActionItemsRequired")
+ .HasMaxLength(2000)
+ .HasColumnType("TEXT");
+
+ b.Property("BathroomSinkGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("BathroomSinkNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("BathroomToiletGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("BathroomToiletNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("BathroomTubShowerGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("BathroomTubShowerNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("BathroomVentilationGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("BathroomVentilationNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("CalendarEventId")
+ .HasColumnType("TEXT");
+
+ b.Property("CarbonMonoxideDetectorsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("CarbonMonoxideDetectorsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("CompletedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("DocumentId")
+ .HasColumnType("TEXT");
+
+ b.Property("ElectricalSystemGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ElectricalSystemNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorDoorsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorDoorsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorFoundationGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorFoundationNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorGuttersGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorGuttersNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorRoofGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorRoofNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorSidingGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorSidingNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("ExteriorWindowsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("ExteriorWindowsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("GeneralNotes")
+ .HasMaxLength(2000)
+ .HasColumnType("TEXT");
+
+ b.Property("HvacSystemGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("HvacSystemNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("InspectedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("InspectionType")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("InteriorCeilingsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("InteriorCeilingsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("InteriorDoorsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("InteriorDoorsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("InteriorFloorsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("InteriorFloorsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("InteriorWallsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("InteriorWallsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("InteriorWindowsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("InteriorWindowsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("KitchenAppliancesGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("KitchenAppliancesNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("KitchenCabinetsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("KitchenCabinetsNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("KitchenCountersGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("KitchenCountersNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("KitchenSinkPlumbingGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("KitchenSinkPlumbingNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("LandscapingGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("LandscapingNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("LeaseId")
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("OverallCondition")
+ .IsRequired()
+ .HasMaxLength(20)
+ .HasColumnType("TEXT");
+
+ b.Property("PlumbingSystemGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("PlumbingSystemNotes")
+ .HasColumnType("TEXT");
+
+ b.Property("PropertyId")
+ .HasColumnType("TEXT");
+
+ b.Property("SmokeDetectorsGood")
+ .HasColumnType("INTEGER");
+
+ b.Property("SmokeDetectorsNotes")
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("CompletedOn");
+
+ b.HasIndex("DocumentId");
+
+ b.HasIndex("LeaseId");
+
+ b.HasIndex("PropertyId");
+
+ b.ToTable("Inspections");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.Invoice", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("Amount")
+ .HasPrecision(18, 2)
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("AmountPaid")
+ .HasPrecision(18, 2)
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Description")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("DocumentId")
+ .HasColumnType("TEXT");
+
+ b.Property("DueOn")
+ .HasColumnType("TEXT");
+
+ b.Property("InvoiceNumber")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.Property("InvoicedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("IsDeleted")
+ .HasColumnType("INTEGER");
+
+ b.Property("IsSampleData")
+ .HasColumnType("INTEGER");
+
+ b.Property("LastModifiedBy")
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("LastModifiedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("LateFeeAmount")
+ .HasColumnType("decimal(18,2)");
+
+ b.Property("LateFeeApplied")
+ .HasColumnType("INTEGER");
+
+ b.Property("LateFeeAppliedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("LeaseId")
+ .HasColumnType("TEXT");
+
+ b.Property("Notes")
+ .IsRequired()
+ .HasMaxLength(500)
+ .HasColumnType("TEXT");
+
+ b.Property("OrganizationId")
+ .HasColumnType("TEXT");
+
+ b.Property("PaidOn")
+ .HasColumnType("TEXT");
+
+ b.Property("ReminderSent")
+ .HasColumnType("INTEGER");
+
+ b.Property("ReminderSentOn")
+ .HasColumnType("TEXT");
+
+ b.Property("Status")
+ .IsRequired()
+ .HasMaxLength(50)
+ .HasColumnType("TEXT");
+
+ b.HasKey("Id");
+
+ b.HasIndex("DocumentId");
+
+ b.HasIndex("LeaseId");
+
+ b.HasIndex("OrganizationId", "InvoiceNumber")
+ .IsUnique()
+ .HasDatabaseName("IX_Invoice_OrgId_InvoiceNumber");
+
+ b.ToTable("Invoices");
+ });
+
+ modelBuilder.Entity("Nine.Core.Entities.Lease", b =>
+ {
+ b.Property("Id")
+ .HasColumnType("TEXT");
+
+ b.Property("ActualMoveOutDate")
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedBy")
+ .IsRequired()
+ .HasMaxLength(100)
+ .HasColumnType("TEXT");
+
+ b.Property("CreatedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("DeclinedOn")
+ .HasColumnType("TEXT");
+
+ b.Property("DocumentId")
+ .HasColumnType("TEXT");
+
+ b.Property("EndDate")
+ .HasColumnType("TEXT");
+
+ b.Property("ExpectedMoveOutDate")
+ .HasColumnType("TEXT");
+
+ b.Property