diff --git a/Core/Resgrid.Config/DataConfig.cs b/Core/Resgrid.Config/DataConfig.cs
index 3e2f454b..be3bbdab 100644
--- a/Core/Resgrid.Config/DataConfig.cs
+++ b/Core/Resgrid.Config/DataConfig.cs
@@ -2,8 +2,29 @@
{
public class DataConfig
{
+ ///
+ /// The underlying database engine
+ ///
+ public static DatabaseTypes DatabaseType = DatabaseTypes.SqlServer;
+
+ ///
+ /// The underlying database engine for the document database (does not support SqlServer)
+ ///
+ public static DatabaseTypes DocDatabaseType = DatabaseTypes.MongoDb;
+
public static string ConnectionString = "Server=rgdevserver;Database=Resgrid;User Id=resgrid_app;Password=resgrid123;MultipleActiveResultSets=True;TrustServerCertificate=True;";
+ ///
+ /// Connection string for the core relational Resgrid database
+ ///
+ public static string CoreConnectionString = "";
+
+ ///
+ /// Connection string for storing JSON document types (Postgres)
+ ///
+ public static string DocumentConnectionString = "";
+
+
public static string NoSqlConnectionString = "mongodb://resgrid:resgrid123@rgdevserver:27017";
public static string NoSqlDatabaseName = "resgrid";
public static string NoSqlApplicationName = "Resgrid";
@@ -11,5 +32,13 @@ public class DataConfig
public static string UsersIdentityRoleId = "38b461d7-e848-46ef-8c06-ece5b618d9d1";
public static string AdminsIdentityRoleId = "1f6a03a8-62f4-4179-80fc-2eb96266cf04";
public static string AffiliatesIdentityRoleId = "3aba8863-e46d-40cc-ab86-309f9c3e4f97";
+ public static string QueryPrefix = "";
+ }
+
+ public enum DatabaseTypes
+ {
+ SqlServer,
+ Postgres,
+ MongoDb
}
}
diff --git a/Core/Resgrid.Config/OidcConfig.cs b/Core/Resgrid.Config/OidcConfig.cs
index 45b8cd9a..4cf2df18 100644
--- a/Core/Resgrid.Config/OidcConfig.cs
+++ b/Core/Resgrid.Config/OidcConfig.cs
@@ -6,6 +6,11 @@ namespace Resgrid.Config
{
public static class OidcConfig
{
+ ///
+ /// The underlying database engine for the OIDC database (Does not support Mongo)
+ ///
+ public static DatabaseTypes DatabaseType = DatabaseTypes.SqlServer;
+
public static string Key = "";
public static string ConnectionString = "Server=rgdevserver;Database=ResgridOIDC;User Id=resgrid_odic;Password=resgrid123;MultipleActiveResultSets=True;TrustServerCertificate=True;";
diff --git a/Core/Resgrid.Config/WorkerConfig.cs b/Core/Resgrid.Config/WorkerConfig.cs
index 43ea2c83..a1e13233 100644
--- a/Core/Resgrid.Config/WorkerConfig.cs
+++ b/Core/Resgrid.Config/WorkerConfig.cs
@@ -2,6 +2,11 @@
{
public static class WorkerConfig
{
+ ///
+ /// The underlying database engine for the worker database (Does not support Mongo)
+ ///
+ public static DatabaseTypes DatabaseType = DatabaseTypes.SqlServer;
+
public static string WorkerDbConnectionString = "Server=rgdevserver;Database=ResgridWorkers;User Id=resgrid_workers;Password=resgrid123;MultipleActiveResultSets=True;";
public static string PayloadKey = "XsBYpdbdHkhuGsU3tvTMawyV6d3M2F8EQ8wQ2jVLBREECQmwngACk2hm4Ykb7eW7Qsm6za8RdJBY5Z3xvN6erYry47nJ5XmL";
}
diff --git a/Core/Resgrid.Model/MapLayer.cs b/Core/Resgrid.Model/MapLayer.cs
index 9dc9ea4f..e7862d9d 100644
--- a/Core/Resgrid.Model/MapLayer.cs
+++ b/Core/Resgrid.Model/MapLayer.cs
@@ -12,43 +12,67 @@ namespace Resgrid.Model
public class MapLayer: NoSqlDocument
{
[BsonElement("departmentId")]
+ [JsonProperty(PropertyName = "departmentId")]
public int DepartmentId { get; set; }
[Required]
[MaxLength(250)]
[BsonElement("name")]
+ [JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[BsonElement("type")]
+ [JsonProperty(PropertyName = "type")]
public int Type { get; set; }
[Required]
[MaxLength(50)]
[BsonElement("color")]
+ [JsonProperty(PropertyName = "color")]
public string Color { get; set; }
[BsonElement("data")]
+ [JsonProperty(PropertyName = "data")]
public MapLayerData Data { get; set; }
[BsonElement("isSearchable")]
+ [JsonProperty(PropertyName = "isSearchable")]
public bool IsSearchable { get; set; }
[BsonElement("isOnByDefault")]
+ [JsonProperty(PropertyName = "isOnByDefault")]
public bool IsOnByDefault { get; set; }
[BsonElement("addedById")]
+ [JsonProperty(PropertyName = "addedById")]
public string AddedById { get; set; }
[BsonElement("addedOn")]
+ [JsonProperty(PropertyName = "addedOn")]
public DateTime AddedOn { get; set; }
[BsonElement("isDeleted")]
+ [JsonProperty(PropertyName = "isDeleted")]
public bool IsDeleted { get; set; }
[BsonElement("updatedById")]
+ [JsonProperty(PropertyName = "updatedById")]
public string UpdatedById { get; set; }
[BsonElement("updatedOn")]
+ [JsonProperty(PropertyName = "updatedOn")]
public DateTime UpdatedOn { get; set; }
+
+ [BsonIgnore()]
+ [JsonProperty(PropertyName = "id")]
+ public string PgId { get; set; }
+
+ public string GetId()
+ {
+ if (!String.IsNullOrWhiteSpace(PgId))
+ return PgId;
+
+ return Id.ToString();
+ }
}
}
diff --git a/Core/Resgrid.Model/PersonnelLocation.cs b/Core/Resgrid.Model/PersonnelLocation.cs
index 53fc822a..47daa2b0 100644
--- a/Core/Resgrid.Model/PersonnelLocation.cs
+++ b/Core/Resgrid.Model/PersonnelLocation.cs
@@ -39,5 +39,16 @@ public class PersonnelLocation : NoSqlDocument
[BsonElement("heading")]
public decimal? Heading { get; set; }
+
+ [BsonIgnore()]
+ public string PgId { get; set; }
+
+ public string GetId()
+ {
+ if (!String.IsNullOrWhiteSpace(PgId))
+ return PgId;
+
+ return Id.ToString();
+ }
}
}
diff --git a/Core/Resgrid.Model/Repositories/IMapLayersRepository.cs b/Core/Resgrid.Model/Repositories/IMapLayersRepository.cs
new file mode 100644
index 00000000..89694c98
--- /dev/null
+++ b/Core/Resgrid.Model/Repositories/IMapLayersRepository.cs
@@ -0,0 +1,14 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Resgrid.Model.Repositories
+{
+ public interface IMapLayersDocRepository
+ {
+ Task> GetAllMapLayersByDepartmentIdAsync(int departmentId, MapLayerTypes type);
+ Task GetByIdAsync(string id);
+ Task GetByOldIdAsync(string id);
+ Task InsertAsync(MapLayer mapLayer);
+ Task UpdateAsync(MapLayer mapLayer);
+ }
+}
diff --git a/Core/Resgrid.Model/Repositories/IOidcRepository.cs b/Core/Resgrid.Model/Repositories/IOidcRepository.cs
index b135ffcc..48ec410d 100644
--- a/Core/Resgrid.Model/Repositories/IOidcRepository.cs
+++ b/Core/Resgrid.Model/Repositories/IOidcRepository.cs
@@ -1,4 +1,6 @@
-namespace Resgrid.Model.Repositories
+using System.Threading.Tasks;
+
+namespace Resgrid.Model.Repositories
{
///
/// Interface IOidcRepository
@@ -9,6 +11,6 @@ public interface IOidcRepository
/// Updates the Oidc Database
///
/// If the operation was successful
- bool UpdateOidcDatabase();
+ Task UpdateOidcDatabaseAsync();
}
}
diff --git a/Core/Resgrid.Model/Repositories/IPersonnelLocationsDocRepository.cs b/Core/Resgrid.Model/Repositories/IPersonnelLocationsDocRepository.cs
new file mode 100644
index 00000000..3464fb8a
--- /dev/null
+++ b/Core/Resgrid.Model/Repositories/IPersonnelLocationsDocRepository.cs
@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Resgrid.Model.Repositories
+{
+ public interface IPersonnelLocationsDocRepository
+ {
+ Task> GetAllLocationsByUnitIdAsync(string userId);
+ Task GetLatestLocationsByUnitIdAsync(string userId);
+ Task> GetLatestLocationsByDepartmentIdAsync(int departmentId);
+ Task GetByIdAsync(string id);
+ Task GetByOldIdAsync(string id);
+ Task InsertAsync(PersonnelLocation location);
+ }
+}
diff --git a/Core/Resgrid.Model/Repositories/IUnitLocationsDocRepository.cs b/Core/Resgrid.Model/Repositories/IUnitLocationsDocRepository.cs
new file mode 100644
index 00000000..3fb3b9c5
--- /dev/null
+++ b/Core/Resgrid.Model/Repositories/IUnitLocationsDocRepository.cs
@@ -0,0 +1,15 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+namespace Resgrid.Model.Repositories
+{
+ public interface IUnitLocationsDocRepository
+ {
+ Task> GetAllLocationsByUnitIdAsync(int unitId);
+ Task GetLatestLocationsByUnitIdAsync(int unitId);
+ Task> GetLatestLocationsByDepartmentIdAsync(int departmentId);
+ Task GetByIdAsync(string id);
+ Task GetByOldIdAsync(string id);
+ Task InsertAsync(UnitsLocation location);
+ }
+}
diff --git a/Core/Resgrid.Model/UnitsLocation.cs b/Core/Resgrid.Model/UnitsLocation.cs
index 2ddaa231..b4b4cf79 100644
--- a/Core/Resgrid.Model/UnitsLocation.cs
+++ b/Core/Resgrid.Model/UnitsLocation.cs
@@ -39,5 +39,16 @@ public class UnitsLocation : NoSqlDocument
[BsonElement("heading")]
public decimal? Heading { get; set; }
+
+ [BsonIgnore()]
+ public string PgId { get; set; }
+
+ public string GetId()
+ {
+ if (!String.IsNullOrWhiteSpace(PgId))
+ return PgId;
+
+ return Id.ToString();
+ }
}
}
diff --git a/Core/Resgrid.Services/MappingService.cs b/Core/Resgrid.Services/MappingService.cs
index 2dbda040..b88c09b7 100644
--- a/Core/Resgrid.Services/MappingService.cs
+++ b/Core/Resgrid.Services/MappingService.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -13,12 +14,15 @@ public class MappingService : IMappingService
private readonly IPoiTypesRepository _poiTypesRepository;
private readonly IPoisRepository _poisRepository;
private readonly IMongoRepository _mapLayersRepository;
+ private readonly IMapLayersDocRepository _mapLayersDocRepository;
- public MappingService(IPoiTypesRepository poiTypesRepository, IPoisRepository poisRepository, IMongoRepository mapLayersRepository)
+ public MappingService(IPoiTypesRepository poiTypesRepository, IPoisRepository poisRepository, IMongoRepository mapLayersRepository,
+ IMapLayersDocRepository mapLayersDocRepository)
{
_poiTypesRepository = poiTypesRepository;
_poisRepository = poisRepository;
_mapLayersRepository = mapLayersRepository;
+ _mapLayersDocRepository = mapLayersDocRepository;
}
public async Task SavePOITypeAsync(PoiType type, CancellationToken cancellationToken = default(CancellationToken))
@@ -59,26 +63,56 @@ public async Task GetTypeByIdAsync(int poiTypeId)
public async Task SaveMapLayerAsync(MapLayer mapLayer)
{
- if (mapLayer.Id.Timestamp == 0)
- await _mapLayersRepository.InsertOneAsync(mapLayer);
+ if (Config.DataConfig.DocDatabaseType == Config.DatabaseTypes.Postgres)
+ {
+ if (String.IsNullOrEmpty(mapLayer.PgId))
+ await _mapLayersDocRepository.InsertAsync(mapLayer);
+ else
+ await _mapLayersDocRepository.UpdateAsync(mapLayer);
+
+ return mapLayer;
+ }
else
- await _mapLayersRepository.ReplaceOneAsync(mapLayer);
+ {
+ if (mapLayer.Id.Timestamp == 0)
+ await _mapLayersRepository.InsertOneAsync(mapLayer);
+ else
+ await _mapLayersRepository.ReplaceOneAsync(mapLayer);
- return mapLayer;
+ return mapLayer;
+ }
}
public async Task> GetMapLayersForTypeDepartmentAsync(int departmentId, MapLayerTypes type)
{
- var layers = await _mapLayersRepository.FilterByAsync(filter => filter.DepartmentId == departmentId && filter.Type == (int)type && filter.IsDeleted == false);
+ if (Config.DataConfig.DocDatabaseType == Config.DatabaseTypes.Postgres)
+ {
+ var layers = await _mapLayersDocRepository.GetAllMapLayersByDepartmentIdAsync(departmentId, type);
- return layers.ToList();
+ return layers;
+ }
+ else
+ {
+ var layers = await _mapLayersRepository.FilterByAsync(filter => filter.DepartmentId == departmentId && filter.Type == (int)type && filter.IsDeleted == false);
+
+ return layers.ToList();
+ }
}
public async Task GetMapLayersByIdAsync(string id)
{
- var layers = await _mapLayersRepository.FindByIdAsync(id);
+ if (Config.DataConfig.DocDatabaseType == Config.DatabaseTypes.Postgres)
+ {
+ var layers = await _mapLayersDocRepository.GetByIdAsync(id);
+
+ return layers;
+ }
+ else
+ {
+ var layers = await _mapLayersRepository.FindByIdAsync(id);
- return layers;
+ return layers;
+ }
}
}
}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0001_InitialMigrationPg.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0001_InitialMigrationPg.cs
new file mode 100644
index 00000000..7954aafd
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0001_InitialMigrationPg.cs
@@ -0,0 +1,18 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(1)]
+ public class M0001_InitialMigrationPg : Migration
+ {
+ public override void Up()
+ {
+ Execute.EmbeddedScript("Resgrid.Providers.MigrationsPg.Sql.M0001_InitialMigration.sql");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0002_AddingContacts.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0002_AddingContacts.cs
new file mode 100644
index 00000000..f4a4b204
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0002_AddingContacts.cs
@@ -0,0 +1,39 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(2)]
+ public class M0002_AddingContacts : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("Contacts")
+ .WithColumn("ContactId").AsInt32().NotNullable().PrimaryKey().Identity()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("ContactTypeId").AsInt32()
+ .WithColumn("Name").AsCustom("citext").NotNullable()
+ .WithColumn("PhoneNumber").AsCustom("citext")
+ .WithColumn("FaxNumber").AsCustom("citext")
+ .WithColumn("Email").AsCustom("citext")
+ .WithColumn("Twitter").AsCustom("citext")
+ .WithColumn("Facebook").AsCustom("citext")
+ .WithColumn("Notes").AsCustom("citext")
+ .WithColumn("Address").AsCustom("citext")
+ .WithColumn("City").AsCustom("citext")
+ .WithColumn("State").AsCustom("citext")
+ .WithColumn("PostalCode").AsCustom("citext")
+ .WithColumn("Country").AsCustom("citext")
+ .WithColumn("Location").AsCustom("citext");
+
+
+ Create.ForeignKey("FK_Conacts_Departments")
+ .FromTable("Contacts").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+ }
+
+ public override void Down()
+ {
+ Delete.Table("Contacts");
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0003_AddingUnitActiveRoles.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0003_AddingUnitActiveRoles.cs
new file mode 100644
index 00000000..d06469e2
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0003_AddingUnitActiveRoles.cs
@@ -0,0 +1,33 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(3)]
+ public class M0003_AddingUnitActiveRoles : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("UnitActiveRoles")
+ .WithColumn("UnitActiveRoleId").AsInt32().NotNullable().PrimaryKey().Identity()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("UnitId").AsInt32().NotNullable()
+ .WithColumn("Role").AsCustom("citext").NotNullable()
+ .WithColumn("UserId").AsCustom("citext").NotNullable()
+ .WithColumn("UpdatedOn").AsDateTime().NotNullable()
+ .WithColumn("UpdatedBy").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_UnitActiveRoles_Departments")
+ .FromTable("UnitActiveRoles").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.ForeignKey("FK_UnitActiveRoles_Units")
+ .FromTable("UnitActiveRoles").ForeignColumn("UnitId")
+ .ToTable("Units").PrimaryColumn("UnitId");
+ }
+
+ public override void Down()
+ {
+ Delete.Table("UnitActiveRoles");
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0004_AddingSortToTemplates.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0004_AddingSortToTemplates.cs
new file mode 100644
index 00000000..22dfac41
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0004_AddingSortToTemplates.cs
@@ -0,0 +1,18 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(4)]
+ public class M0004_AddingSortToTemplates : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("CallQuickTemplates").AddColumn("Sort").AsInt32().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0005_AddingForms.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0005_AddingForms.cs
new file mode 100644
index 00000000..004e0a63
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0005_AddingForms.cs
@@ -0,0 +1,48 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(5)]
+ public class M0005_AddingForms : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("Forms")
+ .WithColumn("FormId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("Type").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext").NotNullable()
+ .WithColumn("IsActive").AsBoolean()
+ .WithColumn("IsDeleted").AsBoolean()
+ .WithColumn("Data").AsCustom("citext")
+ .WithColumn("CreatedOn").AsDateTime2()
+ .WithColumn("CreatedBy").AsCustom("citext")
+ .WithColumn("UpdatedOn").AsDateTime2()
+ .WithColumn("UpdatedBy").AsCustom("citext");
+
+ Create.Table("FormAutomations")
+ .WithColumn("FormAutomationId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("FormId").AsCustom("citext").NotNullable()
+ .WithColumn("TriggerField").AsCustom("citext").NotNullable()
+ .WithColumn("TriggerValue").AsCustom("citext")
+ .WithColumn("OperationType").AsInt32().NotNullable()
+ .WithColumn("OperationValue").AsCustom("citext");
+
+
+ Create.ForeignKey("FK_Forms_Departments")
+ .FromTable("Forms").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.ForeignKey("FK_FormAutomations_Forms")
+ .FromTable("FormAutomations").ForeignColumn("FormId")
+ .ToTable("Forms").PrimaryColumn("FormId");
+ }
+
+ public override void Down()
+ {
+ Delete.Table("Forms");
+ Delete.Table("FormAutomations");
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0006_AddingFormDataToCalls.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0006_AddingFormDataToCalls.cs
new file mode 100644
index 00000000..0f10b76e
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0006_AddingFormDataToCalls.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(6)]
+ public class M0006_AddingFormDataToCalls : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Calls").AddColumn("CallFormData").AsCustom("citext").Nullable();
+ Alter.Table("Calls").AddColumn("ContactId").AsInt32().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0007_AddingDispatchOnToCalls.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0007_AddingDispatchOnToCalls.cs
new file mode 100644
index 00000000..ca5a983a
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0007_AddingDispatchOnToCalls.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(7)]
+ public class M0007_AddingDispatchOnToCalls : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Calls").AddColumn("DispatchOn").AsDateTime2().Nullable();
+ Alter.Table("Calls").AddColumn("HasBeenDispatched").AsBoolean().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0008_AddingAddonsInvoices.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0008_AddingAddonsInvoices.cs
new file mode 100644
index 00000000..a04289ea
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0008_AddingAddonsInvoices.cs
@@ -0,0 +1,62 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(8)]
+ public class M0008_AddingAddonsInvoices : Migration
+ {
+ public override void Up()
+ {
+ // Adding in Invoice limits
+
+ // Enterprise Plus Plan Invoice Limits
+ Insert.IntoTable("PlanLimits").Row(new { PlanId = 1, LimitType = 5, LimitValue = 100000 });
+
+ // Finish Adding in Invoice limits
+
+ Create.Table("PlanAddons")
+ .WithColumn("PlanAddonId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("PlanId").AsInt32().NotNullable()
+ .WithColumn("AddonType").AsInt32().NotNullable()
+ .WithColumn("Cost").AsDecimal().NotNullable()
+ .WithColumn("ExternalId").AsCustom("citext");
+
+ Create.ForeignKey("FK_PlanAddons_Plans")
+ .FromTable("PlanAddons").ForeignColumn("PlanId")
+ .ToTable("Plans").PrimaryColumn("PlanId");
+
+ // Standard Plan PTT Addon
+ Insert.IntoTable("PlanAddons").Row(new { PlanAddonId = "456ed5d4-57e1-4882-b433-1d3cc239103d", PlanId = 1, AddonType = 1, Cost = 0, ExternalId = "" });
+
+ Create.Table("PaymentAddons")
+ .WithColumn("PaymentAddonId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("PlanAddonId").AsCustom("citext").NotNullable()
+ .WithColumn("PurchaseOn").AsDateTime2().NotNullable()
+ .WithColumn("EffectiveOn").AsDateTime2().NotNullable()
+ .WithColumn("EndingOn").AsDateTime2().NotNullable()
+ .WithColumn("Amount").AsDecimal().NotNullable()
+ .WithColumn("Description").AsCustom("citext").NotNullable()
+ .WithColumn("TransactionId").AsCustom("citext").NotNullable()
+ .WithColumn("SubscriptionId").AsCustom("citext").NotNullable()
+ .WithColumn("Data").AsCustom("citext").NotNullable()
+ .WithColumn("IsCancelled").AsBoolean().Nullable()
+ .WithColumn("CancelledOn").AsDateTime2().Nullable()
+ .WithColumn("CancelledData").AsCustom("citext").Nullable();
+
+ Create.ForeignKey("FK_PaymentAddons_Departments")
+ .FromTable("PaymentAddons").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.ForeignKey("FK_PaymentAddons_PlanAddons")
+ .FromTable("PaymentAddons").ForeignColumn("PlanAddonId")
+ .ToTable("PlanAddons").PrimaryColumn("PlanAddonId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0009_AddingDepartmentVoice.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0009_AddingDepartmentVoice.cs
new file mode 100644
index 00000000..479cfb99
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0009_AddingDepartmentVoice.cs
@@ -0,0 +1,56 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(9)]
+ public class M0009_AddingDepartmentVoice : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("DepartmentVoices")
+ .WithColumn("DepartmentVoiceId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("StartConferenceNumber").AsInt32().NotNullable();
+
+ Create.ForeignKey("FK_DepartmentVoices_Department")
+ .FromTable("DepartmentVoices").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.Table("DepartmentVoiceChannels")
+ .WithColumn("DepartmentVoiceChannelId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentVoiceId").AsCustom("citext").NotNullable()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext")
+ .WithColumn("SystemConferenceId").AsCustom("citext")
+ .WithColumn("SystemCallflowId").AsCustom("citext")
+ .WithColumn("ConferenceNumber").AsInt32()
+ .WithColumn("IsDefault").AsBoolean();
+
+ Create.ForeignKey("FK_DepartmentVoiceChannels_Department")
+ .FromTable("DepartmentVoiceChannels").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.ForeignKey("FK_DepartmentVoiceChannels_DepartmentVoices")
+ .FromTable("DepartmentVoiceChannels").ForeignColumn("DepartmentVoiceId")
+ .ToTable("DepartmentVoices").PrimaryColumn("DepartmentVoiceId");
+
+ Create.Table("DepartmentVoiceUsers")
+ .WithColumn("DepartmentVoiceUserId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentVoiceId").AsCustom("citext").NotNullable()
+ .WithColumn("UserId").AsCustom("citext").NotNullable()
+ .WithColumn("SystemUserId").AsCustom("citext")
+ .WithColumn("SystemDeviceId").AsCustom("citext");
+
+ Create.ForeignKey("FK_DepartmentVoiceUsers_DepartmentVoices")
+ .FromTable("DepartmentVoiceUsers").ForeignColumn("DepartmentVoiceId")
+ .ToTable("DepartmentVoices").PrimaryColumn("DepartmentVoiceId");
+
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0010_AddingSystemAudits.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0010_AddingSystemAudits.cs
new file mode 100644
index 00000000..37ffb3ac
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0010_AddingSystemAudits.cs
@@ -0,0 +1,30 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(10)]
+ public class M0010_AddingSystemAudits : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("SystemAudits")
+ .WithColumn("SystemAuditId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().Nullable()
+ .WithColumn("Type").AsInt32().NotNullable()
+ .WithColumn("System").AsInt32().NotNullable()
+ .WithColumn("UserId").AsCustom("citext").Nullable()
+ .WithColumn("Username").AsCustom("citext").Nullable()
+ .WithColumn("IpAddress").AsCustom("citext")
+ .WithColumn("Data").AsCustom("citext")
+ .WithColumn("Successful").AsBoolean().NotNullable()
+ .WithColumn("ServerName").AsCustom("citext")
+ .WithColumn("LoggedOn").AsDateTime2().NotNullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0011_AddingAutofills.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0011_AddingAutofills.cs
new file mode 100644
index 00000000..efcd87e5
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0011_AddingAutofills.cs
@@ -0,0 +1,27 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(11)]
+ public class M0011_AddingAutofills : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("Autofills")
+ .WithColumn("AutofillId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().Nullable()
+ .WithColumn("Type").AsInt32().NotNullable()
+ .WithColumn("Sort").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext")
+ .WithColumn("Data").AsCustom("citext")
+ .WithColumn("AddedByUserId").AsCustom("citext").Nullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0012_UpdatingUnitCallTypes.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0012_UpdatingUnitCallTypes.cs
new file mode 100644
index 00000000..e6101e2b
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0012_UpdatingUnitCallTypes.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(12)]
+ public class M0012_UpdatingUnitCallTypes : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("UnitTypes").AddColumn("MapIconType").AsInt32().Nullable();
+ Alter.Table("CallTypes").AddColumn("MapIconType").AsInt32().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0013_UpdatingLinkedCall.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0013_UpdatingLinkedCall.cs
new file mode 100644
index 00000000..5af775f7
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0013_UpdatingLinkedCall.cs
@@ -0,0 +1,19 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(13)]
+ public class M0013_UpdatingLinkedCall : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Calls").AddColumn("LinkedCallId").AsInt32().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0014_AddingWorkshifts.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0014_AddingWorkshifts.cs
new file mode 100644
index 00000000..986a0a13
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0014_AddingWorkshifts.cs
@@ -0,0 +1,73 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(14)]
+ public class M0014_AddingWorkshifts : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("Workshifts")
+ .WithColumn("WorkshiftId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("Type").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext").NotNullable()
+ .WithColumn("Color").AsCustom("citext").NotNullable()
+ .WithColumn("Start").AsDateTime2().NotNullable()
+ .WithColumn("End").AsDateTime2().NotNullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedById").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_Workshifts_Department")
+ .FromTable("Workshifts").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+
+ Create.Table("WorkshiftDays")
+ .WithColumn("WorkshiftDayId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("WorkshiftId").AsCustom("citext").NotNullable()
+ .WithColumn("Day").AsDateTime2().NotNullable()
+ .WithColumn("Processed").AsBoolean().NotNullable();
+
+ Create.ForeignKey("FK_WorkshiftDays_Workshifts")
+ .FromTable("WorkshiftDays").ForeignColumn("WorkshiftId")
+ .ToTable("Workshifts").PrimaryColumn("WorkshiftId");
+
+ Create.Table("WorkshiftEntities")
+ .WithColumn("WorkshiftEntityId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("WorkshiftId").AsCustom("citext").NotNullable()
+ .WithColumn("BackingId").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_WorkshiftEntities_Workshifts")
+ .FromTable("WorkshiftEntities").ForeignColumn("WorkshiftId")
+ .ToTable("Workshifts").PrimaryColumn("WorkshiftId");
+
+ Create.Table("WorkshiftFills")
+ .WithColumn("WorkshiftFillId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("WorkshiftId").AsCustom("citext").NotNullable()
+ .WithColumn("WorkshiftDayId").AsCustom("citext").NotNullable()
+ .WithColumn("WorkshiftEntityId").AsCustom("citext").NotNullable()
+ .WithColumn("FilledById").AsInt32().NotNullable()
+ .WithColumn("Approved").AsBoolean().NotNullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedById").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_WorkshiftFills_Workshifts")
+ .FromTable("WorkshiftFills").ForeignColumn("WorkshiftId")
+ .ToTable("Workshifts").PrimaryColumn("WorkshiftId");
+
+ Create.ForeignKey("FK_WorkshiftFills_WorkshiftDays")
+ .FromTable("WorkshiftFills").ForeignColumn("WorkshiftDayId")
+ .ToTable("WorkshiftDays").PrimaryColumn("WorkshiftDayId");
+
+ Create.ForeignKey("FK_WorkshiftFills_WorkshiftEntities")
+ .FromTable("WorkshiftFills").ForeignColumn("WorkshiftEntityId")
+ .ToTable("WorkshiftEntities").PrimaryColumn("WorkshiftEntityId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0015_AddingMissingWorkshiftValues.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0015_AddingMissingWorkshiftValues.cs
new file mode 100644
index 00000000..6e3f4c8b
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0015_AddingMissingWorkshiftValues.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(15)]
+ public class M0015_AddingMissingWorkshiftValues : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Workshifts").AddColumn("Description").AsCustom("citext").Nullable();
+ Alter.Table("WorkshiftFills").AddColumn("ReferenceId").AsCustom("citext").Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0016_AddingUnifiedPlan.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0016_AddingUnifiedPlan.cs
new file mode 100644
index 00000000..cef1e27d
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0016_AddingUnifiedPlan.cs
@@ -0,0 +1,19 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(16)]
+ public class M0016_AddingUnifiedPlan : Migration
+ {
+ public override void Up()
+ {
+
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0017_AddingToAuditTable.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0017_AddingToAuditTable.cs
new file mode 100644
index 00000000..1b1660b8
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0017_AddingToAuditTable.cs
@@ -0,0 +1,23 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(17)]
+ public class M0017_AddingToAuditTable : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("AuditLogs").AddColumn("IpAddress").AsCustom("citext").Nullable();
+ Alter.Table("AuditLogs").AddColumn("Successful").AsBoolean().Nullable();
+ Alter.Table("AuditLogs").AddColumn("ObjectId").AsCustom("citext").Nullable();
+ Alter.Table("AuditLogs").AddColumn("ObjectDepartmentId").AsInt32().Nullable();
+ Alter.Table("AuditLogs").AddColumn("UserAgent").AsCustom("citext").Nullable();
+ Alter.Table("AuditLogs").AddColumn("ServerName").AsCustom("citext").Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0018_AddingToCallNotesAndFiles.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0018_AddingToCallNotesAndFiles.cs
new file mode 100644
index 00000000..ef99f3ed
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0018_AddingToCallNotesAndFiles.cs
@@ -0,0 +1,37 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(18)]
+ public class M0018_AddingToCallNotesAndFiles : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("CallAttachments").AddColumn("IsDeleted").AsBoolean().NotNullable().WithDefaultValue(false);
+ Alter.Table("CallAttachments").AddColumn("IsFlagged").AsBoolean().NotNullable().WithDefaultValue(false);
+ Alter.Table("CallAttachments").AddColumn("FlaggedReason").AsCustom("citext").Nullable();
+ Alter.Table("CallAttachments").AddColumn("FlaggedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("CallAttachments").AddColumn("DeletedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("CallAttachments").AddColumn("FlaggedOn").AsDateTime2().Nullable();
+ Alter.Table("CallAttachments").AddColumn("DeletedOn").AsDateTime2().Nullable();
+
+ Alter.Table("CallNotes").AddColumn("IsDeleted").AsBoolean().NotNullable().WithDefaultValue(false);
+ Alter.Table("CallNotes").AddColumn("IsFlagged").AsBoolean().NotNullable().WithDefaultValue(false);
+ Alter.Table("CallNotes").AddColumn("FlaggedReason").AsCustom("citext").Nullable();
+ Alter.Table("CallNotes").AddColumn("FlaggedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("CallNotes").AddColumn("DeletedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("CallNotes").AddColumn("FlaggedOn").AsDateTime2().Nullable();
+ Alter.Table("CallNotes").AddColumn("DeletedOn").AsDateTime2().Nullable();
+
+ Alter.Table("CallDispatches").AddColumn("DispatchedOn").AsDateTime2().NotNullable().WithDefault(SystemMethods.CurrentUTCDateTime); ;
+ Alter.Table("CallDispatchGroups").AddColumn("DispatchedOn").AsDateTime2().NotNullable().WithDefault(SystemMethods.CurrentUTCDateTime); ;
+ Alter.Table("CallDispatchRoles").AddColumn("DispatchedOn").AsDateTime2().NotNullable().WithDefault(SystemMethods.CurrentUTCDateTime); ;
+ Alter.Table("CallDispatchUnits").AddColumn("DispatchedOn").AsDateTime2().NotNullable().WithDefault(SystemMethods.CurrentUTCDateTime); ;
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0019_AddingDeleteReasonToCalls.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0019_AddingDeleteReasonToCalls.cs
new file mode 100644
index 00000000..0e6193c3
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0019_AddingDeleteReasonToCalls.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(19)]
+ public class M0019_AddingDeleteReasonToCalls : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Calls").AddColumn("DeletedReason").AsCustom("citext").Nullable();
+ Alter.Table("Calls").AddColumn("DeletedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("Calls").AddColumn("DeletedOn").AsDateTime2().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0020_AddingLangToUPAndSystemQ.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0020_AddingLangToUPAndSystemQ.cs
new file mode 100644
index 00000000..a9b448c9
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0020_AddingLangToUPAndSystemQ.cs
@@ -0,0 +1,26 @@
+using FluentMigrator;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(20)]
+ public class M0020_AddingLangToUPAndSystemQ : Migration
+ {
+ public override void Up()
+ {
+ // Adding Language to User Profile
+ Alter.Table("UserProfiles").AddColumn("Language").AsCustom("citext").Nullable();
+
+ // Updating Queue Item to handle System Queue stuff (i.e. Delete Account and Department requests)
+ Alter.Table("QueueItems").AddColumn("ToBeCompletedOn").AsDateTime2().Nullable();
+ Alter.Table("QueueItems").AddColumn("Reason").AsCustom("citext").Nullable();
+ Alter.Table("QueueItems").AddColumn("QueuedByUserId").AsCustom("citext").Nullable();
+ Alter.Table("QueueItems").AddColumn("Data").AsCustom("citext").Nullable();
+ Alter.Table("QueueItems").AddColumn("ReminderCount").AsInt32().Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0021_AddingCallReferences.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0021_AddingCallReferences.cs
new file mode 100644
index 00000000..2ed16d53
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0021_AddingCallReferences.cs
@@ -0,0 +1,33 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(21)]
+ public class M0021_AddingCallReferences : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("CallReferences")
+ .WithColumn("CallReferenceId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("SourceCallId").AsInt32().NotNullable()
+ .WithColumn("TargetCallId").AsInt32().NotNullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedByUserId").AsCustom("citext").NotNullable()
+ .WithColumn("Note").AsCustom("citext").Nullable();
+
+ Create.ForeignKey("FK_CallReferences_Call_Source")
+ .FromTable("CallReferences").ForeignColumn("SourceCallId")
+ .ToTable("Calls").PrimaryColumn("CallId");
+
+ Create.ForeignKey("FK_CallReferences_Call_Target")
+ .FromTable("CallReferences").ForeignColumn("TargetCallId")
+ .ToTable("Calls").PrimaryColumn("CallId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0022_AddingQuantityForPlanAddon.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0022_AddingQuantityForPlanAddon.cs
new file mode 100644
index 00000000..38423baf
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0022_AddingQuantityForPlanAddon.cs
@@ -0,0 +1,19 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(22)]
+ public class M0022_AddingQuantityForPlanAddon : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("PaymentAddons").AddColumn("Quantity").AsInt64().NotNullable().WithDefaultValue(1);
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0023_AddingPlanAddonFor10Pack.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0023_AddingPlanAddonFor10Pack.cs
new file mode 100644
index 00000000..fd6dd08a
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0023_AddingPlanAddonFor10Pack.cs
@@ -0,0 +1,26 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(23)]
+ public class M0023_AddingPlanAddonFor10Pack : Migration
+ {
+ public override void Up()
+ {
+ if (Schema.Table("PlanAddons").Constraint("FK_PlanAddons_Plans").Exists())
+ {
+ Delete.ForeignKey("FK_PlanAddons_Plans").OnTable("PlanAddons");
+ }
+
+ Alter.Table("PlanAddons").AlterColumn("PlanId").AsInt32().Nullable();
+ Alter.Table("PlanAddons").AddColumn("TestExternalId").AsCustom("citext").Nullable();
+ Insert.IntoTable("PlanAddons").Row(new { PlanAddonId = "6f4c5f8b-584d-4291-8a7d-29bf97ae6aa9", AddonType = 1, Cost = 35, ExternalId = "price_0N7MM5qJFDZJcnkVZy4Z51IC", TestExternalId = "price_0NLHvaqJFDZJcnkVS3DHnRA8" });
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0024_AddingDepartmentAudio.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0024_AddingDepartmentAudio.cs
new file mode 100644
index 00000000..302def37
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0024_AddingDepartmentAudio.cs
@@ -0,0 +1,30 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(24)]
+ public class M0024_AddingDepartmentAudio : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("DepartmentAudios")
+ .WithColumn("DepartmentAudioId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("DepartmentAudioType").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext").Nullable()
+ .WithColumn("Data").AsCustom("citext").Nullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedByUserId").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_DepartmentAudios_Department")
+ .FromTable("DepartmentAudios").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0025_AddingTypeToDepartmentAudio.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0025_AddingTypeToDepartmentAudio.cs
new file mode 100644
index 00000000..375a54a8
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0025_AddingTypeToDepartmentAudio.cs
@@ -0,0 +1,19 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(25)]
+ public class M0025_AddingTypeToDepartmentAudio : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("DepartmentAudios").AddColumn("Type").AsCustom("citext").Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0026_AddingEntityPlan.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0026_AddingEntityPlan.cs
new file mode 100644
index 00000000..6b360a09
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0026_AddingEntityPlan.cs
@@ -0,0 +1,30 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(26)]
+ public class M0026_AddingEntityPlan : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Plans").AddColumn("TestExternalId").AsCustom("citext").Nullable();
+ Alter.Table("Payments").AddColumn("Quantity").AsInt64().NotNullable().WithDefaultValue(1);
+
+ Insert.IntoTable("Plans").Row(new { PlanId = 36, Name = "Entity", Cost = 0, Frequency = 3, ExternalId = "price_0OLxxPqJFDZJcnkVDRHyMUYb", TestExternalId = "price_0OJ0FsqJFDZJcnkVfE87UKr6" });
+ Insert.IntoTable("Plans").Row(new { PlanId = 37, Name = "Entity Monthly", Cost = 0, Frequency = 2, ExternalId = "price_0OLxxPqJFDZJcnkVfJLISCp4", TestExternalId = "price_0OIzLPqJFDZJcnkVRn2tpwFF" });
+
+
+ Insert.IntoTable("PlanLimits").Row(new { PlanId = 36, LimitType = 6, LimitValue = 10 }); // Entities Per Pack
+ Insert.IntoTable("PlanLimits").Row(new { PlanId = 37, LimitType = 6, LimitValue = 10 }); // Entities Per Pack
+
+ Insert.IntoTable("PlanAddons").Row(new { PlanAddonId = "04b6db64-7dbf-4b3d-a1d1-60bffde004b4", PlanId = 36, AddonType = 1, Cost = 30000, ExternalId = "price_0NMZrMqJFDZJcnkVTpb07W60", TestExternalId = "price_0NLHvaqJFDZJcnkVS3DHnRA8" });
+ Insert.IntoTable("PlanAddons").Row(new { PlanAddonId = "8f730f54-2574-445e-875a-5819f8bcda7a", PlanId = 37, AddonType = 1, Cost = 3000, ExternalId = "price_0NMZrMqJFDZJcnkVTpb07W60", TestExternalId = "price_0NLHvaqJFDZJcnkVS3DHnRA8" });
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0027_AddingFreeEntityLimits.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0027_AddingFreeEntityLimits.cs
new file mode 100644
index 00000000..38c0638f
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0027_AddingFreeEntityLimits.cs
@@ -0,0 +1,19 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(27)]
+ public class M0027_AddingFreeEntityLimits : Migration
+ {
+ public override void Up()
+ {
+ Insert.IntoTable("PlanLimits").Row(new { PlanId = 1, LimitType = 6, LimitValue = 10 });
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0028_AddingDeletedWorkshiftColumns.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0028_AddingDeletedWorkshiftColumns.cs
new file mode 100644
index 00000000..73d8b337
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0028_AddingDeletedWorkshiftColumns.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(28)]
+ public class M0028_AddingDeletedWorkshiftColumns : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("Workshifts").AddColumn("DeletedOn").AsDateTime2().Nullable();
+ Alter.Table("Workshifts").AddColumn("DeletedById").AsCustom("citext").Nullable();
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0029_AddingCustomStateDetailColumns.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0029_AddingCustomStateDetailColumns.cs
new file mode 100644
index 00000000..7f824d1e
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0029_AddingCustomStateDetailColumns.cs
@@ -0,0 +1,20 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(29)]
+ public class M0029_AddingCustomStateDetailColumns : Migration
+ {
+ public override void Up()
+ {
+ Alter.Table("CustomStateDetails").AddColumn("BaseType").AsInt32().NotNullable().WithDefaultValue(-1);
+ Alter.Table("CustomStateDetails").AddColumn("TTL").AsInt32().NotNullable().WithDefaultValue(0);
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0030_AddingDocumentCategories.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0030_AddingDocumentCategories.cs
new file mode 100644
index 00000000..aa72498a
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0030_AddingDocumentCategories.cs
@@ -0,0 +1,28 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(30)]
+ public class M0030_AddingDocumentCategories : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("DocumentCategories")
+ .WithColumn("DocumentCategoryId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext").NotNullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedById").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_DocumentCategories_Department")
+ .FromTable("DocumentCategories").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0031_AddingNoteCategories.cs b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0031_AddingNoteCategories.cs
new file mode 100644
index 00000000..7e50adc0
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Migrations/M0031_AddingNoteCategories.cs
@@ -0,0 +1,28 @@
+using FluentMigrator;
+using System;
+
+namespace Resgrid.Providers.MigrationsPg.Migrations
+{
+ [Migration(31)]
+ public class M0031_AddingNoteCategories : Migration
+ {
+ public override void Up()
+ {
+ Create.Table("NoteCategories")
+ .WithColumn("NoteCategoryId").AsCustom("citext").NotNullable().PrimaryKey()
+ .WithColumn("DepartmentId").AsInt32().NotNullable()
+ .WithColumn("Name").AsCustom("citext").NotNullable()
+ .WithColumn("AddedOn").AsDateTime2().NotNullable()
+ .WithColumn("AddedById").AsCustom("citext").NotNullable();
+
+ Create.ForeignKey("FK_NoteCategories_Department")
+ .FromTable("NoteCategories").ForeignColumn("DepartmentId")
+ .ToTable("Departments").PrimaryColumn("DepartmentId");
+ }
+
+ public override void Down()
+ {
+
+ }
+ }
+}
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Resgrid.Providers.MigrationsPg.csproj b/Providers/Resgrid.Providers.MigrationsPg/Resgrid.Providers.MigrationsPg.csproj
new file mode 100644
index 00000000..2160d81e
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Resgrid.Providers.MigrationsPg.csproj
@@ -0,0 +1,32 @@
+
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+ Never
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0001_PopulateOIDCDb.sql b/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0001_PopulateOIDCDb.sql
new file mode 100644
index 00000000..a0fcaec0
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0001_PopulateOIDCDb.sql
@@ -0,0 +1,343 @@
+DO $$ BEGIN
+ IF EXISTS(SELECT migrationid FROM public.__efmigrationshistory WHERE migrationid = '20210904153137_CreateOpenIddictModels') THEN
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."__efmigrationshistory"
+ --
+ CREATE TABLE IF NOT EXISTS public.__efmigrationshistory(
+ migrationid character varying(150) NOT NULL,
+ productversion character varying(32) NOT NULL
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = '__efmigrationshistory' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.__efmigrationshistory
+ ADD PRIMARY KEY (migrationid);
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."openiddictscopes"
+ --
+ CREATE TABLE IF NOT EXISTS public.openiddictscopes(
+ id uuid NOT NULL,
+ concurrencytoken character varying(50),
+ description character varying,
+ descriptions character varying,
+ displayname character varying,
+ displaynames character varying,
+ name character varying(200),
+ properties character varying,
+ resources character varying
+ );
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictscopes' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.openiddictscopes
+ ADD PRIMARY KEY (id);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictscopes' and constraint_type = 'UNIQUE') then
+ ALTER TABLE public.openiddictscopes
+ ADD CONSTRAINT openiddictscopes_name_key UNIQUE(name);
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."openiddictapplications"
+ --
+ CREATE TABLE IF NOT EXISTS public.openiddictapplications(
+ id uuid NOT NULL,
+ clientid character varying(100),
+ clientsecret character varying,
+ concurrencytoken character varying(50),
+ consenttype character varying(50),
+ displayname character varying,
+ displaynames character varying,
+ permissions character varying,
+ postlogoutredirecturis character varying,
+ properties character varying,
+ redirecturis character varying,
+ requirements character varying,
+ clienttype character varying(50),
+ applicationtype character varying,
+ jsonwebkeyset character varying,
+ settings character varying
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictapplications' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.openiddictapplications
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictapplications' and constraint_type = 'UNIQUE') then
+ ALTER TABLE public.openiddictapplications
+ ADD CONSTRAINT openiddictapplications_clientid_key UNIQUE(clientid);
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."openiddictauthorizations"
+ --
+ CREATE TABLE IF NOT EXISTS public.openiddictauthorizations(
+ id uuid NOT NULL,
+ applicationid uuid,
+ concurrencytoken character varying(50),
+ creationdate timestamp without time zone,
+ properties character varying,
+ scopes character varying,
+ status character varying(50),
+ subject character varying(400),
+ type character varying(50)
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictauthorizations' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.openiddictauthorizations
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddictauthorizations' and constraint_type = 'FOREIGN KEY') then
+ ALTER TABLE public.openiddictauthorizations
+ ADD CONSTRAINT fk_openiddictauthorizations_openiddictapplications_applicationi FOREIGN KEY (applicationid)
+ REFERENCES public.openiddictapplications(id) ON DELETE NO ACTION ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."openiddicttokens"
+ --
+ CREATE TABLE IF NOT EXISTS public.openiddicttokens(
+ id uuid NOT NULL,
+ applicationid uuid,
+ authorizationid uuid,
+ concurrencytoken character varying(50),
+ creationdate timestamp without time zone,
+ expirationdate timestamp without time zone,
+ payload character varying,
+ properties character varying,
+ redemptiondate timestamp without time zone,
+ referenceid character varying(100),
+ status character varying(50),
+ subject character varying(400),
+ type character varying(50)
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddicttokens' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.openiddicttokens
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddicttokens' and constraint_type = 'UNIQUE') then
+ ALTER TABLE public.openiddicttokens
+ ADD CONSTRAINT openiddicttokens_referenceid_key UNIQUE(referenceid);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddicttokens' and constraint_type = 'FOREIGN KEY' and constraint_name = 'fk_openiddicttokens_openiddictapplications_applicationid') then
+ ALTER TABLE public.openiddicttokens
+ ADD CONSTRAINT fk_openiddicttokens_openiddictapplications_applicationid FOREIGN KEY (applicationid)
+ REFERENCES public.openiddictapplications(id) ON DELETE NO ACTION ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'openiddicttokens' and constraint_type = 'FOREIGN KEY' and constraint_name = 'fk_openiddicttokens_openiddictauthorizations_authorizationid') then
+ ALTER TABLE public.openiddicttokens
+ ADD CONSTRAINT fk_openiddicttokens_openiddictauthorizations_authorizationid FOREIGN KEY (authorizationid)
+ REFERENCES public.openiddictauthorizations(id) ON DELETE NO ACTION ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetusers"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetusers(
+ id character varying(450) NOT NULL,
+ username character varying(256),
+ normalizedusername character varying(256),
+ email character varying(256),
+ normalizedemail character varying(256),
+ emailconfirmed boolean NOT NULL,
+ passwordhash character varying,
+ securitystamp character varying,
+ concurrencystamp character varying,
+ phonenumber character varying,
+ phonenumberconfirmed boolean NOT NULL,
+ twofactorenabled boolean NOT NULL,
+ lockoutend timestamp with time zone,
+ lockoutenabled boolean NOT NULL,
+ accessfailedcount integer NOT NULL
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetusers' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetusers
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetusers' and constraint_type = 'UNIQUE') then
+ ALTER TABLE public.aspnetusers
+ ADD CONSTRAINT aspnetusers_normalizedusername_key UNIQUE(normalizedusername);
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetusertokens"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetusertokens(
+ userid character varying(450) NOT NULL,
+ loginprovider character varying(450) NOT NULL,
+ name character varying(450) NOT NULL,
+ value character varying
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetusertokens' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetusertokens
+ ADD PRIMARY KEY (userid, loginprovider, name);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetusertokens' and constraint_type = 'FOREIGN KEY') then
+ ALTER TABLE public.aspnetusertokens
+ ADD CONSTRAINT fk_aspnetusertokens_aspnetusers_userid FOREIGN KEY (userid)
+ REFERENCES public.aspnetusers(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetuserlogins"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetuserlogins(
+ loginprovider character varying(450) NOT NULL,
+ providerkey character varying(450) NOT NULL,
+ providerdisplayname character varying,
+ userid character varying(450) NOT NULL
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserlogins' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetuserlogins
+ ADD PRIMARY KEY (loginprovider, providerkey);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserlogins' and constraint_type = 'FOREIGN KEY') then
+ ALTER TABLE public.aspnetuserlogins
+ ADD CONSTRAINT fk_aspnetuserlogins_aspnetusers_userid FOREIGN KEY (userid)
+ REFERENCES public.aspnetusers(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetuserclaims"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetuserclaims(
+ id serial,
+ userid character varying(450) NOT NULL,
+ claimtype character varying,
+ claimvalue character varying
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserclaims' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetuserclaims
+ ADD PRIMARY KEY (id);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserclaims' and constraint_type = 'FOREIGN KEY') then
+ ALTER TABLE public.aspnetuserclaims
+ ADD CONSTRAINT fk_aspnetuserclaims_aspnetusers_userid FOREIGN KEY (userid)
+ REFERENCES public.aspnetusers(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetroles"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetroles(
+ id character varying(450) NOT NULL,
+ name character varying(256),
+ normalizedname character varying(256),
+ concurrencystamp character varying
+ );
+
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetroles' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetroles
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetroles' and constraint_type = 'UNIQUE') then
+ ALTER TABLE public.aspnetroles
+ ADD CONSTRAINT aspnetroles_normalizedname_key UNIQUE(normalizedname);
+END IF;
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetuserroles"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetuserroles(
+ userid character varying(450) NOT NULL,
+ roleid character varying(450) NOT NULL
+ );
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserroles' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetuserroles
+ ADD PRIMARY KEY (userid, roleid);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserroles' and constraint_type = 'FOREIGN KEY' and constraint_name = 'fk_aspnetuserroles_aspnetroles_roleid') then
+ ALTER TABLE public.aspnetuserroles
+ ADD CONSTRAINT fk_aspnetuserroles_aspnetroles_roleid FOREIGN KEY (roleid)
+ REFERENCES public.aspnetroles(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetuserroles' and constraint_type = 'FOREIGN KEY' and constraint_name = 'fk_aspnetuserroles_aspnetusers_userid') then
+ ALTER TABLE public.aspnetuserroles
+ ADD CONSTRAINT fk_aspnetuserroles_aspnetusers_userid FOREIGN KEY (userid)
+ REFERENCES public.aspnetusers(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+
+ --
+ -- CREATE TABLE IF NOT EXISTS "public"."aspnetroleclaims"
+ --
+ CREATE TABLE IF NOT EXISTS public.aspnetroleclaims(
+ id serial,
+ roleid character varying(450) NOT NULL,
+ claimtype character varying,
+ claimvalue character varying
+ );
+
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetroleclaims' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.aspnetroleclaims
+ ADD PRIMARY KEY (id);
+END IF;
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'aspnetroleclaims' and constraint_type = 'FOREIGN KEY') then
+ ALTER TABLE public.aspnetroleclaims
+ ADD CONSTRAINT fk_aspnetroleclaims_aspnetroles_roleid FOREIGN KEY (roleid)
+ REFERENCES public.aspnetroles(id) ON DELETE CASCADE ON UPDATE NO ACTION INITIALLY IMMEDIATE;
+END IF;
+
+
+
+ INSERT INTO public.__efmigrationshistory (migrationid, productversion)
+ SELECT '20210904153137_CreateOpenIddictModels' AS migrationid,'5.0.9' AS productversion FROM public.__efmigrationshistory
+ WHERE NOT EXISTS(
+ SELECT migrationid FROM public.__efmigrationshistory WHERE migrationid = '20210904153137_CreateOpenIddictModels'
+ )
+ LIMIT 1;
+
+ INSERT INTO public.__efmigrationshistory (migrationid, productversion)
+ SELECT '20240412153137_UpdateOpenIddictModelsToV5' AS migrationid,'5.0.9' AS productversion FROM public.__efmigrationshistory
+ WHERE NOT EXISTS(
+ SELECT migrationid FROM public.__efmigrationshistory WHERE migrationid = '20240412153137_UpdateOpenIddictModelsToV5'
+ )
+ LIMIT 1;
+
+ END IF;
+END $$;
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0003_PopulateDocDb.sql b/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0003_PopulateDocDb.sql
new file mode 100644
index 00000000..f2ac3af0
--- /dev/null
+++ b/Providers/Resgrid.Providers.MigrationsPg/Sql/EF0003_PopulateDocDb.sql
@@ -0,0 +1,52 @@
+DO $$ BEGIN
+--
+-- CREATE TABLE IF NOT EXISTS "public"."unitlocations"
+--
+CREATE TABLE IF NOT EXISTS public.unitlocations(
+ id serial,
+ departmentid integer,
+ unitid integer NOT NULL,
+ oid text,
+ "timestamp" timestamp without time zone NOT NULL DEFAULT (now() AT TIME ZONE 'utc'::text),
+ data jsonb NOT NULL
+);
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'unitlocations' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.unitlocations
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+--
+-- CREATE TABLE IF NOT EXISTS "public"."personnellocations"
+--
+CREATE TABLE IF NOT EXISTS public.personnellocations(
+ id serial,
+ departmentid integer,
+ userid text NOT NULL,
+ oid text,
+ "timestamp" timestamp without time zone NOT NULL DEFAULT (now() AT TIME ZONE 'utc'::text),
+ data jsonb NOT NULL
+);
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'personnellocations' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.personnellocations
+ ADD PRIMARY KEY (id);
+END IF;
+
+
+--
+-- CREATE TABLE IF NOT EXISTS "public"."maplayers"
+--
+CREATE TABLE IF NOT EXISTS public.maplayers(
+ id serial,
+ departmentid integer,
+ oid text
+ data jsonb NOT NULL
+);
+
+IF NOT exists (select constraint_name from information_schema.table_constraints where table_name = 'maplayers' and constraint_type = 'PRIMARY KEY') then
+ ALTER TABLE public.maplayers
+ ADD PRIMARY KEY (id);
+END IF;
+END $$;
diff --git a/Providers/Resgrid.Providers.MigrationsPg/Sql/M0001_InitialMigration.sql b/Providers/Resgrid.Providers.MigrationsPg/Sql/M0001_InitialMigration.sql
new file mode 100644
index 00000000..1d293404
Binary files /dev/null and b/Providers/Resgrid.Providers.MigrationsPg/Sql/M0001_InitialMigration.sql differ
diff --git a/Repositories/Resgrid.Repositories.DataRepository/ActionLogsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/ActionLogsRepository.cs
index 7f15f5de..b8617e05 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/ActionLogsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/ActionLogsRepository.cs
@@ -39,7 +39,7 @@ public async Task> GetLastActionLogsForDepartmentAsync(in
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("DisableAutoAvailable", disableAutoAvailable);
dynamicParameters.Add("Timestamp", timeStamp);
@@ -85,7 +85,7 @@ public async Task> GetAllActionLogsForUser(string userId)
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
@@ -128,7 +128,7 @@ public async Task> GetAllActionLogsForUserInDateRangeAsyn
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
dynamicParameters.Add("StartDate", startDate);
dynamicParameters.Add("EndDate", endDate);
@@ -172,7 +172,7 @@ public async Task> GetAllActionLogsInDateRangeAsync(int d
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("StartDate", startDate);
dynamicParameters.Add("EndDate", endDate);
@@ -216,7 +216,7 @@ public async Task> GetAllActionLogsForDepartmentAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -260,7 +260,7 @@ public async Task GetLastActionLogsForUserAsync(string userId, bool d
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
dynamicParameters.Add("DisableAutoAvailable", disableAutoAvailable);
dynamicParameters.Add("Timestamp", timeStamp);
@@ -308,7 +308,7 @@ public async Task> GetActionLogsForCallAsync(int callId)
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
@@ -351,14 +351,14 @@ public async Task> GetActionLogsForCallAndTypesAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", destinationId);
var usersToQuery = String.Join(",", types.Select(p => $"{p.ToString()}").ToArray());
//dynamicParameters.Add("Types", usersToQuery);
var query = _queryFactory.GetQuery();
- query = query.Replace("%TYPES%", usersToQuery);
+ query = query.Replace("%TYPES%", usersToQuery, StringComparison.InvariantCultureIgnoreCase);
return await x.QueryAsync(sql: query,
param: dynamicParameters,
@@ -398,7 +398,7 @@ public async Task GetPreviousActionLogAsync(string userId, int action
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
dynamicParameters.Add("ActionLogId", actionLogId);
@@ -444,7 +444,7 @@ public async Task GetLastActionLogForUserAsync(string userId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CalendarItemAttendeeRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CalendarItemAttendeeRepository.cs
index 6240e51d..9b699122 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CalendarItemAttendeeRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CalendarItemAttendeeRepository.cs
@@ -34,7 +34,7 @@ public async Task GetCalendarItemAttendeeByUserAsync(int c
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CalendarItemId", calendarEventItemId);
dynamicParameters.Add("UserId", userId);
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CalendarItemsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CalendarItemsRepository.cs
index 5da60f72..5a3f0b65 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CalendarItemsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CalendarItemsRepository.cs
@@ -37,7 +37,7 @@ public async Task> GetCalendarItemsByRecurrenceIdAsync
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CalendarItemId", id);
var query = _queryFactory.GetQuery();
@@ -80,7 +80,7 @@ public async Task DeleteCalendarItemAndRecurrencesAsync(int id, Cancellati
{
try
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CalendarItemId", id);
var query = _queryFactory.GetDeleteQuery();
@@ -128,7 +128,7 @@ public async Task> GetAllCalendarItemsToNotifyAsync(Da
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("StartDate", startDate);
var query = _queryFactory.GetQuery();
@@ -169,7 +169,7 @@ public async Task GetCalendarItemByIdAsync(int calendarItemId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CalendarItemId", calendarItemId);
var query = _queryFactory.GetQuery();
@@ -217,7 +217,7 @@ public async Task> GetAllCalendarItemsByDepartmentIdAs
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallAttachmentRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallAttachmentRepository.cs
index 20a933b3..38cea416 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallAttachmentRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallAttachmentRepository.cs
@@ -35,7 +35,7 @@ public async Task GetCallAttachmentByCallIdAndTypeAsync(int call
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
dynamicParameters.Add("Type", (int)type);
@@ -77,7 +77,7 @@ public async Task> GetCallDispatchesByCallIdAsync(in
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchGroupRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchGroupRepository.cs
index 84a29848..dba7c9ec 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchGroupRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchGroupRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetAllCallDispatchGroupByGroup
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("GroupId", groupId);
var query = _queryFactory.GetQuery();
@@ -76,7 +76,7 @@ public async Task> GetAllCallDispatchGroupByCallI
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchRoleRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchRoleRepository.cs
index f2ac42d9..050e7a1c 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchRoleRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchRoleRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetCallRoleDispatchesByCallIdAs
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchUnitRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchUnitRepository.cs
index e85b913b..933dde64 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchUnitRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchUnitRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetCallUnitDispatchesByCallIdAs
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchesRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchesRepository.cs
index 33726235..f13e30ec 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallDispatchesRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallDispatchesRepository.cs
@@ -50,7 +50,7 @@ public async Task MarkCallDispatchesAsSentByCallIdUsersAsync(int callId, L
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
dynamicParameters.Add("UserIds", userIds.ToString());
@@ -94,7 +94,7 @@ public async Task> GetCallDispatchesByCallIdAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallLogsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallLogsRepository.cs
index 30328952..392fdbcb 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallLogsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallLogsRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetLogsForUserAsync(string userId)
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
@@ -76,7 +76,7 @@ public async Task> GetLogsForCallAsync(int callId)
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallNotesRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallNotesRepository.cs
index 0f940fbf..a75b1c0d 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallNotesRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallNotesRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetCallNotesByCallIdAsync(int callId)
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallProtocolsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallProtocolsRepository.cs
index 9448a73a..ec09b00e 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallProtocolsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallProtocolsRepository.cs
@@ -34,7 +34,7 @@ public async Task> GetCallProtocolsByCallIdAsync(int c
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallReferencesRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallReferencesRepository.cs
index 138ef2c8..05126fd9 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallReferencesRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallReferencesRepository.cs
@@ -38,7 +38,7 @@ public async Task> GetCallReferencesByTargetCallIdAsy
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
@@ -82,7 +82,7 @@ public async Task> GetCallReferencesBySourceCallIdAsy
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CallId", callId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CallsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CallsRepository.cs
index ca5ab1f2..a476f5ac 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CallsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CallsRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetAllCallsByDepartmentDateRangeAsync(int d
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("StartDate", startDate);
dynamicParameters.Add("EndDate", endDate);
@@ -78,7 +78,7 @@ public async Task> GetAllClosedCallsByDepartmentAsync(int depa
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -119,9 +119,9 @@ public async Task> GetAllClosedCallsByDepartmentYearAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
- dynamicParameters.Add("Year", year);
+ dynamicParameters.Add("Year", int.Parse(year));
var query = _queryFactory.GetQuery();
@@ -161,7 +161,7 @@ public async Task> GetAllOpenCallsByDepartmentAsync(int depart
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -202,7 +202,7 @@ public async Task> GetAllCallsByDepartmentIdLoggedOnAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("Date", loggedOn);
@@ -244,7 +244,7 @@ public async Task> SelectCallYearsByDeptAsync(int department
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -285,7 +285,7 @@ public async Task> GetAllNonDispatchedScheduledCallsWithinDate
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("StartDate", startDate);
dynamicParameters.Add("EndDate", endDate);
@@ -327,7 +327,7 @@ public async Task> GetAllNonDispatchedScheduledCallsByDepartme
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/Configs/SqlConfiguration.cs b/Repositories/Resgrid.Repositories.DataRepository/Configs/SqlConfiguration.cs
index 0f259889..1d49c990 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/Configs/SqlConfiguration.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/Configs/SqlConfiguration.cs
@@ -11,6 +11,7 @@ protected SqlConfiguration() { }
public string TableColumnStartNotation { get; set; }
public string TableColumnEndNotation { get; set; }
public string InsertGetReturnIdCommand { get; set; }
+ public string QueryPrefix { get; set; }
#region Common
public string InsertQuery { get; set; }
diff --git a/Repositories/Resgrid.Repositories.DataRepository/CustomStateRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/CustomStateRepository.cs
index 0bb78683..503a0dd6 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/CustomStateRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/CustomStateRepository.cs
@@ -36,7 +36,7 @@ public async Task> GetCustomStatesByDepartmentIdAsync(i
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -84,7 +84,7 @@ public async Task GetCustomStatesByIdAsync(int customStateId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("CustomStateId", customStateId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentCallPruningRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentCallPruningRepository.cs
index 660a7f3b..049e24ea 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentCallPruningRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentCallPruningRepository.cs
@@ -35,7 +35,7 @@ public async Task GetDepartmentCallPruningSettingsAsync(i
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupMembersRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupMembersRepository.cs
index d958b871..ace69454 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupMembersRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupMembersRepository.cs
@@ -36,7 +36,7 @@ public async Task> GetAllGroupMembersByGroupI
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("GroupId", groupId);
var query = _queryFactory.GetQuery();
@@ -77,7 +77,7 @@ public async Task> GetAllGroupMembersByUserAn
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
dynamicParameters.Add("DepartmentId", departmentId);
@@ -123,7 +123,7 @@ public async Task> GetAllGroupMembersByUserAn
{
try
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("GroupId", groupId);
dynamicParameters.Add("DepartmentId", departmentId);
@@ -173,7 +173,7 @@ public async Task> GetAllGroupAdminsByDepartm
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupsRepository.cs
index 54e0b513..cc956eca 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentGroupsRepository.cs
@@ -73,7 +73,7 @@ public async Task> GetAllGroupsByDepartmentIdAsync(
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -121,7 +121,7 @@ public async Task> GetAllGroupsByParentGroupIdAsync
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("GroupId", parentGroupId);
var query = _queryFactory.GetQuery();
@@ -169,7 +169,7 @@ public async Task GetGroupByGroupIdAsync(int departmentGroupId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("GroupId", departmentGroupId);
var query = _queryFactory.GetQuery();
@@ -217,7 +217,7 @@ public async Task GetGroupByDispatchCodeAsync(string dispatchCo
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DispatchEmail", dispatchCode);
var query = _queryFactory.GetQuery();
@@ -265,7 +265,7 @@ public async Task GetGroupByMessageCodeAsync(string messageCode
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("MessageEmail", messageCode);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentLinksRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentLinksRepository.cs
index b491a025..cfee282e 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentLinksRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentLinksRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetAllLinksForDepartmentAsync(int
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -76,7 +76,7 @@ public async Task> GetAllLinksForDepartmentAndIdAsyn
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("Id", departmentLinkId);
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentMembersRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentMembersRepository.cs
index 99b78900..92b331c5 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentMembersRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentMembersRepository.cs
@@ -37,7 +37,7 @@ public async Task> GetAllDepartmentMembersWithinLi
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -80,7 +80,7 @@ public async Task> GetAllDepartmentMembersUnlimite
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -123,7 +123,7 @@ public async Task> GetAllDepartmentMembersUnlimite
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -166,7 +166,7 @@ public async Task GetDepartmentMemberByDepartmentIdAndUserIdAs
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("UserId", userId);
@@ -211,7 +211,7 @@ public async Task> GetAllDepartmentMemberByUserIdA
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentSettingsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentSettingsRepository.cs
index e30bc32e..cc5d9b57 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentSettingsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentSettingsRepository.cs
@@ -35,7 +35,7 @@ public async Task GetDepartmentSettingByUserIdTypeAsync(strin
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
dynamicParameters.Add("SettingType", (int)type);
@@ -79,7 +79,7 @@ public async Task GetDepartmentSettingByIdTypeAsync(int depar
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("SettingType", (int)type);
@@ -121,7 +121,7 @@ public async Task GetDepartmentSettingBySettingTypeAsync(stri
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("Setting", setting);
dynamicParameters.Add("SettingType", (int)type);
@@ -163,7 +163,7 @@ public async Task> GetAllDepartmentManagerInfoAsync(
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
var query = _queryFactory.GetQuery();
@@ -203,7 +203,7 @@ public async Task GetDepartmentManagerInfoByEmailAsync(st
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("EmailAddress", emailAddress);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceChannelRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceChannelRepository.cs
index 7b450688..1dc2e15b 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceChannelRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceChannelRepository.cs
@@ -36,7 +36,7 @@ public async Task> GetDepartmentVoiceChannel
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentVoiceId", voiceId);
var query = _queryFactory.GetQuery();
@@ -79,7 +79,7 @@ public async Task> GetDepartmentVoiceChannel
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceRepository.cs
index e581cd0e..4aaba72c 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceRepository.cs
@@ -36,7 +36,7 @@ public async Task GetDepartmentVoiceByDepartmentIdAsync(int dep
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceUserRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceUserRepository.cs
index c2a8db28..9fb1ed3a 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceUserRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentVoiceUserRepository.cs
@@ -36,7 +36,7 @@ public async Task GetDepartmentVoiceUserByUserIdAsync(strin
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DepartmentsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DepartmentsRepository.cs
index 8c0b89e4..661a834b 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DepartmentsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DepartmentsRepository.cs
@@ -37,7 +37,7 @@ public async Task GetDepartmentWithMembersByIdAsync(int departmentId
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -103,7 +103,7 @@ public async Task GetDepartmentWithMembersByNameAsync(string name)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("Name", name);
var query = _queryFactory.GetQuery();
@@ -168,7 +168,7 @@ public async Task GetValidateUserForDepartmentD
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("Username", userName);
var query = _queryFactory.GetQuery();
@@ -209,7 +209,7 @@ public async Task GetDepartmentForUserByUserIdAsync(string userId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
@@ -275,7 +275,7 @@ public async Task GetDepartmentForUserByUsernameAsync(string userNam
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("Username", userName);
var query = _queryFactory.GetQuery();
@@ -340,7 +340,7 @@ public async Task GetDepartmentReportAsync(int departmentId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
@@ -381,7 +381,7 @@ public async Task GetByLinkCodeAsync(string code)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("Code", code);
var query = _queryFactory.GetQuery();
@@ -446,7 +446,7 @@ public async Task GetDepartmentStatsByDepartmentUserIdAsync(int
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
dynamicParameters.Add("UserId", userId);
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolAttachmentRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolAttachmentRepository.cs
index 79f0ae0f..416d910b 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolAttachmentRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolAttachmentRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetDispatchProtocolAt
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("ProtocolId", protocolId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolQuestionsRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolQuestionsRepository.cs
index 2bc28e8b..b8b0feba 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolQuestionsRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolQuestionsRepository.cs
@@ -36,7 +36,7 @@ public async Task> GetDispatchProtocolQues
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("ProtocolId", protocolId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolRepository.cs
index c4cf8af0..a9b6b68d 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolRepository.cs
@@ -37,7 +37,7 @@ public async Task GetDispatchProtocolByIdAsync(int protocolId)
{
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("ProtocolId", protocolId);
var query = _queryFactory.GetQuery();
@@ -85,7 +85,7 @@ public async Task> GetDispatchProtocolsByDepartmen
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("DepartmentId", departmentId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolTriggersRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolTriggersRepository.cs
index 3332c4a3..5b2ffc3a 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolTriggersRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DispatchProtocolTriggersRepository.cs
@@ -35,7 +35,7 @@ public async Task> GetDispatchProtocolTrigg
{
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("ProtocolId", protocolId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DistributionListMemberRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DistributionListMemberRepository.cs
index 59a2f3a2..da38204f 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DistributionListMemberRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DistributionListMemberRepository.cs
@@ -36,7 +36,7 @@ public async Task> GetDistributionListMember
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("ListId", listId);
var query = _queryFactory.GetQuery();
@@ -79,7 +79,7 @@ public async Task> GetDistributionListMember
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("UserId", userId);
var query = _queryFactory.GetQuery();
diff --git a/Repositories/Resgrid.Repositories.DataRepository/DistributionListRepository.cs b/Repositories/Resgrid.Repositories.DataRepository/DistributionListRepository.cs
index c1bdaeaf..31d6e835 100644
--- a/Repositories/Resgrid.Repositories.DataRepository/DistributionListRepository.cs
+++ b/Repositories/Resgrid.Repositories.DataRepository/DistributionListRepository.cs
@@ -37,7 +37,7 @@ public async Task GetDistributionListByEmailAddressAsync(strin
var selectFunction = new Func>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
dynamicParameters.Add("EmailAddress", email);
var query = _queryFactory.GetQuery();
@@ -80,7 +80,7 @@ public async Task> GetAllActiveDistributionListsAs
var selectFunction = new Func>>(async x =>
{
- var dynamicParameters = new DynamicParameters();
+ var dynamicParameters = new DynamicParametersExtension();
var query = _queryFactory.GetQuery