diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
index 6be19efc9..a6a0db7ad 100644
--- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
+++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj
@@ -83,7 +83,6 @@
-
@@ -101,9 +100,8 @@
-
-
+
@@ -206,8 +204,6 @@
-
-
@@ -325,13 +321,9 @@
-
-
-
-
@@ -343,7 +335,6 @@
-
@@ -472,7 +463,6 @@
-
@@ -548,154 +538,33 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Schemas/elfh.sql b/WebAPI/LearningHub.Nhs.Database/Schemas/elfh.sql
deleted file mode 100644
index 09637bd31..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Schemas/elfh.sql
+++ /dev/null
@@ -1,3 +0,0 @@
-CREATE SCHEMA [elfh]
- AUTHORIZATION [dbo];
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Scripts/Pre-Deploy/Scripts/TD-7057-drop-elfh tables.sql b/WebAPI/LearningHub.Nhs.Database/Scripts/Pre-Deploy/Scripts/TD-7057-drop-elfh tables.sql
new file mode 100644
index 000000000..fdb1d7151
--- /dev/null
+++ b/WebAPI/LearningHub.Nhs.Database/Scripts/Pre-Deploy/Scripts/TD-7057-drop-elfh tables.sql
@@ -0,0 +1,178 @@
+--DROP TABLE IF EXISTS elfh.userTermsAndConditionsTBL;
+--DROP TABLE IF EXISTS elfh.userRoleUpgradeTBL;
+--DROP TABLE IF EXISTS elfh.userReportingUserTBL;
+--DROP TABLE IF EXISTS elfh.userPasswordValidationTokenTBL;
+
+--IF OBJECT_ID('FK_userHistoryAttributeTBL_attributeId', 'F') IS NOT NULL
+--BEGIN
+-- ALTER TABLE [elfh].[userHistoryAttributeTBL]
+-- DROP CONSTRAINT [FK_userHistoryAttributeTBL_attributeId];
+--END;
+
+--IF OBJECT_ID('FK_userHistoryAttributeTBL_userHistoryId', 'F') IS NOT NULL
+--BEGIN
+-- ALTER TABLE [elfh].[userHistoryAttributeTBL]
+-- DROP CONSTRAINT [FK_userHistoryAttributeTBL_userHistoryId];
+--END;
+
+--DROP TABLE IF EXISTS elfh.userHistoryTBL;
+--DROP TABLE IF EXISTS elfh.userHistoryTypeTBL;
+
+--DROP TABLE IF EXISTS elfh.userGroupTypeInputValidationTBL;
+--DROP TABLE IF EXISTS elfh.userGroupReporterTBL;
+--DROP TABLE IF EXISTS elfh.userEmploymentResponsibilityTBL;
+--DROP TABLE IF EXISTS elfh.userEmploymentReferenceTBL;
+--DROP TABLE IF EXISTS elfh.userAttributeTBL;
+--DROP TABLE IF EXISTS elfh.userAdminLocationTBLCopy;
+--DROP TABLE IF EXISTS elfh.userAdminLocationTBL;
+--DROP TABLE IF EXISTS elfh.termsAndConditionsTBL;
+--DROP TABLE IF EXISTS elfh.tenantUrlTBL;
+--DROP TABLE IF EXISTS elfh.tenantTBL;
+--DROP TABLE IF EXISTS elfh.tenantSmtpTBL;
+--DROP TABLE IF EXISTS elfh.systemSettingTBL;
+--DROP TABLE IF EXISTS elfh.mergeUserTBL;
+--DROP TABLE IF EXISTS elfh.loginWizardStageActivityTBL;
+--DROP TABLE IF EXISTS elfh.ipCountryLookupTBL;
+--DROP TABLE IF EXISTS elfh.gmclrmpTBL;
+--DROP TABLE IF EXISTS elfh.gdcRegisterTBL;
+--DROP TABLE IF EXISTS elfh.employmentReferenceTypeTBL;
+--DROP TABLE IF EXISTS elfh.emailTemplateTypeTBL;
+--DROP TABLE IF EXISTS elfh.emailTemplateTBL;
+--DROP TABLE IF EXISTS elfh.attributeTBL;
+--DROP TABLE IF EXISTS elfh.attributeTypeTBL;
+--DROP TABLE IF EXISTS elfh.loginWizardRuleTBL;
+--DROP TABLE IF EXISTS elfh.loginWizardStageTBL;
+
+
+---- Foreign Keys
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_gradeTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_gradeTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_jobRoleTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_jobRoleTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_locationTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_locationTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_medicalCouncilTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_medicalCouncilTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_schoolTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_schoolTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_specialtyTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_specialtyTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_userTBL]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_userTBL];
+
+--IF OBJECT_ID('[elfh].[FK_userEmploymentTBL_userTBL_AmendUser]', 'F') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [FK_userEmploymentTBL_userTBL_AmendUser];
+
+---- Default Constraints
+--IF OBJECT_ID('[elfh].[DF_userEmploymentTBL_deleted]', 'D') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [DF_userEmploymentTBL_deleted];
+
+--IF OBJECT_ID('[elfh].[DF_userEmploymentTBL_archived]', 'D') IS NOT NULL
+-- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [DF_userEmploymentTBL_archived];
+
+---- Primary Key
+----IF OBJECT_ID('[elfh].[PK_userEmploymentTBL]', 'PK') IS NOT NULL
+-- -- ALTER TABLE [elfh].[userEmploymentTBL] DROP CONSTRAINT [PK_userEmploymentTBL];
+
+
+--DROP TABLE IF EXISTS elfh.medicalCouncilTBL;
+--DROP TABLE IF EXISTS elfh.gradeTBL;
+--DROP TABLE IF EXISTS elfh.deaneryTBL;
+--DROP TABLE IF EXISTS elfh.locationTBL;
+--DROP TABLE IF EXISTS elfh.locationTypeTBL;
+--DROP TABLE IF EXISTS elfh.jobRoleTBL;
+--DROP TABLE IF EXISTS elfh.schoolTBL;
+--DROP TABLE IF EXISTS elfh.staffGroupTBL;
+--DROP TABLE IF EXISTS elfh.specialtyTBL;
+
+
+--IF OBJECT_ID('[hub].[FK_userTBL_countryTBL]', 'F') IS NOT NULL
+--BEGIN
+-- ALTER TABLE hub.[User]
+-- DROP CONSTRAINT FK_userTBL_countryTBL;
+--END;
+
+--IF OBJECT_ID('[hub].[FK_userTBL_regionTBL]', 'F') IS NOT NULL
+--BEGIN
+-- ALTER TABLE hub.[User]
+-- DROP CONSTRAINT FK_userTBL_regionTBL;
+--END;
+
+--IF OBJECT_ID('[hub].[FK_userTBL_userEmploymentTBL]', 'F') IS NOT NULL
+--BEGIN
+-- ALTER TABLE hub.[User]
+-- DROP CONSTRAINT FK_userTBL_userEmploymentTBL;
+--END;
+
+--DROP TABLE IF EXISTS elfh.userEmploymentTBL;
+--DROP TABLE IF EXISTS elfh.regionTBL;
+--DROP TABLE IF EXISTS elfh.countryTBL;
+--DROP TABLE IF EXISTS elfh.userEmploymentTBL;
+--DROP TABLE IF EXISTS elfh.regionTBL;
+--DROP TABLE IF EXISTS elfh.countryTBL;
+--DROP TABLE IF EXISTS elfh.userHistoryAttributeTBL
+
+
+
+
+DECLARE @sql NVARCHAR(MAX) = N'';
+
+SELECT @sql = @sql + '
+ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(fk.schema_id)) + '.' + QUOTENAME(OBJECT_NAME(fk.parent_object_id)) +
+' DROP CONSTRAINT ' + QUOTENAME(fk.name) + ';'
+FROM sys.foreign_keys fk
+WHERE fk.referenced_object_id IN (
+ SELECT object_id FROM sys.tables WHERE schema_id = SCHEMA_ID('elfh')
+);
+
+EXEC sp_executesql @sql;
+
+
+/* ============================================================
+ 2. DROP SPECIFIC FOREIGN KEYS OUTSIDE elfh (hub.User)
+ ============================================================ */
+IF OBJECT_ID('[hub].[FK_userTBL_countryTBL]', 'F') IS NOT NULL
+ ALTER TABLE hub.[User] DROP CONSTRAINT [FK_userTBL_countryTBL];
+
+IF OBJECT_ID('[hub].[FK_userTBL_regionTBL]', 'F') IS NOT NULL
+ ALTER TABLE hub.[User] DROP CONSTRAINT [FK_userTBL_regionTBL];
+
+IF OBJECT_ID('[hub].[FK_userTBL_userEmploymentTBL]', 'F') IS NOT NULL
+ ALTER TABLE hub.[User] DROP CONSTRAINT [FK_userTBL_userEmploymentTBL];
+
+
+/* ============================================================
+ 3. DROP ALL DEFAULT CONSTRAINTS IN elfh SCHEMA
+ ============================================================ */
+SET @sql = N'';
+
+SELECT @sql = @sql + '
+ALTER TABLE ' + QUOTENAME(SCHEMA_NAME(t.schema_id)) + '.' + QUOTENAME(t.name) +
+' DROP CONSTRAINT ' + QUOTENAME(dc.name) + ';'
+FROM sys.default_constraints dc
+JOIN sys.tables t ON dc.parent_object_id = t.object_id
+WHERE t.schema_id = SCHEMA_ID('elfh');
+
+EXEC sp_executesql @sql;
+
+
+/* ============================================================
+ 4. DROP ALL TABLES IN elfh SCHEMA
+ ============================================================ */
+SET @sql = N'';
+
+SELECT @sql = @sql + '
+DROP TABLE ' + QUOTENAME(SCHEMA_NAME(schema_id)) + '.' + QUOTENAME(name) + ';'
+FROM sys.tables
+WHERE schema_id = SCHEMA_ID('elfh')
+ORDER BY name;
+
+EXEC sp_executesql @sql;
+
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql
index 12357075e..ba3c5b78a 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql
@@ -6,6 +6,7 @@
-- Modification History
-- 01-10-2025 SA added assesment score and passmark and provider details
-- 05-02-2025 SA TD-6860 : Fixed the null issue with the search history
+-- 31-03-2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [activity].[GetUserInProgressLearningActivities] (
@userId INT
@@ -15,66 +16,90 @@ BEGIN
;WITH CTERecentActivities AS (
SELECT
- ra.Id AS ActivityId,
- ara.LaunchResourceActivityId AS LaunchResourceActivityId,
- ra.UserId AS UserId,
- ra.ResourceId AS ResourceId,
- r.CurrentResourceVersionId AS ResourceVersionId,
- CASE WHEN r.CurrentResourceVersionId = ra.ResourceVersionId THEN 1 ELSE 0 END AS IsCurrentResourceVersion,
- (
- SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- WHERE rr.ResourceId = rv.ResourceId --AND rr.Deleted = 0
- ) AS ResourceReferenceID,
- ra.MajorVersion AS MajorVersion,
- ra.MinorVersion AS MinorVersion,
- ra.NodePathId AS NodePathId,
- r.ResourceTypeId AS ResourceType,
- rv.Title AS Title,
- --rv.[Description] AS ResourceDescription,
- rv.CertificateEnabled AS CertificateEnabled,
- ISNULL(ara.ActivityStatusId, ra.ActivityStatusId) AS ActivityStatus,
- ra.ActivityStart AS ActivityDate,
- -- ara.ActivityEnd,
- ISNULL(ara.DurationSeconds, 0) AS ActivityDurationSeconds,
- ara.Score AS ScorePercentage,
- arv.AssessmentType AS AssessmentType,
- arv.PassMark AS AssessmentPassMark,
- asra.score AS AssesmentScore,
- mar.SecondsPlayed AS SecondsPlayed,
- ISNULL( CAST(mar.PercentComplete AS INT) ,0) AS PercentComplete,
- sa.CmiCoreLesson_status AS CmiCoreLessonstatus,
- sa.CmiCoreScoreMax AS CmiCoreScoreMax,
- sa.CmiCoreSession_time AS CmiCoreSessiontime,
- sa.DurationSeconds AS DurationSeconds,
- rpAgg.ProvidersJson,
- ROW_NUMBER() OVER (PARTITION BY ra.ResourceId ORDER BY ISNULL(ara.ActivityEnd, ra.ActivityStart) DESC) AS rn
- FROM activity.ResourceActivity ra
- LEFT JOIN activity.ResourceActivity ara ON ara.LaunchResourceActivityId = ra.Id
- INNER JOIN [resources].[Resource] r ON ra.ResourceId = r.Id
- INNER JOIN [resources].[ResourceVersion] rv ON rv.Id = ra.ResourceVersionId AND rv.Deleted = 0
- LEFT JOIN (
- SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
- LEFT JOIN [resources].[AssessmentResourceVersion] arv ON arv.ResourceVersionId = ra.ResourceVersionId
- LEFT JOIN [activity].[AssessmentResourceActivity] asra ON asra.ResourceActivityId = ra.Id
- LEFT JOIN [activity].[MediaResourceActivity] mar ON mar.ResourceActivityId = ra.Id
- LEFT JOIN [activity].[ScormActivity] sa ON sa.ResourceActivityId = ra.Id
- WHERE ra.LaunchResourceActivityId IS NULL AND ra.userid = @userId
- AND ra.deleted = 0
- AND r.ResourceTypeId IN(6) --AND ra.ActivityStart >= DATEADD(MONTH, -6, SYSDATETIMEOFFSET())
-)
+ ra.Id AS ActivityId,
+ ara.LaunchResourceActivityId AS LaunchResourceActivityId,
+ ra.UserId AS UserId,
+ ra.ResourceId AS ResourceId,
+ r.CurrentResourceVersionId AS ResourceVersionId,
+ CASE WHEN r.CurrentResourceVersionId = ra.ResourceVersionId THEN 1 ELSE 0 END AS IsCurrentResourceVersion,
+
+ rrRef.OriginalResourceReferenceId AS ResourceReferenceID,
+
+ ra.MajorVersion AS MajorVersion,
+ ra.MinorVersion AS MinorVersion,
+ ra.NodePathId AS NodePathId,
+ r.ResourceTypeId AS ResourceType,
+ rv.Title AS Title,
+ rv.CertificateEnabled AS CertificateEnabled,
+ ISNULL(ara.ActivityStatusId, ra.ActivityStatusId) AS ActivityStatus,
+ ra.ActivityStart AS ActivityDate,
+ ISNULL(ara.DurationSeconds, 0) AS ActivityDurationSeconds,
+ ara.Score AS ScorePercentage,
+ arv.AssessmentType AS AssessmentType,
+ arv.PassMark AS AssessmentPassMark,
+ asra.score AS AssesmentScore,
+ mar.SecondsPlayed AS SecondsPlayed,
+ ISNULL(CAST(mar.PercentComplete AS INT), 0) AS PercentComplete,
+ sa.CmiCoreLesson_status AS CmiCoreLessonstatus,
+ sa.CmiCoreScoreMax AS CmiCoreScoreMax,
+ sa.CmiCoreSession_time AS CmiCoreSessiontime,
+ sa.DurationSeconds AS DurationSeconds,
+ rpAgg.ProvidersJson,
+
+ ROW_NUMBER() OVER (
+ PARTITION BY ra.ResourceId
+ ORDER BY ISNULL(ara.ActivityEnd, ra.ActivityStart) DESC
+ ) AS rn
+
+ FROM activity.ResourceActivity ra
+ LEFT JOIN activity.ResourceActivity ara ON ara.LaunchResourceActivityId = ra.Id
+ INNER JOIN resources.Resource r ON ra.ResourceId = r.Id
+ INNER JOIN resources.ResourceVersion rv ON rv.Id = ra.ResourceVersionId AND rv.Deleted = 0
+
+ LEFT JOIN (
+ SELECT
+ ResourceId,
+ MIN(Id) AS OldestRefId
+ FROM resources.ResourceReference
+ WHERE Deleted = 0
+ GROUP BY ResourceId
+ ) rrOldest ON rrOldest.ResourceId = rv.ResourceId
+
+ LEFT JOIN resources.ResourceReference rrRef
+ ON rrRef.Id = rrOldest.OldestRefId
+
+ LEFT JOIN (
+ SELECT
+ rp.ResourceVersionId,
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
+ FROM resources.ResourceVersionProvider rp
+ GROUP BY rp.ResourceVersionId
+ ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+
+
+ LEFT JOIN resources.AssessmentResourceVersion arv ON arv.ResourceVersionId = ra.ResourceVersionId
+ LEFT JOIN activity.AssessmentResourceActivity asra ON asra.ResourceActivityId = ra.Id
+ LEFT JOIN activity.MediaResourceActivity mar ON mar.ResourceActivityId = ra.Id
+ LEFT JOIN activity.ScormActivity sa ON sa.ResourceActivityId = ra.Id
+
+ WHERE ra.LaunchResourceActivityId IS NULL
+ AND ra.UserId = @userId
+ AND ra.Deleted = 0
+ AND r.ResourceTypeId IN (6)
+)
+
SELECT Top 8 ActivityId,
LaunchResourceActivityId,
UserId,
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmailTemplate.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmailTemplate.sql
deleted file mode 100644
index 92f822c7f..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmailTemplate.sql
+++ /dev/null
@@ -1,59 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeEmailTemplate]
- @EmailTemplateList [dbo].[EmailTemplate] READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[emailTemplateTBL] ON;
- MERGE [elfh].[emailTemplateTBL] AS TARGET
- USING @EmailTemplateList AS SOURCE
- ON TARGET.[emailTemplateId] = SOURCE.[emailTemplateId]
-
- WHEN MATCHED THEN
- UPDATE SET
- TARGET.[emailTemplateTypeId] = SOURCE.[emailTemplateTypeId],
- TARGET.[programmeComponentId] = SOURCE.[programmeComponentId],
- TARGET.[title] = SOURCE.[title],
- TARGET.[subject] = SOURCE.[subject],
- TARGET.[body] = SOURCE.[body],
- TARGET.[deleted] = SOURCE.[deleted],
- TARGET.[amendUserID] = SOURCE.[amendUserID],
- TARGET.[amendDate] = SOURCE.[amendDate],
- TARGET.[tenantId] = SOURCE.[tenantId]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [emailTemplateId],
- [emailTemplateTypeId],
- [programmeComponentId],
- [title],
- [subject],
- [body],
- [deleted],
- [amendUserID],
- [amendDate],
- [tenantId]
- )
- VALUES (
- SOURCE.[emailTemplateId],
- SOURCE.[emailTemplateTypeId],
- SOURCE.[programmeComponentId],
- SOURCE.[title],
- SOURCE.[subject],
- SOURCE.[body],
- SOURCE.[deleted],
- SOURCE.[amendUserID],
- SOURCE.[amendDate],
- SOURCE.[tenantId]
- );
- SET IDENTITY_INSERT [elfh].[emailTemplateTBL] OFF;
-END;
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmploymentReferenceType.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmploymentReferenceType.sql
deleted file mode 100644
index 03816a823..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeEmploymentReferenceType.sql
+++ /dev/null
@@ -1,39 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeEmploymentReferenceType]
- @EmploymentReferenceType dbo.EmploymentReferenceType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
-
- MERGE [ELFH].[employmentReferenceTypeTBL] AS target
- USING @EmploymentReferenceType AS source
- ON target.[EmploymentReferenceTypeId] = source.[EmploymentReferenceTypeId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[Title] = source.[Title],
- target.[RefAccess] = source.[RefAccess]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [EmploymentReferenceTypeId],
- [Title],
- [RefAccess]
- )
- VALUES (
- source.[EmploymentReferenceTypeId],
- source.[Title],
- source.[RefAccess]
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeHubUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeHubUser.sql
index eeb1e5df8..396b57630 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeHubUser.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeHubUser.sql
@@ -13,8 +13,6 @@ AS
BEGIN
SET NOCOUNT ON;
- ALTER TABLE [hub].[user] NOCHECK CONSTRAINT FK_userTBL_userEmploymentTBL;
- ALTER TABLE [elfh].[userEmploymentTBL] NOCHECK CONSTRAINT FK_userEmploymentTBL_userTBL;
ALTER TABLE [hub].[User] NOCHECK CONSTRAINT ALL;
MERGE [hub].[User] AS target
@@ -65,8 +63,6 @@ BEGIN
source.[regionId], source.[preferredTenantId],4,
source.[CreateDate], source.[AmendUserId], source.[AmendDate], source.[Deleted]
);
- ALTER TABLE [hub].[user] NOCHECK CONSTRAINT FK_userTBL_userEmploymentTBL;
- ALTER TABLE [elfh].[userEmploymentTBL] NOCHECK CONSTRAINT FK_userEmploymentTBL_userTBL;
ALTER TABLE [hub].[User] CHECK CONSTRAINT ALL;
END
GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeMergeUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeMergeUser.sql
deleted file mode 100644
index f4b3dbe93..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeMergeUser.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [AdfMergeMergeUser]
- @MergeUserList dbo.MergeUser READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[mergeUserTBL] ON;
-
- MERGE [elfh].[mergeUserTBL] AS target
- USING @MergeUserList AS source
- ON target.[mergeUserId] = source.[mergeUserId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[fromUserId] = source.[fromUserId],
- target.[intoUserId] = source.[intoUserId],
- target.[amendUserId] = source.[amendUserId],
- target.[createdDatetime] = source.[createdDatetime]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [mergeUserId],
- [fromUserId],
- [intoUserId],
- [amendUserId],
- [createdDatetime]
- )
- VALUES (
- source.[mergeUserId],
- source.[fromUserId],
- source.[intoUserId],
- source.[amendUserId],
- source.[createdDatetime]
- );
-
- SET IDENTITY_INSERT [elfh].[mergeUserTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAdminLocation.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAdminLocation.sql
deleted file mode 100644
index 3d7d41724..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAdminLocation.sql
+++ /dev/null
@@ -1,81 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--- 14-01-2026 Swapna TD-6760: To handle duplicate records in the Sync table
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserAdminLocation]
- @UserAdminLocationList dbo.UserAdminLocationType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- --------------------------------------------------------------------
- -- 1. Remove deleted duplicates when an active row exists
- --------------------------------------------------------------------
- DELETE tgt
- FROM elfh.userAdminLocationTBL tgt
- INNER JOIN @UserAdminLocationList src
- ON tgt.userId = src.userId
- AND tgt.adminLocationId = src.adminLocationId
- WHERE tgt.deleted = 1
- AND EXISTS (
- SELECT 1
- FROM elfh.userAdminLocationTBL a
- WHERE a.userId = src.userId
- AND a.adminLocationId = src.adminLocationId
- AND a.deleted = 0
- );
-
- --------------------------------------------------------------------
- -- 2. Update existing ACTIVE rows only
- -- (do NOT overwrite deleted rows)
- --------------------------------------------------------------------
- UPDATE tgt
- SET
- tgt.amendUserId = src.amendUserId,
- tgt.amendDate = src.amendDate,
- tgt.createdUserId = src.createdUserId,
- tgt.createdDate = src.createdDate,
- tgt.deleted = src.deleted
- FROM elfh.userAdminLocationTBL tgt
- INNER JOIN @UserAdminLocationList src
- ON tgt.userId = src.userId
- AND tgt.adminLocationId = src.adminLocationId
- WHERE tgt.deleted = 0;
-
- --------------------------------------------------------------------
- -- 3. Insert rows that do not exist
- -- (both deleted = 0 and deleted = 1 allowed)
- --------------------------------------------------------------------
- INSERT INTO elfh.userAdminLocationTBL (
- userId,
- adminLocationId,
- deleted,
- amendUserId,
- amendDate,
- createdUserId,
- createdDate
- )
- SELECT
- src.userId,
- src.adminLocationId,
- src.deleted,
- src.amendUserId,
- src.amendDate,
- src.createdUserId,
- src.createdDate
- FROM @UserAdminLocationList src
- WHERE NOT EXISTS (
- SELECT 1
- FROM elfh.userAdminLocationTBL tgt WITH (UPDLOCK, HOLDLOCK)
- WHERE tgt.userId = src.userId
- AND tgt.adminLocationId = src.adminLocationId
- AND tgt.deleted = src.deleted
- );
-END;
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAttribute.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAttribute.sql
deleted file mode 100644
index ebdf23815..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserAttribute.sql
+++ /dev/null
@@ -1,62 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserAttribute]
- @userAttributeList dbo.UserAttribute READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[userAttributeTBL] ON;
-
- MERGE [elfh].[userAttributeTBL] AS target
- USING @userAttributeList AS source
- ON target.userAttributeId = source.userAttributeId
-
- WHEN MATCHED THEN
- UPDATE SET
- userId = source.userId,
- attributeId = source.attributeId,
- intValue = source.intValue,
- textValue = source.textValue,
- booleanValue = source.booleanValue,
- dateValue = source.dateValue,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- userAttributeId,
- userId,
- attributeId,
- intValue,
- textValue,
- booleanValue,
- dateValue,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.userAttributeId,
- source.userId,
- source.attributeId,
- source.intValue,
- source.textValue,
- source.booleanValue,
- source.dateValue,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userAttributeTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentReference.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentReference.sql
deleted file mode 100644
index e6f0d2ad3..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentReference.sql
+++ /dev/null
@@ -1,53 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserEmploymentReference]
- @UserEmploymentReferenceList dbo.UserEmploymentReferenceType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[userEmploymentReferenceTBL] ON;
- ALTER TABLE [elfh].[userEmploymentReferenceTBL] NOCHECK CONSTRAINT ALL;
- MERGE [elfh].[userEmploymentReferenceTBL] AS target
- USING @UserEmploymentReferenceList AS source
- ON target.[userEmploymentReferenceId] = source.[userEmploymentReferenceId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[employmentReferenceTypeId] = source.[employmentReferenceTypeId],
- target.[userEmploymentId] = source.[userEmploymentId],
- target.[referenceValue] = source.[referenceValue],
- target.[deleted] = source.[deleted],
- target.[amendUserId] = source.[amendUserId],
- target.[amendDate] = source.[amendDate]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [userEmploymentReferenceId],
- [employmentReferenceTypeId],
- [userEmploymentId],
- [referenceValue],
- [deleted],
- [amendUserId],
- [amendDate]
- )
- VALUES (
- source.[userEmploymentReferenceId],
- source.[employmentReferenceTypeId],
- source.[userEmploymentId],
- source.[referenceValue],
- source.[deleted],
- source.[amendUserId],
- source.[amendDate]
- );
- SET IDENTITY_INSERT [elfh].[userEmploymentReferenceTBL] OFF;
- ALTER TABLE [elfh].[userEmploymentReferenceTBL] NOCHECK CONSTRAINT ALL;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentResponsibility.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentResponsibility.sql
deleted file mode 100644
index ca257de1f..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserEmploymentResponsibility.sql
+++ /dev/null
@@ -1,45 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [AdfMergeUserEmploymentResponsibility]
- @UserEmploymentResponsibilityList dbo.UserEmploymentResponsibilityType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[userEmploymentResponsibilityTBL] ON;
- MERGE [elfh].[userEmploymentResponsibilityTBL] AS target
- USING @UserEmploymentResponsibilityList AS source
- ON target.[userEmploymentResponsibilityId] = source.[userEmploymentResponsibilityId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[userEmploymentId] = source.[userEmploymentId],
- target.[additionalResponsibilityId] = source.[additionalResponsibilityId],
- target.[deleted] = source.[deleted],
- target.[amendUserId] = source.[amendUserId]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [userEmploymentResponsibilityId],
- [userEmploymentId],
- [additionalResponsibilityId],
- [deleted],
- [amendUserId]
- )
- VALUES (
- source.[userEmploymentResponsibilityId],
- source.[userEmploymentId],
- source.[additionalResponsibilityId],
- source.[deleted],
- source.[amendUserId]
- );
- SET IDENTITY_INSERT [elfh].[userEmploymentResponsibilityTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupReporter.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupReporter.sql
deleted file mode 100644
index d1817a389..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupReporter.sql
+++ /dev/null
@@ -1,50 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 25-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 25-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserGroupReporter]
- @UserGroupReporterList [dbo].[UserGroupReporterType] READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[userGroupReporterTBL] ON;
- ALTER TABLE elfh.userGroupReporterTBL NOCHECK CONSTRAINT FK_userGroupReporterTBL_userGroupTBL;
- MERGE [elfh].[userGroupReporterTBL] AS target
- USING @UserGroupReporterList AS source
- ON target.[userGroupReporterId] = source.[userGroupReporterId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[userId] = source.[userId],
- target.[userGroupId] = source.[userGroupId],
- target.[deleted] = source.[deleted],
- target.[amendUserId] = source.[amendUserId],
- target.[amendDate] = source.[amendDate]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [userGroupReporterId],
- [userId],
- [userGroupId],
- [deleted],
- [amendUserId],
- [amendDate]
- )
- VALUES (
- source.[userGroupReporterId],
- source.[userId],
- source.[userGroupId],
- source.[deleted],
- source.[amendUserId],
- source.[amendDate]
- );
- SET IDENTITY_INSERT [elfh].[userGroupReporterTBL] OFF;
- ALTER TABLE elfh.userGroupReporterTBL CHECK CONSTRAINT FK_userGroupReporterTBL_userGroupTBL;
-END
-GO
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupTypeInputValidation.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupTypeInputValidation.sql
deleted file mode 100644
index 9ffedb0b1..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserGroupTypeInputValidation.sql
+++ /dev/null
@@ -1,67 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserGroupTypeInputValidation]
- @userGroupTypeInputValidationList dbo.UserGroupTypeInputValidation READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if userGroupTypeInputValidationId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[userGroupTypeInputValidationTBL] ON;
-
- MERGE [elfh].[userGroupTypeInputValidationTBL] AS target
- USING @userGroupTypeInputValidationList AS source
- ON target.userGroupTypeInputValidationId = source.userGroupTypeInputValidationId
-
- WHEN MATCHED THEN
- UPDATE SET
- userGroupId = source.userGroupId,
- userGroupTypePrefix = source.userGroupTypePrefix,
- userGroupTypeId = source.userGroupTypeId,
- validationTextValue = source.validationTextValue,
- validationMethod = source.validationMethod,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate,
- createdUserId = source.createdUserId,
- createdDate = source.createdDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- userGroupTypeInputValidationId,
- userGroupId,
- userGroupTypePrefix,
- userGroupTypeId,
- validationTextValue,
- validationMethod,
- deleted,
- amendUserId,
- amendDate,
- createdUserId,
- createdDate
- )
- VALUES (
- source.userGroupTypeInputValidationId,
- source.userGroupId,
- source.userGroupTypePrefix,
- source.userGroupTypeId,
- source.validationTextValue,
- source.validationMethod,
- source.deleted,
- source.amendUserId,
- source.amendDate,
- source.createdUserId,
- source.createdDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userGroupTypeInputValidationTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistory.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistory.sql
deleted file mode 100644
index 7a53f6577..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistory.sql
+++ /dev/null
@@ -1,49 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserHistory]
- @userHistoryList dbo.UserHistory READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if userHistoryId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[userHistoryTBL] ON;
-
- MERGE [elfh].[userHistoryTBL] AS target
- USING @userHistoryList AS source
- ON target.[userHistoryId] = source.[userHistoryId]
-
- WHEN MATCHED THEN
- UPDATE SET
- [userHistoryTypeId] = source.[userHistoryTypeId],
- [userId] = source.[userId],
- [createdDate] = source.[createdDate],
- [tenantId] = source.[tenantId]
-
- WHEN NOT MATCHED THEN
- INSERT (
- [userHistoryId],
- [userHistoryTypeId],
- [userId],
- [createdDate],
- [tenantId]
- )
- VALUES (
- source.[userHistoryId],
- source.[userHistoryTypeId],
- source.[userId],
- source.[createdDate],
- source.[tenantId]
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userHistoryTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistoryType.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistoryType.sql
deleted file mode 100644
index f7fc0d735..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserHistoryType.sql
+++ /dev/null
@@ -1,35 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserHistoryType]
- @userHistoryTypeList dbo.UserHistoryType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [ELFH].[userHistoryTypeTBL] AS target
- USING @userHistoryTypeList AS source
- ON target.UserHistoryTypeId = source.UserHistoryTypeId
-
- WHEN MATCHED THEN
- UPDATE SET
- [Description] = source.[Description]
-
- WHEN NOT MATCHED THEN
- INSERT (
- [UserHistoryTypeId],
- [Description]
- )
- VALUES (
- source.[UserHistoryTypeId],
- source.[Description]
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserPasswordValidationToke.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserPasswordValidationToke.sql
deleted file mode 100644
index c37cbd567..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserPasswordValidationToke.sql
+++ /dev/null
@@ -1,64 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserPasswordValidationToken]
- @userPasswordValidationTokenList dbo.UserPasswordValidationToken READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if userPasswordValidationTokenId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[userPasswordValidationTokenTBL] ON;
- ALTER TABLE [elfh].[userPasswordValidationTokenTBL] NOCHECK CONSTRAINT ALL;
- ALTER TABLE [hub].[User] NOCHECK CONSTRAINT ALL;
- MERGE [elfh].[userPasswordValidationTokenTBL] AS target
- USING @userPasswordValidationTokenList AS source
- ON target.userPasswordValidationTokenId = source.userPasswordValidationTokenId
-
- WHEN MATCHED THEN
- UPDATE SET
- hashedToken = source.hashedToken,
- salt = source.salt,
- [lookup] = source.[lookup],
- expiry = source.expiry,
- tenantId = source.tenantId,
- userId = source.userId,
- createdUserId = source.createdUserId,
- createdDate = source.createdDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- userPasswordValidationTokenId,
- hashedToken,
- salt,
- [lookup],
- expiry,
- tenantId,
- userId,
- createdUserId,
- createdDate
- )
- VALUES (
- source.userPasswordValidationTokenId,
- source.hashedToken,
- source.salt,
- source.[lookup],
- source.expiry,
- source.tenantId,
- source.userId,
- source.createdUserId,
- source.createdDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userPasswordValidationTokenTBL] OFF;
- ALTER TABLE [hub].[User] CHECK CONSTRAINT ALL;
- ALTER TABLE [elfh].[userPasswordValidationTokenTBL] CHECK CONSTRAINT ALL;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserReportingUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserReportingUser.sql
deleted file mode 100644
index e890b67cd..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserReportingUser.sql
+++ /dev/null
@@ -1,52 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [AdfMergeUserReportingUser]
- @UserReportingUserList dbo.UserReportingUserType READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[userReportingUserTBL] ON;
- MERGE [elfh].[userReportingUserTBL] AS target
- USING @UserReportingUserList AS source
- ON target.[userReportingUserId] = source.[userReportingUserId]
-
- WHEN MATCHED THEN
- UPDATE SET
- target.[userId] = source.[userId],
- target.[reportingUserId] = source.[reportingUserId],
- target.[reportable] = source.[reportable],
- target.[Deleted] = source.[Deleted],
- target.[AmendUserID] = source.[AmendUserID],
- target.[AmendDate] = source.[AmendDate]
-
- WHEN NOT MATCHED BY TARGET THEN
- INSERT (
- [userReportingUserId],
- [userId],
- [reportingUserId],
- [reportable],
- [Deleted],
- [AmendUserID],
- [AmendDate]
- )
- VALUES (
- source.[userReportingUserId],
- source.[userId],
- source.[reportingUserId],
- source.[reportable],
- source.[Deleted],
- source.[AmendUserID],
- source.[AmendDate]
- );
- SET IDENTITY_INSERT [elfh].[userReportingUserTBL] OFF;
- -- Optionally re-enable constraints
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserRoleUpgrade.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserRoleUpgrade.sql
deleted file mode 100644
index 256cac018..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeUserRoleUpgrade.sql
+++ /dev/null
@@ -1,64 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserRoleUpgrade]
- @userRoleUpgradeList dbo.UserRoleUpgrade READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if userRoleUpgradeId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[userRoleUpgradeTBL] ON;
-
- MERGE [elfh].[userRoleUpgradeTBL] AS target
- USING @userRoleUpgradeList AS source
- ON target.[userRoleUpgradeId] = source.[userRoleUpgradeId]
-
- WHEN MATCHED THEN
- UPDATE SET
- [userId] = source.[userId],
- [emailAddress] = source.[emailAddress],
- [upgradeDate] = source.[upgradeDate],
- [deleted] = source.[deleted],
- [createUserId] = source.[createUserId],
- [createDate] = source.[createDate],
- [amendUserId] = source.[amendUserId],
- [amendDate] = source.[amendDate],
- [userHistoryTypeId] = source.[userHistoryTypeId]
-
- WHEN NOT MATCHED THEN
- INSERT (
- [userRoleUpgradeId],
- [userId],
- [emailAddress],
- [upgradeDate],
- [deleted],
- [createUserId],
- [createDate],
- [amendUserId],
- [amendDate],
- [userHistoryTypeId]
- )
- VALUES (
- source.[userRoleUpgradeId],
- source.[userId],
- source.[emailAddress],
- source.[upgradeDate],
- source.[deleted],
- source.[createUserId],
- source.[createDate],
- source.[amendUserId],
- source.[amendDate],
- source.[userHistoryTypeId]
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userRoleUpgradeTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeattributeType.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeattributeType.sql
deleted file mode 100644
index 6b1930b57..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeattributeType.sql
+++ /dev/null
@@ -1,45 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeattributeType]
- @attributeTypeList dbo.AttributeType READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
-
- MERGE [elfh].[attributeTypeTBL] AS target
- USING @attributeTypeList AS source
- ON target.attributeTypeId = source.attributeTypeId
-
- WHEN MATCHED THEN
- UPDATE SET
- attributeTypeName = source.attributeTypeName,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- attributeTypeId,
- attributeTypeName,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.attributeTypeId,
- source.attributeTypeName,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergecountry.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergecountry.sql
deleted file mode 100644
index dbc50e13d..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergecountry.sql
+++ /dev/null
@@ -1,62 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-create PROCEDURE [dbo].[AdfMergecountry]
- @countryList dbo.Country READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[countryTBL] ON;
-
- MERGE [elfh].[countryTBL] AS target
- USING @countryList AS source
- ON target.countryId = source.countryId
-
- WHEN MATCHED THEN
- UPDATE SET
- countryName = source.countryName,
- alpha2 = source.alpha2,
- alpha3 = source.alpha3,
- numeric = source.numeric,
- EUVatRate = source.EUVatRate,
- displayOrder = source.displayOrder,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- countryId,
- countryName,
- alpha2,
- alpha3,
- numeric,
- EUVatRate,
- displayOrder,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.countryId,
- source.countryName,
- source.alpha2,
- source.alpha3,
- source.numeric,
- source.EUVatRate,
- source.displayOrder,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
- SET IDENTITY_INSERT [elfh].[countryTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergedeanery.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergedeanery.sql
deleted file mode 100644
index 6121f1941..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergedeanery.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergedeanery]
- @deaneryList dbo.Deanery READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[deaneryTBL] ON;
- MERGE [elfh].[deaneryTBL] AS target
- USING @deaneryList AS source
- ON target.deaneryId = source.deaneryId
-
- WHEN MATCHED THEN
- UPDATE SET
- deaneryName = source.deaneryName,
- displayOrder = source.displayOrder,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- deaneryId,
- deaneryName,
- displayOrder,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.deaneryId,
- source.deaneryName,
- source.displayOrder,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[deaneryTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeemailTemplateType.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeemailTemplateType.sql
deleted file mode 100644
index b59c16fbd..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeemailTemplateType.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeemailTemplateType]
- @emailTemplateTypeList dbo.EmailTemplateType READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[emailTemplateTypeTBL] AS target
- USING @emailTemplateTypeList AS source
- ON target.emailTemplateTypeId = source.emailTemplateTypeId
-
- WHEN MATCHED THEN
- UPDATE SET
- emailTemplateTypeName = source.emailTemplateTypeName,
- availableTags = source.availableTags,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- emailTemplateTypeId,
- emailTemplateTypeName,
- availableTags,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.emailTemplateTypeId,
- source.emailTemplateTypeName,
- source.availableTags,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegdcRegister.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegdcRegister.sql
deleted file mode 100644
index e0878089a..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegdcRegister.sql
+++ /dev/null
@@ -1,98 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergegdcRegister]
- @gdcRegisterList dbo.GDCRegister READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [ELFH].[gdcRegisterTBL] AS target
- USING @gdcRegisterList AS source
- ON target.reg_number = source.reg_number
-
- WHEN MATCHED THEN
- UPDATE SET
- Dentist = source.Dentist,
- Title = source.Title,
- Surname = source.Surname,
- Forenames = source.Forenames,
- honorifics = source.honorifics,
- house_name = source.house_name,
- address_line1 = source.address_line1,
- address_line2 = source.address_line2,
- address_line3 = source.address_line3,
- address_line4 = source.address_line4,
- Town = source.Town,
- County = source.County,
- PostCode = source.PostCode,
- Country = source.Country,
- regdate = source.regdate,
- qualifications = source.qualifications,
- dcp_titles = source.dcp_titles,
- specialties = source.specialties,
- [condition] = source.[condition],
- suspension = source.suspension,
- dateProcessed = source.dateProcessed,
- action = source.action
-
- WHEN NOT MATCHED THEN
- INSERT (
- reg_number,
- Dentist,
- Title,
- Surname,
- Forenames,
- honorifics,
- house_name,
- address_line1,
- address_line2,
- address_line3,
- address_line4,
- Town,
- County,
- PostCode,
- Country,
- regdate,
- qualifications,
- dcp_titles,
- specialties,
- [condition],
- suspension,
- dateProcessed,
- action
- )
- VALUES (
- source.reg_number,
- source.Dentist,
- source.Title,
- source.Surname,
- source.Forenames,
- source.honorifics,
- source.house_name,
- source.address_line1,
- source.address_line2,
- source.address_line3,
- source.address_line4,
- source.Town,
- source.County,
- source.PostCode,
- source.Country,
- source.regdate,
- source.qualifications,
- source.dcp_titles,
- source.specialties,
- source.[condition],
- source.suspension,
- source.dateProcessed,
- source.action
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegmclrmp.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegmclrmp.sql
deleted file mode 100644
index 4f94ad397..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegmclrmp.sql
+++ /dev/null
@@ -1,56 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergegmclrmp]
- @gmclrmpList dbo.GMCLRMP READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[gmclrmpTBL] AS target
- USING @gmclrmpList AS source
- ON target.GMC_Ref_No = source.GMC_Ref_No
-
- WHEN MATCHED THEN
- UPDATE SET
- Surname = source.Surname,
- Given_Name = source.Given_Name,
- Year_Of_Qualification = source.Year_Of_Qualification,
- GP_Register_Date = source.GP_Register_Date,
- Registration_Status = source.Registration_Status,
- Other_Names = source.Other_Names,
- dateProcessed = source.dateProcessed,
- action = source.action
-
- WHEN NOT MATCHED THEN
- INSERT (
- GMC_Ref_No,
- Surname,
- Given_Name,
- Year_Of_Qualification,
- GP_Register_Date,
- Registration_Status,
- Other_Names,
- dateProcessed,
- action
- )
- VALUES (
- source.GMC_Ref_No,
- source.Surname,
- source.Given_Name,
- source.Year_Of_Qualification,
- source.GP_Register_Date,
- source.Registration_Status,
- source.Other_Names,
- source.dateProcessed,
- source.action
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegrade.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegrade.sql
deleted file mode 100644
index 8994639d9..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergegrade.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergegrade]
- @gradeList dbo.Grade READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[gradeTBL] ON;
- MERGE [elfh].[gradeTBL] AS target
- USING @gradeList AS source
- ON target.gradeId = source.gradeId
-
- WHEN MATCHED THEN
- UPDATE SET
- gradeName = source.gradeName
- , displayOrder = source.displayOrder
- , deleted = source.deleted
- , amendUserID = source.amendUserID
- , amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- gradeId
- , gradeName
- , displayOrder
- , deleted
- , amendUserID
- , amendDate
- )
- VALUES (
- source.gradeId
- , source.gradeName
- , source.displayOrder
- , source.deleted
- , source.amendUserID
- , source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[gradeTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeipCountryLookup.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeipCountryLookup.sql
deleted file mode 100644
index bc982a2a8..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeipCountryLookup.sql
+++ /dev/null
@@ -1,43 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeipCountryLookup]
- @ipCountryLookupList dbo.IPCountryLookup READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[ipCountryLookupTBL] AS target
- USING @ipCountryLookupList AS source
- ON target.fromInt = source.fromInt AND target.toInt = source.toInt
-
- WHEN MATCHED THEN
- UPDATE SET
- fromIP = source.fromIP,
- toIP = source.toIP,
- country = source.country
-
- WHEN NOT MATCHED THEN
- INSERT (
- fromIP,
- toIP,
- country,
- fromInt,
- toInt
- )
- VALUES (
- source.fromIP,
- source.toIP,
- source.country,
- source.fromInt,
- source.toInt
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergejobRole.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergejobRole.sql
deleted file mode 100644
index 8b36bf4e6..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergejobRole.sql
+++ /dev/null
@@ -1,53 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergejobRole]
- @jobRoleList dbo.JobRole READONLY -- table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[jobRoleTBL] ON;
- MERGE [elfh].[jobRoleTBL] AS target
- USING @jobRoleList AS source
- ON target.jobRoleId = source.jobRoleId
-
- WHEN MATCHED THEN
- UPDATE SET
- staffGroupId = source.staffGroupId
- , jobRoleName = source.jobRoleName
- , medicalCouncilId = source.medicalCouncilId
- , displayOrder = source.displayOrder
- , deleted = source.deleted
- , amendUserID = source.amendUserID
- , amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- jobRoleId
- , staffGroupId
- , jobRoleName
- , medicalCouncilId
- , displayOrder
- , deleted
- , amendUserID
- , amendDate
- )
- VALUES (
- source.jobRoleId
- , source.staffGroupId
- , source.jobRoleName
- , source.medicalCouncilId
- , source.displayOrder
- , source.deleted
- , source.amendUserID
- , source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[jobRoleTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocation.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocation.sql
deleted file mode 100644
index dda113cd5..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocation.sql
+++ /dev/null
@@ -1,142 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergelocation]
- @locationList dbo.Location READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- MERGE [elfh].[locationTBL] AS target
- USING @locationList AS source
- ON target.locationId = source.locationId
-
- WHEN MATCHED THEN
- UPDATE SET
- locationCode = source.locationCode,
- locationName = source.locationName,
- locationSubName = source.locationSubName,
- locationTypeId = source.locationTypeId,
- address1 = source.address1,
- address2 = source.address2,
- address3 = source.address3,
- address4 = source.address4,
- town = source.town,
- county = source.county,
- postCode = source.postCode,
- telephone = source.telephone,
- acute = source.acute,
- ambulance = source.ambulance,
- mental = source.mental,
- care = source.care,
- mainHosp = source.mainHosp,
- nhsCode = source.nhsCode,
- parentId = source.parentId,
- dataSource = source.dataSource,
- active = source.active,
- importExclusion = source.importExclusion,
- depth = source.depth,
- lineage = source.lineage,
- created = source.created,
- updated = source.updated,
- archivedDate = source.archivedDate,
- countryId = source.countryId,
- iguId = source.iguId,
- letbId = source.letbId,
- ccgId = source.ccgId,
- healthServiceId = source.healthServiceId,
- healthBoardId = source.healthBoardId,
- primaryTrustId = source.primaryTrustId,
- secondaryTrustId = source.secondaryTrustId,
- islandId = source.islandId,
- otherNHSOrganisationId = source.otherNHSOrganisationId
-
- WHEN NOT MATCHED THEN
- INSERT (
- locationId,
- locationCode,
- locationName,
- locationSubName,
- locationTypeId,
- address1,
- address2,
- address3,
- address4,
- town,
- county,
- postCode,
- telephone,
- acute,
- ambulance,
- mental,
- care,
- mainHosp,
- nhsCode,
- parentId,
- dataSource,
- active,
- importExclusion,
- depth,
- lineage,
- created,
- updated,
- archivedDate,
- countryId,
- iguId,
- letbId,
- ccgId,
- healthServiceId,
- healthBoardId,
- primaryTrustId,
- secondaryTrustId,
- islandId,
- otherNHSOrganisationId
- )
- VALUES (
- source.locationId,
- source.locationCode,
- source.locationName,
- source.locationSubName,
- source.locationTypeId,
- source.address1,
- source.address2,
- source.address3,
- source.address4,
- source.town,
- source.county,
- source.postCode,
- source.telephone,
- source.acute,
- source.ambulance,
- source.mental,
- source.care,
- source.mainHosp,
- source.nhsCode,
- source.parentId,
- source.dataSource,
- source.active,
- source.importExclusion,
- source.depth,
- source.lineage,
- source.created,
- source.updated,
- source.archivedDate,
- source.countryId,
- source.iguId,
- source.letbId,
- source.ccgId,
- source.healthServiceId,
- source.healthBoardId,
- source.primaryTrustId,
- source.secondaryTrustId,
- source.islandId,
- source.otherNHSOrganisationId
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocationType.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocationType.sql
deleted file mode 100644
index df660e586..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergelocationType.sql
+++ /dev/null
@@ -1,55 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergelocationType]
- @locationTypeList dbo.LocationType READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable explicit identity insert (if locationTypeID is an IDENTITY column)
- SET IDENTITY_INSERT [elfh].[locationTypeTBL] ON;
-
- MERGE [elfh].[locationTypeTBL] AS target
- USING @locationTypeList AS source
- ON target.locationTypeID = source.locationTypeID
-
- WHEN MATCHED THEN
- UPDATE SET
- locationType = source.locationType,
- countryId = source.countryId,
- healthService = source.healthService,
- healthBoard = source.healthBoard,
- primaryTrust = source.primaryTrust,
- secondaryTrust = source.secondaryTrust
-
- WHEN NOT MATCHED THEN
- INSERT (
- locationTypeID,
- locationType,
- countryId,
- healthService,
- healthBoard,
- primaryTrust,
- secondaryTrust
- )
- VALUES (
- source.locationTypeID,
- source.locationType,
- source.countryId,
- source.healthService,
- source.healthBoard,
- source.primaryTrust,
- source.secondaryTrust
- );
-
- -- Disable identity insert after operation
- SET IDENTITY_INSERT [elfh].[locationTypeTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardRule.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardRule.sql
deleted file mode 100644
index 53a4b8d44..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardRule.sql
+++ /dev/null
@@ -1,60 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeloginWizardRule]
- @loginWizardRuleList dbo.LoginWizardRule READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
- MERGE [elfh].[loginWizardRuleTBL] AS target
- USING @loginWizardRuleList AS source
- ON target.loginWizardRuleId = source.loginWizardRuleId
-
- WHEN MATCHED THEN
- UPDATE SET
- loginWizardStageId = source.loginWizardStageId,
- loginWizardRuleCategoryId = source.loginWizardRuleCategoryId,
- description = source.description,
- reasonDisplayText = source.reasonDisplayText,
- activationPeriod = source.activationPeriod,
- required = source.required,
- active = source.active,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- loginWizardRuleId,
- loginWizardStageId,
- loginWizardRuleCategoryId,
- description,
- reasonDisplayText,
- activationPeriod,
- required,
- active,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.loginWizardRuleId,
- source.loginWizardStageId,
- source.loginWizardRuleCategoryId,
- source.description,
- source.reasonDisplayText,
- source.activationPeriod,
- source.required,
- source.active,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStage.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStage.sql
deleted file mode 100644
index bcf50762b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStage.sql
+++ /dev/null
@@ -1,46 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeloginWizardStage]
- @loginWizardStageList dbo.LoginWizardStage READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
- MERGE [elfh].[loginWizardStageTBL] AS target
- USING @loginWizardStageList AS source
- ON target.loginWizardStageId = source.loginWizardStageId
-
- WHEN MATCHED THEN
- UPDATE SET
- description = source.description,
- reasonDisplayText = source.reasonDisplayText,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- loginWizardStageId,
- description,
- reasonDisplayText,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.loginWizardStageId,
- source.description,
- source.reasonDisplayText,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStageActivity.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStageActivity.sql
deleted file mode 100644
index ad1d56d86..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeloginWizardStageActivity.sql
+++ /dev/null
@@ -1,43 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeloginWizardStageActivity]
- @loginWizardStageActivityList dbo.LoginWizardStageActivity READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[loginWizardStageActivityTBL] ON;
- MERGE [elfh].[loginWizardStageActivityTBL] AS target
- USING @loginWizardStageActivityList AS source
- ON target.loginWizardStageActivityId = source.loginWizardStageActivityId
-
- WHEN MATCHED THEN
- UPDATE SET
- loginWizardStageId = source.loginWizardStageId,
- userId = source.userId,
- activityDatetime = source.activityDatetime
-
- WHEN NOT MATCHED THEN
- INSERT (
- loginWizardStageActivityId,
- loginWizardStageId,
- userId,
- activityDatetime
- )
- VALUES (
- source.loginWizardStageActivityId,
- source.loginWizardStageId,
- source.userId,
- source.activityDatetime
- );
-
- SET IDENTITY_INSERT [elfh].[loginWizardStageActivityTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergemedicalCouncil.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergemedicalCouncil.sql
deleted file mode 100644
index 4f2575378..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergemedicalCouncil.sql
+++ /dev/null
@@ -1,50 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergemedicalCouncil]
- @medicalCouncilList dbo.MedicalCouncil READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
- MERGE [elfh].[medicalCouncilTBL] AS target
- USING @medicalCouncilList AS source
- ON target.medicalCouncilId = source.medicalCouncilId
- WHEN MATCHED THEN
- UPDATE SET
- medicalCouncilName = source.medicalCouncilName
- ,medicalCouncilCode = source.medicalCouncilCode
- ,uploadPrefix = source.uploadPrefix
- ,includeOnCerts = source.includeOnCerts
- ,deleted = source.deleted
- ,amendUserID = source.amendUserID
- ,amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- medicalCouncilId
- ,medicalCouncilName
- ,medicalCouncilCode
- ,uploadPrefix
- ,includeOnCerts
- ,deleted
- ,amendUserID
- ,amendDate
- )
- VALUES (
- source.medicalCouncilId
- ,source.medicalCouncilName
- ,source.medicalCouncilCode
- ,source.uploadPrefix
- ,source.includeOnCerts
- ,source.deleted
- ,source.amendUserID
- ,source.amendDate
- );
-END
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeregion.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeregion.sql
deleted file mode 100644
index 589f42112..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeregion.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeregion]
- @regionList dbo.Region READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[regionTBL] AS target
- USING @regionList AS source
- ON target.regionId = source.regionId
-
- WHEN MATCHED THEN
- UPDATE SET
- regionName = source.regionName,
- displayOrder = source.displayOrder,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- regionId,
- regionName,
- displayOrder,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.regionId,
- source.regionName,
- source.displayOrder,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeschool.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeschool.sql
deleted file mode 100644
index 3e6cd502f..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeschool.sql
+++ /dev/null
@@ -1,53 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeschool]
- @schoolList dbo.School READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[schoolTBL] ON;
- MERGE [elfh].[schoolTBL] AS target
- USING @schoolList AS source
- ON target.schoolId = source.schoolId
-
- WHEN MATCHED THEN
- UPDATE SET
- deaneryId = source.deaneryId,
- specialtyId = source.specialtyId,
- schoolName = source.schoolName,
- displayOrder = source.displayOrder,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- schoolId,
- deaneryId,
- specialtyId,
- schoolName,
- displayOrder,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.schoolId,
- source.deaneryId,
- source.specialtyId,
- source.schoolName,
- source.displayOrder,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[schoolTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergespecialty.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergespecialty.sql
deleted file mode 100644
index 533476cdc..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergespecialty.sql
+++ /dev/null
@@ -1,47 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergespecialty]
- @specialtyList dbo.Specialty READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[specialtyTBL] ON;
- MERGE [elfh].[specialtyTBL] AS target
- USING @specialtyList AS source
- ON target.specialtyId = source.specialtyId
-
- WHEN MATCHED THEN
- UPDATE SET
- specialtyName = source.specialtyName
- , displayOrder = source.displayOrder
- , deleted = source.deleted
- , amendUserID = source.amendUserID
- , amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- specialtyId
- , specialtyName
- , displayOrder
- , deleted
- , amendUserID
- , amendDate
- )
- VALUES (
- source.specialtyId
- , source.specialtyName
- , source.displayOrder
- , source.deleted
- , source.amendUserID
- , source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[specialtyTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergestaffGroup.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergestaffGroup.sql
deleted file mode 100644
index d40f91c31..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergestaffGroup.sql
+++ /dev/null
@@ -1,50 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergestaffGroup]
- @staffGroupList dbo.StaffGroup READONLY -- your table type must exist
-AS
-BEGIN
- SET NOCOUNT ON;
- SET IDENTITY_INSERT [elfh].[staffGroupTBL] ON;
- MERGE [elfh].[staffGroupTBL] AS target
- USING @staffGroupList AS source
- ON target.staffGroupId = source.staffGroupId
-
- WHEN MATCHED THEN
- UPDATE SET
- staffGroupName = source.staffGroupName
- , displayOrder = source.displayOrder
- , internalUsersOnly = source.internalUsersOnly
- , deleted = source.deleted
- , amendUserID = source.amendUserID
- , amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- staffGroupId
- , staffGroupName
- , displayOrder
- , internalUsersOnly
- , deleted
- , amendUserID
- , amendDate
- )
- VALUES (
- source.staffGroupId
- , source.staffGroupName
- , source.displayOrder
- , source.internalUsersOnly
- , source.deleted
- , source.amendUserID
- , source.amendDate
- );
- SET IDENTITY_INSERT [elfh].[staffGroupTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergesystemSetting.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergesystemSetting.sql
deleted file mode 100644
index 580e839fd..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergesystemSetting.sql
+++ /dev/null
@@ -1,56 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergesystemSetting]
- @systemSettingList dbo.SystemSetting READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [ELFH].[systemSettingTBL] AS target
- USING @systemSettingList AS source
- ON target.systemSettingId = source.systemSettingId
-
- WHEN MATCHED THEN
- UPDATE SET
- systemSettingName = source.systemSettingName,
- intValue = source.intValue,
- textValue = source.textValue,
- booleanValue = source.booleanValue,
- dateValue = source.dateValue,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- systemSettingId,
- systemSettingName,
- intValue,
- textValue,
- booleanValue,
- dateValue,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.systemSettingId,
- source.systemSettingName,
- source.intValue,
- source.textValue,
- source.booleanValue,
- source.dateValue,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantSmtp.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantSmtp.sql
deleted file mode 100644
index f6f44bc0e..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantSmtp.sql
+++ /dev/null
@@ -1,68 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergetenantSmtp]
- @tenantSmtpList dbo.TenantSmtp READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[tenantSmtpTBL] AS target
- USING @tenantSmtpList AS source
- ON target.tenantId = source.tenantId
-
- WHEN MATCHED THEN
- UPDATE SET
- deliveryMethod = source.deliveryMethod,
- pickupDirectoryLocation = source.pickupDirectoryLocation,
- [from] = source.[from],
- userName = source.userName,
- [password] = source.[password],
- enableSsl = source.enableSsl,
- host = source.host,
- port = source.port,
- active = source.active,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- tenantId,
- deliveryMethod,
- pickupDirectoryLocation,
- [from],
- userName,
- [password],
- enableSsl,
- host,
- port,
- active,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.tenantId,
- source.deliveryMethod,
- source.pickupDirectoryLocation,
- source.[from],
- source.userName,
- source.[password],
- source.enableSsl,
- source.host,
- source.port,
- source.active,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenants.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenants.sql
deleted file mode 100644
index 4dc91fb59..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenants.sql
+++ /dev/null
@@ -1,86 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergetenants]
- @tenantList dbo.Tenant READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- MERGE [elfh].[tenantTBL] AS target
- USING @tenantList AS source
- ON target.tenantId = source.tenantId
-
- WHEN MATCHED THEN
- UPDATE SET
- tenantCode = source.tenantCode,
- tenantName = source.tenantName,
- tenantDescription = source.tenantDescription,
- showFullCatalogInfoMessageInd = source.showFullCatalogInfoMessageInd,
- catalogUrl = source.catalogUrl,
- quickStartGuideUrl = source.quickStartGuideUrl,
- supportFormUrl = source.supportFormUrl,
- liveChatStatus = source.liveChatStatus,
- liveChatSnippet = source.liveChatSnippet,
- myElearningDefaultView = source.myElearningDefaultView,
- preLoginCatalogueDefaultView = source.preLoginCatalogueDefaultView,
- postLoginCatalogueDefaultView = source.postLoginCatalogueDefaultView,
- authSignInUrlRelative = source.authSignInUrlRelative,
- authSignOutUrlRelative = source.authSignOutUrlRelative,
- authSecret = source.authSecret,
- deleted = source.deleted,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- tenantId,
- tenantCode,
- tenantName,
- tenantDescription,
- showFullCatalogInfoMessageInd,
- catalogUrl,
- quickStartGuideUrl,
- supportFormUrl,
- liveChatStatus,
- liveChatSnippet,
- myElearningDefaultView,
- preLoginCatalogueDefaultView,
- postLoginCatalogueDefaultView,
- authSignInUrlRelative,
- authSignOutUrlRelative,
- authSecret,
- deleted,
- amendUserId,
- amendDate
- )
- VALUES (
- source.tenantId,
- source.tenantCode,
- source.tenantName,
- source.tenantDescription,
- source.showFullCatalogInfoMessageInd,
- source.catalogUrl,
- source.quickStartGuideUrl,
- source.supportFormUrl,
- source.liveChatStatus,
- source.liveChatSnippet,
- source.myElearningDefaultView,
- source.preLoginCatalogueDefaultView,
- source.postLoginCatalogueDefaultView,
- source.authSignInUrlRelative,
- source.authSignOutUrlRelative,
- source.authSecret,
- source.deleted,
- source.amendUserId,
- source.amendDate
- );
-
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantsUrl.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantsUrl.sql
deleted file mode 100644
index 83408a426..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetenantsUrl.sql
+++ /dev/null
@@ -1,55 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergetenantsUrl]
- @tenantUrlList dbo.TenantUrl READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if tenantUrlId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[tenantUrlTBL] ON;
-
- MERGE [elfh].[tenantUrlTBL] AS target
- USING @tenantUrlList AS source
- ON target.tenantUrlId = source.tenantUrlId
-
- WHEN MATCHED THEN
- UPDATE SET
- tenantId = source.tenantId,
- urlHostName = source.urlHostName,
- useHostForAuth = source.useHostForAuth,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- tenantUrlId,
- tenantId,
- urlHostName,
- useHostForAuth,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.tenantUrlId,
- source.tenantId,
- source.urlHostName,
- source.useHostForAuth,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[tenantUrlTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetermsAndConditions.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetermsAndConditions.sql
deleted file mode 100644
index b01ba6b4a..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergetermsAndConditions.sql
+++ /dev/null
@@ -1,64 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergetermsAndConditions]
- @termsAndConditionsList dbo.TermsAndConditions READONLY -- Table-valued parameter
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if termsAndConditionsId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[termsAndConditionsTBL] ON;
-
- MERGE [elfh].[termsAndConditionsTBL] AS target
- USING @termsAndConditionsList AS source
- ON target.termsAndConditionsId = source.termsAndConditionsId
-
- WHEN MATCHED THEN
- UPDATE SET
- createdDate = source.createdDate,
- description = source.description,
- details = source.details,
- tenantId = source.tenantId,
- active = source.active,
- reportable = source.reportable,
- deleted = source.deleted,
- amendUserID = source.amendUserID,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- termsAndConditionsId,
- createdDate,
- description,
- details,
- tenantId,
- active,
- reportable,
- deleted,
- amendUserID,
- amendDate
- )
- VALUES (
- source.termsAndConditionsId,
- source.createdDate,
- source.description,
- source.details,
- source.tenantId,
- source.active,
- source.reportable,
- source.deleted,
- source.amendUserID,
- source.amendDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[termsAndConditionsTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserEmployment.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserEmployment.sql
deleted file mode 100644
index 5be94cd10..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserEmployment.sql
+++ /dev/null
@@ -1,81 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeuserEmployment]
- @userEmploymentList dbo.UserEmployment READONLY -- Table-valued parameter type
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SET IDENTITY_INSERT [elfh].[userEmploymentTBL] ON;
- ALTER TABLE [elfh].[userEmploymentTBL] NOCHECK CONSTRAINT ALL;
- ALTER TABLE [hub].[User] NOCHECK CONSTRAINT ALL;
- MERGE [elfh].[userEmploymentTBL] AS target
- USING @userEmploymentList AS source
- ON target.userEmploymentId = source.userEmploymentId
-
- WHEN MATCHED THEN
- UPDATE SET
- userId = source.userId,
- jobRoleId = source.jobRoleId,
- specialtyId = source.specialtyId,
- gradeId = source.gradeId,
- schoolId = source.schoolId,
- locationId = source.locationId,
- medicalCouncilId = source.medicalCouncilId,
- medicalCouncilNo = source.medicalCouncilNo,
- startDate = source.startDate,
- endDate = source.endDate,
- deleted = source.deleted,
- archived = source.archived,
- amendUserId = source.amendUserId,
- amendDate = source.amendDate
-
- WHEN NOT MATCHED THEN
- INSERT (
- userEmploymentId,
- userId,
- jobRoleId,
- specialtyId,
- gradeId,
- schoolId,
- locationId,
- medicalCouncilId,
- medicalCouncilNo,
- startDate,
- endDate,
- deleted,
- archived,
- amendUserId,
- amendDate
- )
- VALUES (
- source.userEmploymentId,
- source.userId,
- source.jobRoleId,
- source.specialtyId,
- source.gradeId,
- source.schoolId,
- source.locationId,
- source.medicalCouncilId,
- source.medicalCouncilNo,
- source.startDate,
- source.endDate,
- source.deleted,
- source.archived,
- source.amendUserId,
- source.amendDate
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userEmploymentTBL] OFF;
- ALTER TABLE [elfh].[userEmploymentTBL] NOCHECK CONSTRAINT ALL;
- ALTER TABLE [hub].[User] NOCHECK CONSTRAINT ALL;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserTermsAndConditions.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserTermsAndConditions.sql
deleted file mode 100644
index 946e1bbb1..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/AdfMergeuserTermsAndConditions.sql
+++ /dev/null
@@ -1,54 +0,0 @@
--------------------------------------------------------------------------------
--- Author Sarathlal
--- Created 04-11-2025
--- Purpose ELFH-LH Data sync
---
--- Modification History
---
--- 04-11-2025 Sarathlal Initial Revision
--------------------------------------------------------------------------------
-CREATE PROCEDURE [dbo].[AdfMergeUserTermsAndConditions]
- @userTermsAndConditionsList dbo.UserTermsAndConditions READONLY
-AS
-BEGIN
- SET NOCOUNT ON;
-
- -- Enable identity insert if userTermsAndConditionsId is an IDENTITY column
- SET IDENTITY_INSERT [elfh].[userTermsAndConditionsTBL] ON;
- MERGE [elfh].[userTermsAndConditionsTBL] AS target
- USING @userTermsAndConditionsList AS source
- ON target.[userTermsAndConditionsId] = source.[userTermsAndConditionsId]
-
- WHEN MATCHED THEN
- UPDATE SET
- [termsAndConditionsId] = source.[termsAndConditionsId],
- [userId] = source.[userId],
- [acceptanceDate] = source.[acceptanceDate],
- [deleted] = source.[deleted],
- [amendUserID] = source.[amendUserID],
- [amendDate] = source.[amendDate]
-
- WHEN NOT MATCHED THEN
- INSERT (
- [userTermsAndConditionsId],
- [termsAndConditionsId],
- [userId],
- [acceptanceDate],
- [deleted],
- [amendUserID],
- [amendDate]
- )
- VALUES (
- source.[userTermsAndConditionsId],
- source.[termsAndConditionsId],
- source.[userId],
- source.[acceptanceDate],
- source.[deleted],
- source.[amendUserID],
- source.[amendDate]
- );
-
- -- Disable identity insert
- SET IDENTITY_INSERT [elfh].[userTermsAndConditionsTBL] OFF;
-END
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/proc_UpdateLastSyncTimeAdf.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/proc_UpdateLastSyncTimeAdf.sql
index c7896b6b2..ca01f742d 100644
Binary files a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/proc_UpdateLastSyncTimeAdf.sql and b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Adf/proc_UpdateLastSyncTimeAdf.sql differ
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/GetUserByOpenAthensId.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/GetUserByOpenAthensId.sql
deleted file mode 100644
index bb0687719..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/GetUserByOpenAthensId.sql
+++ /dev/null
@@ -1,23 +0,0 @@
------------------------------------------------------------------------------------------------
--- Tobi Awe 31/10/2025 - Initial Version.
--- converted elfh efcore query to sp in LH database
-------------------------------------------------------------------------------------------------
-
-CREATE PROCEDURE elfh.proc_GetUserByOpenAthensId
- @OpenAthensId NVARCHAR(255)
-AS
-BEGIN
- SET NOCOUNT ON;
-
- SELECT
- u.Id,
- u.UserName,
- up.FirstName,
- up.LastName,
- up.EmailAddress,
- u.AmendDate AS LastUpdated
- FROM hub.[user] u
- INNER JOIN hub.userprofile up ON up.Id = u.Id
- INNER JOIN elfh.userAttributeTBL ua ON ua.UserId = u.Id
- WHERE ua.TextValue = @OpenAthensId AND u.deleted = 0 AND up.deleted = 0 AND ua.deleted = 0;
-END
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/LinkEmploymentRecordToUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/LinkEmploymentRecordToUser.sql
deleted file mode 100644
index 0f4f670ba..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/LinkEmploymentRecordToUser.sql
+++ /dev/null
@@ -1,36 +0,0 @@
------------------------------------------------------------------------------------------------
--- Mark Avey 11/06/2020 - Initial Version.
--- Update the UserTBL record with the primaryUserEmploymentId from userEmploymentTBL
-------------------------------------------------------------------------------------------------
-CREATE PROCEDURE [elfh].[proc_LinkEmploymentRecordToUser]
-(
- @userId int
-)
-AS
-BEGIN
- BEGIN TRANSACTION
- BEGIN TRY
- SET NOCOUNT OFF
-
- UPDATE [hub].[User]
- SET primaryUserEmploymentId = (SELECT userEmploymentId FROM [elfh].[userEmploymentTBL] WHERE userId = @userId)
- WHERE Id = @userId
-
- END TRY
-
- BEGIN CATCH
- SELECT
- ERROR_NUMBER() AS ErrorNumber
- ,ERROR_SEVERITY() AS ErrorSeverity
- ,ERROR_STATE() AS ErrorState
- ,ERROR_PROCEDURE() AS ErrorProcedure
- ,ERROR_LINE() AS ErrorLine
- ,ERROR_MESSAGE() AS ErrorMessage;
-
- IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION
- END CATCH
-
- IF @@TRANCOUNT > 0 COMMIT TRANSACTION
-
- RETURN @@ERROR
- END
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserDetailForAuthenticationByUserName.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserDetailForAuthenticationByUserName.sql
deleted file mode 100644
index 70ecd918b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserDetailForAuthenticationByUserName.sql
+++ /dev/null
@@ -1,49 +0,0 @@
--------------------------------------------------------------------------
--- Jignesh Jethwani 27 Sept 2023 - Initial version
--- Tobi Awe 24 Sept 2025 - swapped elfh user table to hub user table
---------------------------------------------------------------------------
-CREATE PROCEDURE [elfh].[proc_UserDetailForAuthenticationByUserName]
-(
- @userName varchar(100)
-)
-AS
-BEGIN
- SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
- SET NOCOUNT ON
- DECLARE @Err int
- DECLARE @false bit
- SET @false = 0
- SELECT elfhuser.Id as Id,
- elfhuser.userName,
- ISNULL(elfhuser.passwordHash, '') AS 'passwordHash',
- elfhuser.RestrictToSSO,
- up.Active,
- elfhuser.activeFromDate,
- elfhuser.activeToDate,
- elfhuser.passwordLifeCounter,
- userAttribData.userAttributeId as OpenAthensUserAttributeId
- FROM
- [hub].[User] elfhuser
- INNER JOIN hub.UserProfile up
- ON elfhuser.Id = up.Id
- OUTER APPLY
- (
- SELECT
- TOP 1 userAttrib.userAttributeId
- FROM
- elfh.userAttributeTBL userAttrib
- INNER Join
- elfh.attributeTBL attrib ON userAttrib.attributeId = attrib.attributeId AND lower(attrib.attributeName) = 'openathens_userid' AND userAttrib.deleted = 0
- WHERE
- userAttrib.userId = elfhuser.Id
- ) userAttribData
- WHERE
- elfhuser.userName = @userName
- AND
- elfhuser.deleted = 0
- AND
- up.deleted = 0
-
- SET @Err = @@Error
- RETURN @Err
-END
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryAttributeSave.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryAttributeSave.sql
deleted file mode 100644
index 7ecb39048..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryAttributeSave.sql
+++ /dev/null
@@ -1,89 +0,0 @@
-
---------------------------------------------------------------------------
--- Jignesh Jethwani 02-03-2018 Initial version
--- Jignesh Jethwani 02-10-2023 TD-2913, performance improvement, added no lock to select statement
--- Tobi Awe 24-09-2025 Updated table schema
---------------------------------------------------------------------------
-CREATE PROCEDURE [elfh].[proc_UserHistoryAttributeSave]
-(
- @userHistoryAttributeId int OUTPUT,
- @userHistoryId int,
- @attributeId int,
- @intValue int,
- @textValue nvarchar(255),
- @booleanValue bit,
- @dateValue datetimeoffset,
- @deleted bit,
- @amendUserId int,
- @amendDate datetimeoffset
-)
-AS
-BEGIN
- DECLARE @currentIntValue int
- DECLARE @currentTextValue nvarchar(255)
- DECLARE @currentBooleanValue bit
- DECLARE @currentDateValue datetimeoffset
- SELECT
- @userHistoryAttributeId = userHistoryAttributeId,
- @currentIntValue = intValue,
- @currentTextValue = textValue,
- @currentBooleanValue = booleanValue,
- @currentDateValue = dateValue
- FROM
- elfh.userHistoryAttributeTBL WITH (NOLOCK)
- WHERE
- userHistoryId = @userHistoryId
- AND
- attributeId = @attributeId
- IF @userHistoryAttributeId IS NULL
- BEGIN
- IF @intValue IS NOT NULL
- OR ISNULL(@textValue, '') != ''
- OR @booleanValue IS NOT NULL
- OR @dateValue IS NOT NULL
- BEGIN
- INSERT INTO elfh.userHistoryAttributeTBL(userHistoryId,
- attributeId,
- intValue,
- textValue,
- booleanValue,
- dateValue,
- deleted,
- amendUserId,
- amendDate)
- SELECT
- userHistoryId = @userHistoryId,
- attributeId = @attributeId,
- intValue = @intValue,
- textValue = @textValue,
- booleanValue = @booleanValue,
- dateValue = @dateValue,
- deleted = @deleted,
- amendUserId = @amendUserId,
- @amendDate
- SELECT @userHistoryAttributeId = SCOPE_IDENTITY()
- END
- END
- ELSE
- BEGIN
- -- Only update when an Attribute Value has changed
- IF (@intValue != @currentIntValue
- OR ISNULL(@textValue, '') != ISNULL(@currentTextValue,'')
- OR @booleanValue != @currentBooleanValue
- OR @dateValue != @currentDateValue)
- BEGIN
- UPDATE
- elfh.userHistoryAttributeTBL
- SET
- intValue = @intValue,
- textValue = @textValue,
- booleanValue = @booleanValue,
- dateValue = @dateValue,
- deleted = @deleted,
- amendUserId = @amendUserId,
- amendDate = @amendDate
- WHERE
- userHistoryAttributeId = @userHistoryAttributeId
- END
- END
-END
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryInsert.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryInsert.sql
deleted file mode 100644
index f972aa05b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryInsert.sql
+++ /dev/null
@@ -1,143 +0,0 @@
-
---------------------------------------------------------------------------
--- Chris Bain 08 Aug 2014 - Initial Build
--- Killian Davies 12 Aug 2015 - Added userAgent info (for Login history event)
--- Chris Bain 18 Nov 2016 - Added tenant Id
--- Jignesh Jethwani 02 Mar 2018 - Save details to User History Attribute, add url referer
---------------------------------------------------------------------------
-CREATE PROCEDURE [elfh].[proc_UserHistoryInsert]
- @userId int = 0,
- @historyTypeId int,
- @detailedInfo NVARCHAR(1000) = NULL,
- @userAgent NVARCHAR(1000) = NULL,
- @browserName NVARCHAR(1000) = NULL,
- @browserVersion NVARCHAR(1000) = NULL,
- @urlReferer NVARCHAR(1000) = NULL,
- @loginIP NVARCHAR(50) = NULL,
- @loginSuccessFul bit = NULL,
- @tenantId INT,
- @amendUserId INT,
- @amendDate DATETIMEOFFSET = NULL
-AS
-BEGIN
-
- DECLARE @UserHistoryId int
- DECLARE @detailInfoAttributeId int, @userAgentAttributeId int, @browserNameAttributeId int, @browserVersionAttributeId int, @urlRefererAttributeId int, @loginSuccessFulAttributeId int
- SET @amendDate = CoalEsce(@amendDate,SysDateTimeOffset())
-
- INSERT INTO userHistoryTBL (userId, userHistoryTypeId, tenantId,createdDate)
- VALUES (@userId, @historyTypeId, @tenantId, @amendDate)
-
-
- SET @UserHistoryId = CAST(SCOPE_IDENTITY() AS int)
-
- SELECT @detailInfoAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_DetailedInfo' AND deleted = 0
- SELECT @userAgentAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_UserAgent' AND deleted = 0
- SELECT @browserNameAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_BrowserName' AND deleted = 0
- SELECT @browserVersionAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_BrowserVersion' AND deleted = 0
- SELECT @urlRefererAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_UrlReferer' AND deleted = 0
- SELECT @loginSuccessFulAttributeId = attributeId FROM [elfh].[attributeTBL] WHERE [attributeName] = 'UserHistory_LoginSuccessful' AND deleted = 0
-
- -- DetailedInfo
- IF @detailInfoAttributeId > 0 AND @detailedInfo IS NOT NULL
- BEGIN
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @detailInfoAttributeId,
- NULL,
- @detailedInfo, -- textValue,
- NULL, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
- END
-
- -- User Agent
- IF @userAgentAttributeId > 0 AND @userAgent IS NOT NULL
- BEGIN
-
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @userAgentAttributeId,
- NULL, -- intValue
- @userAgent, -- textValue,
- NULL, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
- END
-
- -- Browser Name
- IF @browserNameAttributeId > 0 AND @browserName IS NOT NULL
- BEGIN
-
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @browserNameAttributeId,
- NULL, -- intValue
- @browserName, -- textValue,
- NULL, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
-
- END
-
- -- Browser Version
- IF @browserVersionAttributeId > 0 AND @browserVersion IS NOT NULL
- BEGIN
-
-
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @browserVersionAttributeId,
- NULL, -- intValue
- @browserVersion,
- NULL, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
- END
-
-
- -- Url Referer
- IF @urlRefererAttributeId > 0 AND @urlReferer IS NOT NULL
- BEGIN
-
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @urlRefererAttributeId,
- NULL, -- intValue
- @urlReferer, -- textValue,
- NULL, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
-
- END
-
-
- -- Login SuccessFul
- IF @loginSuccessFulAttributeId > 0 AND @loginSuccessFul IS NOT NULL
- BEGIN
-
- EXECUTE [elfh].[proc_UserHistoryAttributeSave] null,
- @UserHistoryId,
- @loginSuccessFulAttributeId,
- NULL, -- intValue
- @loginIP, -- textValue,
- @loginSuccessFul, -- booleanValue,
- NULL, -- dateValue,
- 0, -- deleted
- @amendUserId,
- @amendDate
-
- END
-
-
-END
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForLearningHubUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForLearningHubUser.sql
deleted file mode 100644
index 7889a609b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForLearningHubUser.sql
+++ /dev/null
@@ -1,50 +0,0 @@
---------------------------------------------------------------------------------
--- Killian Davies 08-February-2021 Initial Revision - services LH user history
---------------------------------------------------------------------------------
-CREATE PROCEDURE [elfh].[proc_UserHistoryLoadForLearningHubUser]
- @userId int,
- @startPage int=1,
- @PageSize float=10.0,
- @TotalResults int output
-AS
- DECLARE @History Table(RowNumber int, userHistoryId int)
-
- DECLARE @ItemsReturned INT
- DECLARE @StartRow INT
- DECLARE @EndRow INT
- SET @StartRow = ((@startPage - 1) * @PageSize)
- SET @EndRow = (@startPage * @PageSize) + 1
-
- INSERT INTO @History
- SELECT
- ROW_NUMBER() OVER( ORDER BY [userHistoryId] DESC) as RowNumber,
- userHistoryId
- FROM
- userHistoryTBL
- WHERE
- userId = @userId
- ORDER BY
- createdDate DESC
-
- -- Determine the number of items in the search result set
- SELECT
- @TotalResults = Count(userHistoryId)
- FROM
- @History
-
- SELECT
- uh.*,
- uht.[Description],
- ISNULL(t.tenantName,'Unknown') as tenantName
- FROM userHistoryVW uh
- INNER JOIN @History h ON h.userHistoryId = uh.userHistoryId
- INNER JOIN userHistoryTypeTBL uht ON uht.UserHistoryTypeId = uh.userHistoryTypeId
- LEFT JOIN tenantTBL t ON t.tenantId = uh.tenantId
- WHERE
- h.RowNumber > @StartRow
- AND
- h.RowNumber < @EndRow
- ORDER BY
- h.RowNumber ASC
-
-RETURN 0
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForUser.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForUser.sql
deleted file mode 100644
index 69e061a00..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Elfh/UserHistoryLoadForUser.sql
+++ /dev/null
@@ -1,55 +0,0 @@
---------------------------------------------------------------------------------
--- Jignesh Jethwani 05 Mar 2018 - Updated, moved userHistory to Attribute Table
--- Killian Davies 30 Oct 2019 - Perf improvement - modified to use table rather than view
---------------------------------------------------------------------------------
-
-CREATE PROCEDURE [elfh].[proc_UserHistoryLoadForUser]
- @userId int,
- @startPage int=1,
- @PageSize float=10.0,
- @PagesReturned int output
-AS
- DECLARE @History Table(RowNumber int, userHistoryId int)
-
- DECLARE @ItemsReturned INT
- DECLARE @StartRow INT
- DECLARE @EndRow INT
- SET @StartRow = ((@startPage - 1) * @PageSize)
- SET @EndRow = (@startPage * @PageSize) + 1
-
- INSERT INTO @History
- SELECT
- ROW_NUMBER() OVER( ORDER BY [userHistoryId] DESC) as RowNumber,
- userHistoryId
- FROM
- userHistoryTBL
- WHERE
- userId = @userId
- ORDER BY
- createdDate DESC
-
- -- Determine the number of items in the search result set
- SELECT
- @ItemsReturned = Count(userHistoryId)
- FROM
- @History
-
- SET @PagesReturned = CEILING(@ItemsReturned / @PageSize);
-
-
- SELECT
- uh.*,
- uht.[Description],
- ISNULL(t.tenantName,'Unknown') as tenantName
- FROM userHistoryVW uh
- INNER JOIN @History h ON h.userHistoryId = uh.userHistoryId
- INNER JOIN userHistoryTypeTBL uht ON uht.UserHistoryTypeId = uh.userHistoryTypeId
- LEFT JOIN tenantTBL t ON t.tenantId = uh.tenantId
- WHERE
- h.RowNumber > @StartRow
- AND
- h.RowNumber < @EndRow
- ORDER BY
- h.RowNumber ASC
-
-RETURN 0
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql
index 5120cbf10..b810a73f1 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql
@@ -15,320 +15,315 @@
-- 27 Sep 2023 HV Included Paging and user accessed catalogues
-- 13 Nov 2023 SA Included Node VersionId in also.
-- 29 Sep 2025 SA Integrated the provider dertails
+-- 31 Mar 2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [hierarchy].[GetDashboardCatalogues]
- @DashboardType nvarchar(30),
- @UserId INT,
- @PageNumber INT = 1,
- @TotalRecords INT OUTPUT
+ @DashboardType nvarchar(30),
+ @UserId INT,
+ @PageNumber INT = 1,
+ @TotalRecords INT OUTPUT
AS
BEGIN
- DECLARE @MaxPageNumber INT = 4
- DECLARE @FetchRows INT = 3
- DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows
- DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
-
- IF @PageNumber > 4 AND @DashboardType <> 'all-catalogues'
- BEGIN
- SET @PageNumber = @MaxPageNumber
- END
-
- DECLARE @Catalogues TABLE (NodeId [int] NOT NULL PRIMARY KEY, NodeCount [int] NOT NULL)
-
- IF @DashboardType = 'popular-catalogues'
- BEGIN
- INSERT INTO @Catalogues
- SELECT na.NodeId, Count( na.CatalogueNodeVersionId) NodeCount
- FROM [hierarchy].[Node] n
- JOIN [activity].[NodeActivity] na ON na.NodeId = n.Id AND na.CatalogueNodeVersionId = n.CurrentNodeVersionId
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2 AND na.NodeId !=113 /* ORCHA - temporary removal */
- GROUP BY na.NodeId
- SELECT
- nv.NodeId
- ,cnv.Id AS NodeVersionId
- ,cnv.Name
- ,cnv.Description
- ,cnv.BannerUrl
- ,cnv.BadgeUrl
- ,cnv.CardImageUrl
- ,cnv.Url
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,cpAgg.ProvidersJson
- FROM @Catalogues tc
- JOIN [hierarchy].[Node] n ON tc.NodeId = n.Id
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- LEFT JOIN (
- SELECT
- cnp.CatalogueNodeVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM hierarchy.CatalogueNodeVersionProvider cnp
- JOIN hub.Provider p ON p.Id = cnp.ProviderId
- WHERE p.Deleted = 0 and cnp.Deleted = 0
- GROUP BY cnp.CatalogueNodeVersionId
- ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id
- JOIN hub.Scope s ON n.Id = s.CatalogueNodeId
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2 AND s.Deleted = 0
- ORDER BY NodeCount DESC, cnv.Name
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM @Catalogues
- END
- ELSE IF @DashboardType = 'recent-catalogues'
- BEGIN
- SELECT
- nv.NodeId
- ,cnv.Id AS NodeVersionId
- ,cnv.Name
- ,cnv.Description
- ,cnv.BannerUrl
- ,cnv.BadgeUrl
- ,cnv.CardImageUrl
- ,cnv.Url
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,cpAgg.ProvidersJson
- INTO #recentcatalogues
- FROM [hierarchy].[Node] n
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- LEFT JOIN (
- SELECT
- cnp.CatalogueNodeVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM hierarchy.CatalogueNodeVersionProvider cnp
- JOIN hub.Provider p ON p.Id = cnp.ProviderId
- WHERE p.Deleted = 0 and cnp.Deleted = 0
- GROUP BY cnp.CatalogueNodeVersionId
- ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2 AND cnv.LastShownDate IS NOT NULL
- ORDER BY cnv.LastShownDate DESC
-
- SELECT rc.* FROM #recentcatalogues rc
- ORDER BY rc.NodeId DESC
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM #recentcatalogues
- END
- ELSE IF @DashboardType = 'highly-contributed-catalogues'
- BEGIN
- INSERT INTO @Catalogues
- select nr.NodeId, count(*) AS NodeCount
- from [hierarchy].[Node] n
- JOIN hierarchy.NodeResource nr ON nr.NodeId = n.Id
- JOIN resources.Resource r ON r.Id = nr.ResourceId
- JOIN resources.ResourceVersion rv ON rv.Id = r.CurrentResourceVersionId AND rv.VersionStatusId = 2 and rv.Deleted = 0
- JOIN hierarchy.Publication p ON p.Id = nr.PublicationId AND p.Deleted = 0
- where n.Id <> 1 AND nr.Deleted = 0 AND n.Deleted = 0 AND n.Hidden = 0
- GROUP BY nr.NodeId
-
- SELECT
- nv.NodeId
- ,cnv.Id AS NodeVersionId
- ,cnv.Name
- ,cnv.Description
- ,cnv.BannerUrl
- ,cnv.BadgeUrl
- ,cnv.CardImageUrl
- ,cnv.Url
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,(SELECT Sum(rvrs.AverageRating)
- FROM [resources].[ResourceVersionRatingSummary] rvrs
- WHERE rvrs.resourceversionid IN
- (SELECT r.currentresourceversionid
- FROM [resources].[Resource] r
- WHERE r.deleted = 0 AND r.id IN
- (SELECT nr.resourceid
- FROM [hierarchy].[NodeResource] nr
- WHERE nr.nodeid = n.id))
- ) AS AverageRating
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,cpAgg.ProvidersJson
- FROM @Catalogues tc
- JOIN [hierarchy].[Node] n ON tc.NodeId = n.Id
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- LEFT JOIN (
- SELECT
- cnp.CatalogueNodeVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM hierarchy.CatalogueNodeVersionProvider cnp
- JOIN hub.Provider p ON p.Id = cnp.ProviderId
- WHERE p.Deleted = 0 and cnp.Deleted = 0
- GROUP BY cnp.CatalogueNodeVersionId
- ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2
- ORDER BY tc.NodeCount DESC, AverageRating DESC, cnv.Name
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM @Catalogues
- END
- ELSE IF @DashboardType = 'all-catalogues'
- BEGIN
- SET @FetchRows = 9
- SET @OffsetRows = (@PageNumber - 1) * @FetchRows
- IF @PageNumber = -1
- BEGIN
- SET @FetchRows = 100000
- SET @OffsetRows = 0
- END
- SELECT
- nv.NodeId
- ,cnv.Id AS NodeVersionId
- ,cnv.Name
- ,cnv.Description
- ,cnv.BannerUrl
- ,cnv.BadgeUrl
- ,cnv.CardImageUrl
- ,cnv.Url
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,cpAgg.ProvidersJson
- FROM [hierarchy].[Node] n
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- LEFT JOIN (
- SELECT
- cnp.CatalogueNodeVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM hierarchy.CatalogueNodeVersionProvider cnp
- JOIN hub.Provider p ON p.Id = cnp.ProviderId
- WHERE p.Deleted = 0 and cnp.Deleted = 0
- GROUP BY cnp.CatalogueNodeVersionId
- ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2
- ORDER BY cnv.Name
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = Count(1)
- FROM [hierarchy].[Node] n
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id
- JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- WHERE n.Id <> 1 AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2
- END
- ELSE IF @DashboardType = 'my-catalogues'
- BEGIN
- DECLARE @MyActivity TABLE (NodeId [int] NOT NULL PRIMARY KEY, ResourceActivityId [int] NOT NULL, CatalogueNodeId [INT] NOT NULL)
-
- INSERT INTO @MyActivity
- SELECT np.NodeId, MAX(ra.Id) ResourceActivityId, CatalogueNodeId
- FROM
- activity.ResourceActivity ra
- JOIN [hierarchy].[NodePath] np ON np.id = ra.NodePathId
- WHERE ra.UserId = @UserId AND np.NodeId <> 1
- GROUP BY np.NodeId , CatalogueNodeId
- ORDER BY ResourceActivityId DESC
-
- SELECT DISTINCT
- nv.NodeId
- ,cnv.Id AS NodeVersionId
- ,cnv.Name
- ,cnv.Description
- ,cnv.BannerUrl
- ,cnv.BadgeUrl
- ,cnv.CardImageUrl
- ,cnv.Url
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,cpAgg.ProvidersJson
- FROM @MyActivity ma
- JOIN [hierarchy].[Node] n ON ma.NodeId = n.Id
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = ma.CatalogueNodeId
- LEFT JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- LEFT JOIN (
- SELECT
- cnp.CatalogueNodeVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM hierarchy.CatalogueNodeVersionProvider cnp
- JOIN hub.Provider p ON p.Id = cnp.ProviderId
- WHERE p.Deleted = 0 and cnp.Deleted = 0
- GROUP BY cnp.CatalogueNodeVersionId
- ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id
- INNER JOIN hub.Scope s ON ma.CatalogueNodeId = s.CatalogueNodeId
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE
- n.Id <> 1
- AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2 AND s.Deleted = 0
- ORDER BY nv.NodeId DESC, cnv.Name
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- ;WITH CTETEMP AS (SELECT DISTINCT NV.NodeId
- FROM @MyActivity ma
- JOIN [hierarchy].[Node] n ON ma.NodeId = n.Id
- JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = ma.CatalogueNodeId
- LEFT JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id
- INNER JOIN hub.Scope s ON ma.CatalogueNodeId = s.CatalogueNodeId
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE
- n.Id <> 1
- AND n.Hidden = 0 AND n.Deleted = 0 AND cnv.Deleted = 0 AND nv.VersionStatusId = 2 AND s.Deleted = 0)
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END
- FROM CTETEMP
- END
+ SET NOCOUNT ON;
+
+ DECLARE @MaxPageNumber INT = 4;
+ DECLARE @FetchRows INT = 3;
+
+ IF @DashboardType = 'all-catalogues'
+ SET @FetchRows = CASE WHEN @PageNumber = -1 THEN 100000 ELSE 9 END;
+
+ IF @PageNumber > @MaxPageNumber AND @DashboardType <> 'all-catalogues'
+ SET @PageNumber = @MaxPageNumber;
+
+ DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows;
+ DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows;
+
+---providers
+ SELECT
+ cnp.CatalogueNodeVersionId,
+ JSON_QUERY('[' + STRING_AGG(
+ '{"Id":' + CAST(p.Id AS NVARCHAR) +
+ ',"Name":"' + p.Name + '"' +
+ ',"Description":"' + p.Description + '"' +
+ ',"Logo":"' + ISNULL(p.Logo,'') + '"}',
+ ',') + ']') AS ProvidersJson
+ INTO #Providers
+ FROM hierarchy.CatalogueNodeVersionProvider cnp
+ JOIN hub.Provider p ON p.Id = cnp.ProviderId
+ WHERE p.Deleted = 0 AND cnp.Deleted = 0
+ GROUP BY cnp.CatalogueNodeVersionId;
+
+ --auth
+ SELECT DISTINCT CatalogueNodeId
+ INTO #Auth
+ FROM hub.RoleUserGroupView rug
+ JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
+ WHERE rug.ScopeTypeId = 1
+ AND rug.RoleId IN (1,2,3)
+ AND uug.Deleted = 0
+ AND uug.UserId = @UserId;
+
+ --base catalogue
+ SELECT
+ n.Id AS NodeId,
+ cnv.Id AS NodeVersionId,
+ cnv.Id AS CatalogueNodeVersionId,
+ cnv.Name,
+ cnv.Description,
+ cnv.BannerUrl,
+ cnv.BadgeUrl,
+ cnv.CardImageUrl,
+ cnv.Url,
+ cnv.RestrictedAccess
+ INTO #BaseCatalogues
+ FROM hierarchy.Node n
+ JOIN hierarchy.NodeVersion nv
+ ON nv.NodeId = n.Id
+ AND nv.VersionStatusId = 2
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.NodeVersionId = nv.Id
+ AND cnv.Deleted = 0
+ JOIN hub.Scope s
+ ON s.CatalogueNodeId = n.Id
+ AND s.Deleted = 0
+ WHERE n.Id <> 1
+ AND n.Hidden = 0
+ AND n.Deleted = 0;
+
+ --popular
+ IF @DashboardType = 'popular-catalogues'
+ BEGIN
+ SELECT na.NodeId, COUNT(*) NodeCount
+ INTO #Popular
+ FROM activity.NodeActivity na
+ JOIN hierarchy.Node n ON n.Id = na.NodeId
+ WHERE na.CatalogueNodeVersionId = n.CurrentNodeVersionId
+ AND n.Hidden = 0
+ AND n.Deleted = 0
+ AND na.NodeId <> 113
+ GROUP BY na.NodeId;
+
+ SELECT @TotalRecords =
+ CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END
+ FROM #Popular;
+
+ SELECT
+ b.NodeId,
+ b.NodeVersionId,
+ b.Name,
+ b.Description,
+ b.BannerUrl,
+ b.BadgeUrl,
+ b.CardImageUrl,
+ b.Url,
+ b.RestrictedAccess,
+
+ CAST(CASE
+ WHEN b.RestrictedAccess = 1 AND a.CatalogueNodeId IS NULL THEN 0
+ ELSE 1
+ END AS BIT) AS HasAccess,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ p.ProvidersJson
+
+ FROM #Popular pop
+ JOIN #BaseCatalogues b ON b.NodeId = pop.NodeId
+ LEFT JOIN #Providers p ON p.CatalogueNodeVersionId = b.CatalogueNodeVersionId
+ LEFT JOIN #Auth a ON a.CatalogueNodeId = b.NodeId
+ LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = b.NodeId
+
+ ORDER BY pop.NodeCount DESC, b.Name
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+ END
+
+ --recent
+ ELSE IF @DashboardType = 'recent-catalogues'
+ BEGIN
+ SELECT @TotalRecords =
+ CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END
+ FROM #BaseCatalogues b
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.Id = b.CatalogueNodeVersionId
+ WHERE cnv.LastShownDate IS NOT NULL;
+
+ SELECT
+ b.NodeId,
+ b.NodeVersionId,
+ b.Name,
+ b.Description,
+ b.BannerUrl,
+ b.BadgeUrl,
+ b.CardImageUrl,
+ b.Url,
+ b.RestrictedAccess,
+
+ CAST(CASE
+ WHEN b.RestrictedAccess = 1 AND a.CatalogueNodeId IS NULL THEN 0
+ ELSE 1
+ END AS BIT) AS HasAccess,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ p.ProvidersJson
+
+ FROM #BaseCatalogues b
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.Id = b.CatalogueNodeVersionId
+ LEFT JOIN #Providers p ON p.CatalogueNodeVersionId = b.CatalogueNodeVersionId
+ LEFT JOIN #Auth a ON a.CatalogueNodeId = b.NodeId
+ LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = b.NodeId
+
+ WHERE cnv.LastShownDate IS NOT NULL
+ ORDER BY b.NodeId DESC -- matches original final ordering
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+ END
+
+ ELSE IF @DashboardType = 'highly-contributed-catalogues'
+ BEGIN
+ SELECT nr.NodeId, COUNT(*) NodeCount
+ INTO #HC
+ FROM hierarchy.Node n
+ JOIN hierarchy.NodeResource nr ON nr.NodeId = n.Id
+ JOIN resources.Resource r ON r.Id = nr.ResourceId
+ JOIN resources.ResourceVersion rv
+ ON rv.Id = r.CurrentResourceVersionId
+ AND rv.VersionStatusId = 2
+ AND rv.Deleted = 0
+ JOIN hierarchy.Publication p ON p.Id = nr.PublicationId AND p.Deleted = 0
+ WHERE n.Id <> 1 AND nr.Deleted = 0 AND n.Deleted = 0 AND n.Hidden = 0
+ GROUP BY nr.NodeId;
+
+ SELECT @TotalRecords =
+ CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END
+ FROM #HC;
+
+ SELECT
+ b.NodeId,
+ b.NodeVersionId,
+ b.Name,
+ b.Description,
+ b.BannerUrl,
+ b.BadgeUrl,
+ b.CardImageUrl,
+ b.Url,
+ b.RestrictedAccess,
+
+ CAST(CASE
+ WHEN b.RestrictedAccess = 1 AND a.CatalogueNodeId IS NULL THEN 0
+ ELSE 1
+ END AS BIT) AS HasAccess,
+
+ (SELECT SUM(rvrs.AverageRating)
+ FROM resources.ResourceVersionRatingSummary rvrs
+ WHERE rvrs.ResourceVersionId IN (
+ SELECT r.CurrentResourceVersionId
+ FROM resources.Resource r
+ WHERE r.Deleted = 0
+ AND r.Id IN (
+ SELECT nr.ResourceId
+ FROM hierarchy.NodeResource nr
+ WHERE nr.NodeId = b.NodeId
+ )
+ )) AS AverageRating,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ p.ProvidersJson
+
+ FROM #HC hc
+ JOIN #BaseCatalogues b ON b.NodeId = hc.NodeId
+ LEFT JOIN #Providers p ON p.CatalogueNodeVersionId = b.CatalogueNodeVersionId
+ LEFT JOIN #Auth a ON a.CatalogueNodeId = b.NodeId
+ LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = b.NodeId
+
+ ORDER BY hc.NodeCount DESC, AverageRating DESC, b.Name
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+ END
+
+ ELSE IF @DashboardType = 'my-catalogues'
+ BEGIN
+ WITH Latest AS (
+ SELECT
+ np.NodeId,
+ np.CatalogueNodeId,
+ ROW_NUMBER() OVER (
+ PARTITION BY np.NodeId, np.CatalogueNodeId
+ ORDER BY ra.Id DESC
+ ) rn
+ FROM activity.ResourceActivity ra
+ JOIN hierarchy.NodePath np ON np.Id = ra.NodePathId
+ WHERE ra.UserId = @UserId
+ )
+ SELECT DISTINCT NodeId, CatalogueNodeId
+ INTO #MyCatalogues
+ FROM Latest
+ WHERE rn = 1;
+
+ SELECT @TotalRecords =
+ CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END
+ FROM #MyCatalogues;
+
+ SELECT
+ b.NodeId,
+ b.NodeVersionId,
+ b.Name,
+ b.Description,
+ b.BannerUrl,
+ b.BadgeUrl,
+ b.CardImageUrl,
+ b.Url,
+ b.RestrictedAccess,
+
+ CAST(CASE
+ WHEN b.RestrictedAccess = 1 AND a.CatalogueNodeId IS NULL THEN 0
+ ELSE 1
+ END AS BIT) AS HasAccess,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ p.ProvidersJson
+
+ FROM #MyCatalogues mc
+ JOIN #BaseCatalogues b ON b.NodeId = mc.CatalogueNodeId
+ LEFT JOIN #Providers p ON p.CatalogueNodeVersionId = b.CatalogueNodeVersionId
+ LEFT JOIN #Auth a ON a.CatalogueNodeId = b.NodeId
+ LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = b.NodeId
+
+ ORDER BY b.NodeId DESC
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+ END
+
+ ELSE
+ BEGIN
+ SELECT @TotalRecords = COUNT(*) FROM #BaseCatalogues;
+
+ SELECT
+ b.NodeId,
+ b.NodeVersionId,
+ b.Name,
+ b.Description,
+ b.BannerUrl,
+ b.BadgeUrl,
+ b.CardImageUrl,
+ b.Url,
+ b.RestrictedAccess,
+
+ CAST(CASE
+ WHEN b.RestrictedAccess = 1 AND a.CatalogueNodeId IS NULL THEN 0
+ ELSE 1
+ END AS BIT) AS HasAccess,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ p.ProvidersJson
+
+ FROM #BaseCatalogues b
+ LEFT JOIN #Providers p ON p.CatalogueNodeVersionId = b.CatalogueNodeVersionId
+ LEFT JOIN #Auth a ON a.CatalogueNodeId = b.NodeId
+ LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = b.NodeId
+
+ ORDER BY b.Name
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+ END
END
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql
index 59ddb3bff..1d448566e 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql
@@ -85,19 +85,24 @@ BEGIN
JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0
JOIN Resources.Resource r ON r.Id = rv.ResourceId
LEFT JOIN (
- SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+ SELECT
+ rp.ResourceVersionId,
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
+ FROM resources.ResourceVersionProvider rp
+ GROUP BY rp.ResourceVersionId
+) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql
index 8b141b80f..40446cc0c 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql
@@ -82,19 +82,24 @@ JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId
JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0
JOIN Resources.Resource r ON r.Id = rv.ResourceId
LEFT JOIN (
- SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+ SELECT
+ rp.ResourceVersionId,
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
+ FROM resources.ResourceVersionProvider rp
+ GROUP BY rp.ResourceVersionId
+) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql
index 465cc84a3..787171f56 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql
@@ -5,131 +5,225 @@
--
-- Modification History
--
--- 24 Jun 2024 OA Initial Revision
+-- 24 Jun 2024 OA Initial Revision
-- 27 Jun 2024 SA Removed unused temp tables
--- 29 Sep 2025 SA Integrated the provider dertails
+-- 29 Sep 2025 SA Integrated the provider details
+-- 31 Mar 2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [resources].[GetMyRecentCompletedDashboardResources]
- @UserId INT,
- @PageNumber INT = 1,
- @TotalRecords INT OUTPUT
+(
+ @UserId INT,
+ @PageNumber INT = 1,
+ @TotalRecords INT OUTPUT
+)
AS
BEGIN
- DECLARE @MaxPageNumber INT = 4
-
- IF @PageNumber > 4
- BEGIN
- SET @PageNumber = @MaxPageNumber
- END
-
- DECLARE @FetchRows INT = 3
- DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
- DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
-
- DECLARE @MyActivity TABLE (ResourceId [int] NOT NULL PRIMARY KEY, ResourceActivityId [int] NOT NULL);
-
- INSERT INTO @MyActivity
- SELECT TOP (@MaxRows) ra.ResourceId, MAX(ra.Id) ResourceActivityId
- FROM
- (SELECT a.Id,a.ResourceId,a.ResourceVersionId,a.LaunchResourceActivityId,a.UserId,a.ActivityStatusId,a.ActivityStart FROM activity.ResourceActivity a INNER JOIN (SELECT ResourceId, MAX(Id) as id FROM activity.ResourceActivity GROUP BY ResourceId ) AS b ON a.ResourceId = b.ResourceId AND a.id = b.id order by a.Id desc OFFSET 0 ROWS) ra
- JOIN [resources].[Resource] r ON ra.ResourceId = r.Id
- JOIN [resources].[ResourceVersion] rv ON rv.Id = ra.ResourceVersionId
- LEFT JOIN [resources].[AssessmentResourceVersion] arv ON arv.ResourceVersionId = ra.ResourceVersionId
- LEFT JOIN [activity].[AssessmentResourceActivity] ara ON ara.ResourceActivityId = COALESCE(ra.LaunchResourceActivityId, ra.Id)
- LEFT JOIN [activity].[MediaResourceActivity] mar ON mar.ResourceActivityId = COALESCE(ra.LaunchResourceActivityId, ra.Id)
- LEFT JOIN [activity].[ScormActivity] sa ON sa.ResourceActivityId = ra.Id
- WHERE ra.UserId = @UserId
- AND (
- (r.ResourceTypeId IN (2, 7) AND ra.ActivityStatusId = 3 AND ((mar.Id IS NOT NULL AND mar.PercentComplete = 100) OR ra.ActivityStart < '2020-09-07 00:00:00 +00:00'))
- OR (r.ResourceTypeId = 6 AND (sa.CmiCoreLesson_status IN(3,5) OR (ra.ActivityStatusId IN(3, 5))))
- OR (r.ResourceTypeId = 11 AND ara.Score >= arv.PassMark OR ra.ActivityStatusId IN( 3, 5))
- OR (r.ResourceTypeId IN (1, 5, 8, 9, 10, 12) AND ra.ActivityStatusId = 3))
- GROUP BY ra.ResourceId
- ORDER BY ResourceActivityId DESC
-
- SELECT r.Id AS ResourceId
- ,( SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0
- ) AS ResourceReferenceID
- ,r.CurrentResourceVersionId AS ResourceVersionId
- ,r.ResourceTypeId AS ResourceTypeId
- ,rv.Title
- ,rv.Description
- ,CASE
- WHEN r.ResourceTypeId = 7 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[VideoResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- WHEN r.ResourceTypeId = 2 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[AudioResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- ELSE
- NULL
- END AS DurationInMilliseconds
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName
- ,cnv.Url AS Url
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,rvrs.AverageRating
- ,rvrs.RatingCount
- ,rpAgg.ProvidersJson
-FROM @MyActivity ma
-JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId
-JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0
-JOIN Resources.Resource r ON r.Id = rv.ResourceId
-LEFT JOIN (
+ SET NOCOUNT ON;
+
+ DECLARE @MaxPageNumber INT = 4;
+ DECLARE @FetchRows INT = 3;
+
+ IF @PageNumber > @MaxPageNumber
+ SET @PageNumber = @MaxPageNumber;
+
+ DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows;
+ DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows;
+
+ -- Temp table for activity
+ CREATE TABLE #MyActivity (
+ ResourceId INT PRIMARY KEY,
+ ResourceActivityId INT
+ );
+
+
+ -- Latest activity per resource per user
+
+ WITH LatestActivity AS (
+ SELECT
+ a.Id,
+ a.ResourceId,
+ a.ResourceVersionId,
+ a.LaunchResourceActivityId,
+ a.ActivityStatusId,
+ a.ActivityStart,
+ ROW_NUMBER() OVER (
+ PARTITION BY a.ResourceId
+ ORDER BY a.Id DESC
+ ) AS rn
+ FROM activity.ResourceActivity a
+ WHERE a.UserId = @UserId
+ )
+ INSERT INTO #MyActivity
+ SELECT TOP (@MaxRows)
+ la.ResourceId,
+ la.Id
+ FROM LatestActivity la
+ JOIN resources.Resource r ON r.Id = la.ResourceId
+ JOIN resources.ResourceVersion rv ON rv.Id = la.ResourceVersionId
+ LEFT JOIN resources.AssessmentResourceVersion arv
+ ON arv.ResourceVersionId = la.ResourceVersionId
+ LEFT JOIN activity.AssessmentResourceActivity ara
+ ON ara.ResourceActivityId = COALESCE(la.LaunchResourceActivityId, la.Id)
+ LEFT JOIN activity.MediaResourceActivity mar
+ ON mar.ResourceActivityId = COALESCE(la.LaunchResourceActivityId, la.Id)
+ LEFT JOIN activity.ScormActivity sa
+ ON sa.ResourceActivityId = la.Id
+ WHERE
+ la.rn = 1
+ AND (
+ (r.ResourceTypeId IN (2,7)
+ AND la.ActivityStatusId = 3
+ AND (
+ (mar.Id IS NOT NULL AND mar.PercentComplete = 100)
+ OR la.ActivityStart < '2020-09-07'
+ )
+ )
+ OR (
+ r.ResourceTypeId = 6
+ AND (
+ sa.CmiCoreLesson_status IN (3,5)
+ OR la.ActivityStatusId IN (3,5)
+ )
+ )
+ OR (
+ r.ResourceTypeId = 11
+ AND (
+ ara.Score >= arv.PassMark
+ OR la.ActivityStatusId IN (3,5)
+ )
+ )
+ OR (
+ r.ResourceTypeId IN (1,5,8,9,10,12)
+ AND la.ActivityStatusId = 3
+ )
+ )
+ ORDER BY la.Id DESC;
+
+
+ -- Total count
+
+ SELECT @TotalRecords = COUNT(*) FROM #MyActivity;
+
+
+ -- Precompute ResourceReference lookup (replaces OUTER APPLY)
+
+ CREATE TABLE #ResourceRefLookup (
+ ResourceId INT NOT NULL,
+ NodeId INT NOT NULL,
+ OriginalResourceReferenceId INT NOT NULL,
+ PRIMARY KEY (ResourceId, NodeId)
+ );
+
+ INSERT INTO #ResourceRefLookup (ResourceId, NodeId, OriginalResourceReferenceId)
+ SELECT
+ x.ResourceId,
+ x.NodeId,
+ x.OriginalResourceReferenceId
+ FROM (
SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
-JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
-JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
-JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
-JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
-JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
-JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
-JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
-LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
-LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
-ORDER BY ma.ResourceActivityId DESC, rv.Title
-OFFSET @OffsetRows ROWS
-FETCH NEXT @FetchRows ROWS ONLY
-
-SELECT @TotalRecords = CASE WHEN COUNT(ma.ResourceActivityId) > 12 THEN @MaxRows ELSE COUNT(*) END
-FROM @MyActivity ma
-JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId
-JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0
-JOIN Resources.Resource r ON r.Id = rv.ResourceId
-JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
-JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
-JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
-JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
-JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
-JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
-JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
-LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
-LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
-
+ rr.ResourceId,
+ np.NodeId,
+ rr.OriginalResourceReferenceId,
+ ROW_NUMBER() OVER (
+ PARTITION BY rr.ResourceId, np.NodeId
+ ORDER BY rr.Id DESC
+ ) AS rn
+ FROM resources.ResourceReference rr
+ JOIN hierarchy.NodePath np
+ ON np.Id = rr.NodePathId
+ WHERE rr.Deleted = 0
+ AND np.Deleted = 0
+ ) x
+ WHERE x.rn = 1;
+
+
+
+ -- Final SELECT
+
+ SELECT
+ r.Id AS ResourceId,
+ rrRef.OriginalResourceReferenceId AS ResourceReferenceID,
+ r.CurrentResourceVersionId AS ResourceVersionId,
+ r.ResourceTypeId,
+ rv.Title,
+ rv.Description,
+ CASE
+ WHEN r.ResourceTypeId = 7 THEN vrv.DurationInMilliseconds
+ WHEN r.ResourceTypeId = 2 THEN arv2.DurationInMilliseconds
+ ELSE NULL
+ END AS DurationInMilliseconds,
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName,
+ cnv.Url,
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl,
+ cnv.RestrictedAccess,
+ CAST(
+ CASE
+ WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL
+ THEN 0 ELSE 1
+ END AS BIT
+ ) AS HasAccess,
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ rvrs.AverageRating,
+ rvrs.RatingCount,
+ rpAgg.ProvidersJson
+ FROM #MyActivity ma
+ JOIN activity.ResourceActivity ra ON ra.Id = ma.ResourceActivityId
+ JOIN resources.ResourceVersion rv ON rv.Id = ra.ResourceVersionId AND rv.Deleted = 0
+ JOIN resources.Resource r ON r.Id = rv.ResourceId
+ JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
+
+ -- Replaced OUTER APPLY
+ LEFT JOIN #ResourceRefLookup rrRef
+ ON rrRef.ResourceId = r.Id
+ AND rrRef.NodeId = nr.NodeId
+
+ LEFT JOIN (
+ SELECT
+ rp.ResourceVersionId,
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
+ FROM resources.ResourceVersionProvider rp
+ GROUP BY rp.ResourceVersionId
+) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+
+ JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
+ JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
+ JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
+ JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
+ JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
+ JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
+ LEFT JOIN hub.UserBookmark ub
+ ON ub.UserId = @UserId
+ AND ub.ResourceReferenceId = rrRef.OriginalResourceReferenceId
+ LEFT JOIN (
+ SELECT DISTINCT CatalogueNodeId
+ FROM hub.RoleUserGroupView rug
+ JOIN hub.UserUserGroup uug
+ ON rug.UserGroupId = uug.UserGroupId
+ WHERE rug.ScopeTypeId = 1
+ AND rug.RoleId IN (1,2,3)
+ AND uug.Deleted = 0
+ AND uug.UserId = @UserId
+ ) auth ON n.Id = auth.CatalogueNodeId
+ LEFT JOIN resources.VideoResourceVersion vrv
+ ON vrv.ResourceVersionId = r.CurrentResourceVersionId
+ LEFT JOIN resources.AudioResourceVersion arv2
+ ON arv2.ResourceVersionId = r.CurrentResourceVersionId
+ ORDER BY ma.ResourceActivityId DESC, rv.Title
+ OFFSET @OffsetRows ROWS
+ FETCH NEXT @FetchRows ROWS ONLY;
+
END
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql
index 3c0186a08..7c26d451a 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql
@@ -7,106 +7,178 @@
--
-- 24 Jun 2024 OA Initial Revision
-- 27 Jun 2024 SA Removed unused temp tables
--- 29 Sep 2025 SA Integarted providerid details
+-- 29 Sep 2025 SA Integarted providerid details
+-- 31 Mar 2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [resources].[GetPopularDashboardResources]
- @UserId INT,
- @PageNumber INT = 1,
- @TotalRecords INT OUTPUT
+ @UserId INT,
+ @PageNumber INT = 1,
+ @TotalRecords INT OUTPUT
AS
BEGIN
- DECLARE @MaxPageNumber INT = 4
-
- IF @PageNumber > 4
- BEGIN
- SET @PageNumber = @MaxPageNumber
- END
-
- DECLARE @FetchRows INT = 3
- DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
- DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
-
- DECLARE @Resources TABLE (ResourceId [int] NOT NULL PRIMARY KEY, ResourceActivityCount [int] NOT NULL);
-
-
- INSERT INTO @Resources
- SELECT TOP (@MaxRows) ra.ResourceId
- ,Count(ra.ResourceVersionId) ResourceActivityCount
- FROM resources.Resource r
- JOIN resources.ResourceVersion rv On rv.id = r.CurrentResourceVersionId AND rv.VersionStatusId = 2
- JOIN activity.ResourceActivity ra ON ra.ResourceId = r.Id
- JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
- JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
- JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
- JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
- JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
- GROUP BY ra.ResourceId
- ORDER BY ResourceActivityCount DESC
- SELECT
- tr.ResourceId
- ,( SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0
- ) AS ResourceReferenceID
- ,r.CurrentResourceVersionId AS ResourceVersionId
- ,r.ResourceTypeId AS ResourceTypeId
- ,rv.Title
- ,rv.Description
- ,CASE
- WHEN r.ResourceTypeId = 7 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[VideoResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- WHEN r.ResourceTypeId = 2 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[AudioResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- ELSE
- NULL
- END AS DurationInMilliseconds
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName
- ,cnv.Url AS Url
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,rvrs.AverageRating
- ,rvrs.RatingCount
- ,rpAgg.ProvidersJson
- FROM @Resources tr
- JOIN resources.Resource r ON r.id = tr.ResourceId
- JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0
- LEFT JOIN (
+ SET NOCOUNT ON;
+
+ DECLARE @MaxPageNumber INT = 4;
+ DECLARE @FetchRows INT = 3;
+
+ IF @PageNumber > @MaxPageNumber
+ SET @PageNumber = @MaxPageNumber;
+
+ DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows;
+ DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows;
+
+
+ -- Temp table instead of table variable
+ CREATE TABLE #Resources (
+ ResourceId INT NOT NULL PRIMARY KEY,
+ ResourceActivityCount INT NOT NULL
+ );
+
+ -- Populate popular resources (TOP @MaxRows)
+
+ INSERT INTO #Resources (ResourceId, ResourceActivityCount)
+ SELECT TOP (@MaxRows)
+ ra.ResourceId,
+ COUNT(ra.ResourceVersionId) AS ResourceActivityCount
+ FROM resources.Resource r
+ JOIN resources.ResourceVersion rv
+ ON rv.Id = r.CurrentResourceVersionId
+ AND rv.VersionStatusId = 2
+ JOIN activity.ResourceActivity ra
+ ON ra.ResourceId = r.Id
+ JOIN hierarchy.NodeResource nr
+ ON r.Id = nr.ResourceId AND nr.Deleted = 0
+ JOIN hierarchy.Node n
+ ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
+ JOIN hierarchy.NodePath np
+ ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
+ JOIN hierarchy.NodeVersion nv
+ ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
+ GROUP BY ra.ResourceId
+ ORDER BY COUNT(ra.ResourceVersionId) DESC;
+
+ -- Main result set with paging
+
+ SELECT
+ tr.ResourceId,
+ rrRef.OriginalResourceReferenceId AS ResourceReferenceID,
+ r.CurrentResourceVersionId AS ResourceVersionId,
+ r.ResourceTypeId,
+ rv.Title,
+ rv.Description,
+ CASE
+ WHEN r.ResourceTypeId = 7 THEN vrv.DurationInMilliseconds
+ WHEN r.ResourceTypeId = 2 THEN arv2.DurationInMilliseconds
+ ELSE NULL
+ END AS DurationInMilliseconds,
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName,
+ cnv.Url,
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl,
+ cnv.RestrictedAccess,
+ CAST(
+ CASE
+ WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL
+ THEN 0 ELSE 1
+ END AS BIT
+ ) AS HasAccess,
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+ rvrs.AverageRating,
+ rvrs.RatingCount,
+ rpAgg.ProvidersJson
+ FROM #Resources tr
+ JOIN resources.Resource r
+ ON r.Id = tr.ResourceId
+ JOIN resources.ResourceVersion rv
+ ON rv.ResourceId = r.Id
+ AND rv.Id = r.CurrentResourceVersionId
+ AND rv.Deleted = 0
+
+ JOIN hierarchy.NodeResource nr
+ ON r.Id = nr.ResourceId AND nr.Deleted = 0
+ JOIN hierarchy.Node n
+ ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
+ JOIN hierarchy.NodePath np
+ ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
+ JOIN hierarchy.NodeVersion nv
+ ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
+
+ -- Deterministic ResourceReference lookup
+ OUTER APPLY (
+ SELECT TOP 1 rr.OriginalResourceReferenceId
+ FROM resources.ResourceReference rr
+ JOIN hierarchy.NodePath np2
+ ON np2.Id = rr.NodePathId
+ AND np2.NodeId = n.Id
+ AND np2.Deleted = 0
+ WHERE rr.ResourceId = rv.ResourceId
+ AND rr.Deleted = 0
+ ORDER BY rr.Id DESC
+ ) rrRef
+
+ -- Provider JSON aggregation
+ LEFT JOIN (
SELECT
rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
- JOIN resources.ResourceVersionRatingSummary rvrs ON r.CurrentResourceVersionId = rvrs.ResourceVersionId AND rvrs.Deleted = 0
- JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
- JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
- JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
- JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
- JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE rv.VersionStatusId = 2
- ORDER BY tr.ResourceActivityCount DESC, rv.Title
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM @Resources
+) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+
+ JOIN resources.ResourceVersionRatingSummary rvrs
+ ON r.CurrentResourceVersionId = rvrs.ResourceVersionId
+ AND rvrs.Deleted = 0
+
+
+
+ -- Bookmark lookup using same ResourceReference
+ LEFT JOIN hub.UserBookmark ub
+ ON ub.UserId = @UserId
+ AND ub.ResourceReferenceId = rrRef.OriginalResourceReferenceId
+
+ -- Access check
+ LEFT JOIN (
+ SELECT DISTINCT CatalogueNodeId
+ FROM hub.RoleUserGroupView rug
+ JOIN hub.UserUserGroup uug
+ ON rug.UserGroupId = uug.UserGroupId
+ WHERE rug.ScopeTypeId = 1
+ AND rug.RoleId IN (1,2,3)
+ AND uug.Deleted = 0
+ AND uug.UserId = @UserId
+ ) auth ON n.Id = auth.CatalogueNodeId
+
+
+ LEFT JOIN resources.VideoResourceVersion vrv
+ ON vrv.ResourceVersionId = r.CurrentResourceVersionId
+ LEFT JOIN resources.AudioResourceVersion arv2
+ ON arv2.ResourceVersionId = r.CurrentResourceVersionId
+
+ WHERE rv.VersionStatusId = 2
+ ORDER BY tr.ResourceActivityCount DESC, rv.Title
+ OFFSET @OffsetRows ROWS
+ FETCH NEXT @FetchRows ROWS ONLY;
+
+
+
+ SELECT @TotalRecords = COUNT(*) FROM #Resources;
END
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql
index b9c7969c6..1e692fcc5 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql
@@ -8,92 +8,170 @@
-- 24 Jun 2024 OA Initial Revision
-- 27 Jun 2024 SA Removed unused temp tables
-- 29 Sep 2025 SA Integrated the provider dertails
+-- 31 Mar 2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [resources].[GetRatedDashboardResources]
- @UserId INT,
- @PageNumber INT = 1,
- @TotalRecords INT OUTPUT
+ @UserId INT,
+ @PageNumber INT = 1,
+ @TotalRecords INT OUTPUT
AS
BEGIN
- DECLARE @MaxPageNumber INT = 4
-
- IF @PageNumber > 4
- BEGIN
- SET @PageNumber = @MaxPageNumber
- END
-
- DECLARE @FetchRows INT = 3
- DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
- DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
-
- SELECT TOP(@MaxRows) r.Id AS ResourceId
- ,( SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0
- ) AS ResourceReferenceID
- ,r.CurrentResourceVersionId AS ResourceVersionId
- ,r.ResourceTypeId AS ResourceTypeId
- ,rv.Title
- ,rv.Description
- ,CASE
- WHEN r.ResourceTypeId = 7 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[VideoResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- WHEN r.ResourceTypeId = 2 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[AudioResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- ELSE
- NULL
- END AS DurationInMilliseconds
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName
- ,cnv.Url AS Url
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,rvrs.AverageRating
- ,rvrs.RatingCount
- ,rpAgg.ProvidersJson
- INTO #ratedresources
- FROM Resources.Resource r
- JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0
- LEFT JOIN (
- SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
- JOIN resources.ResourceVersionRatingSummary rvrs ON r.CurrentResourceVersionId = rvrs.ResourceVersionId AND rvrs.RatingCount > 0
- JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
- JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
- JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
- JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
- JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE rv.VersionStatusId = 2
- ORDER BY rvrs.AverageRating DESC, rvrs.RatingCount DESC, rv.Title
-
- SELECT rr.* FROM #ratedresources rr
- ORDER BY rr.AverageRating DESC, rr.RatingCount DESC, rr.Title
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM #ratedresources
+ SET NOCOUNT ON;
+ DECLARE @MaxPageNumber INT = 4;
+ DECLARE @FetchRows INT = 3;
+
+ IF @PageNumber > @MaxPageNumber
+ SET @PageNumber = @MaxPageNumber;
+
+ DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows;
+ DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows;
+
+
+ CREATE TABLE #RatedResources (
+ ResourceId INT,
+ ResourceReferenceID INT,
+ ResourceVersionId INT,
+ ResourceTypeId INT,
+ Title NVARCHAR(500),
+ Description NVARCHAR(MAX),
+ DurationInMilliseconds INT NULL,
+ CatalogueName NVARCHAR(255),
+ Url NVARCHAR(500),
+ BadgeUrl NVARCHAR(500),
+ RestrictedAccess BIT,
+ HasAccess BIT,
+ BookMarkId INT NULL,
+ IsBookmarked BIT,
+ AverageRating DECIMAL(2, 1),
+ RatingCount INT,
+ ProvidersJson NVARCHAR(MAX)
+ );
+
+ -- Insert TOP(@MaxRows) rated resources
+ INSERT INTO #RatedResources
+ SELECT TOP (@MaxRows)
+ r.Id AS ResourceId,
+ rrRef.OriginalResourceReferenceId AS ResourceReferenceID,
+ r.CurrentResourceVersionId AS ResourceVersionId,
+ r.ResourceTypeId,
+ rv.Title,
+ rv.Description,
+
+ CASE
+ WHEN r.ResourceTypeId = 7 THEN vrv.DurationInMilliseconds
+ WHEN r.ResourceTypeId = 2 THEN arv2.DurationInMilliseconds
+ ELSE NULL
+ END AS DurationInMilliseconds,
+
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName,
+ cnv.Url,
+ CASE WHEN n.Id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl,
+ cnv.RestrictedAccess,
+
+ CAST(
+ CASE
+ WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL
+ THEN 0 ELSE 1
+ END AS BIT
+ ) AS HasAccess,
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted,1) ^ 1 AS BIT) AS IsBookmarked,
+
+ rvrs.AverageRating,
+ rvrs.RatingCount,
+ rpAgg.ProvidersJson
+
+ FROM Resources.Resource r
+ JOIN resources.ResourceVersion rv
+ ON rv.ResourceId = r.Id
+ AND rv.Id = r.CurrentResourceVersionId
+ AND rv.Deleted = 0
+
+ JOIN resources.ResourceVersionRatingSummary rvrs
+ ON rvrs.ResourceVersionId = r.CurrentResourceVersionId
+ AND rvrs.RatingCount > 0
+
+ -- Hierarchy joins
+ JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
+ JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
+ JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
+ JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
+ JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
+
+ -- Deterministic ResourceReference lookup
+ OUTER APPLY (
+ SELECT TOP 1 rr.OriginalResourceReferenceId
+ FROM resources.ResourceReference rr
+ JOIN hierarchy.NodePath np2
+ ON np2.Id = rr.NodePathId
+ AND np2.NodeId = nr.NodeId
+ AND np2.Deleted = 0
+ WHERE rr.ResourceId = rv.ResourceId
+ AND rr.Deleted = 0
+ ORDER BY rr.Id DESC
+ ) rrRef
+
+ -- Provider JSON aggregation
+
+ LEFT JOIN (
+ SELECT
+ rp.ResourceVersionId,
+ (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ ) AS ProvidersJson
+ FROM resources.ResourceVersionProvider rp
+ GROUP BY rp.ResourceVersionId
+) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
+
+
+
+ -- Bookmark lookup
+ LEFT JOIN hub.UserBookmark ub
+ ON ub.UserId = @UserId
+ AND ub.ResourceReferenceId = rrRef.OriginalResourceReferenceId
+
+ -- Access check
+ LEFT JOIN (
+ SELECT DISTINCT CatalogueNodeId
+ FROM hub.RoleUserGroupView rug
+ JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
+ WHERE rug.ScopeTypeId = 1
+ AND rug.RoleId IN (1,2,3)
+ AND uug.Deleted = 0
+ AND uug.UserId = @UserId
+ ) auth ON n.Id = auth.CatalogueNodeId
+
+ LEFT JOIN resources.VideoResourceVersion vrv
+ ON vrv.ResourceVersionId = r.CurrentResourceVersionId
+
+ LEFT JOIN resources.AudioResourceVersion arv2
+ ON arv2.ResourceVersionId = r.CurrentResourceVersionId
+
+ WHERE rv.VersionStatusId = 2
+ ORDER BY rvrs.AverageRating DESC, rvrs.RatingCount DESC, rv.Title;
+
+
+ SELECT *
+ FROM #RatedResources
+ ORDER BY AverageRating DESC, RatingCount DESC, Title
+ OFFSET @OffsetRows ROWS
+ FETCH NEXT @FetchRows ROWS ONLY;
+
+ SELECT @TotalRecords = COUNT(*) FROM #RatedResources;
+
END
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql
index eedbe00e6..4050d3b0c 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql
@@ -8,91 +8,180 @@
-- 24 Jun 2024 OA Initial Revision
-- 27 Jun 2024 SA Removed unused temp tables
-- 29 Sep 2025 SA Integrated the provider dertails
+-- 31 Mar 2026 OA TD-7057 Script Optimization
-------------------------------------------------------------------------------
CREATE PROCEDURE [resources].[GetRecentDashboardResources]
- @UserId INT,
- @PageNumber INT = 1,
- @TotalRecords INT OUTPUT
+ @UserId INT,
+ @PageNumber INT = 1,
+ @TotalRecords INT OUTPUT
AS
BEGIN
- DECLARE @MaxPageNumber INT = 4
-
- IF @PageNumber > 4
- BEGIN
- SET @PageNumber = @MaxPageNumber
- END
-
- DECLARE @FetchRows INT = 3
- DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
- DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
-
- SELECT TOP(@MaxRows) r.Id AS ResourceId
- ,( SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0
- ) AS ResourceReferenceID
- ,r.CurrentResourceVersionId AS ResourceVersionId
- ,r.ResourceTypeId AS ResourceTypeId
- ,rv.Title
- ,rv.Description
- ,CASE
- WHEN r.ResourceTypeId = 7 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[VideoResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- WHEN r.ResourceTypeId = 2 THEN
- (SELECT vrv.DurationInMilliseconds from [resources].[AudioResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
- ELSE
- NULL
- END AS DurationInMilliseconds
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName
- ,cnv.Url AS Url
- ,CASE WHEN n.id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl
- ,cnv.RestrictedAccess
- ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
- ,ub.Id AS BookMarkId
- ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
- ,rvrs.AverageRating
- ,rvrs.RatingCount
- ,rpAgg.ProvidersJson
- INTO #recentresources
- FROM Resources.Resource r
- JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0
- LEFT JOIN (
- SELECT
- rp.ResourceVersionId,
- JSON_QUERY('[' + STRING_AGG(
- '{"Id":' + CAST(p.Id AS NVARCHAR) +
- ',"Name":"' + p.Name + '"' +
- ',"Description":"' + p.Description + '"' +
- ',"Logo":"' + ISNULL(p.Logo, '') + '"}',
- ',') + ']') AS ProvidersJson
- FROM resources.ResourceVersionProvider rp
- JOIN hub.Provider p ON p.Id = rp.ProviderId
- WHERE p.Deleted = 0 and rp.Deleted = 0
- GROUP BY rp.ResourceVersionId
- ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId
- JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
- JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
- JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
- JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
- JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
- JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
- JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
- LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
- FROM [resources].[ResourceReference] rr
- JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
- WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
- LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
- FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
- WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
- WHERE rv.VersionStatusId = 2
- ORDER BY p.CreateDate DESC
-
- SELECT rr.* FROM #recentresources rr
- ORDER BY rr.ResourceVersionId DESC
- OFFSET @OffsetRows ROWS
- FETCH NEXT @FetchRows ROWS ONLY
-
- SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM #recentresources
+ SET NOCOUNT ON;
+
+ DECLARE @MaxPageNumber INT = 4;
+ DECLARE @FetchRows INT = 3;
+
+ IF @PageNumber > @MaxPageNumber
+ SET @PageNumber = @MaxPageNumber;
+
+ DECLARE @MaxRows INT = @MaxPageNumber * @FetchRows;
+ DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows;
+
+ -- Providers precomputed:
+ SELECT
+ rp.ResourceVersionId,
+ ProvidersJson = (
+ SELECT
+ p.Id,
+ p.Name,
+ p.Description,
+ p.Logo
+ FROM resources.ResourceVersionProvider rp2
+ JOIN hub.Provider p ON p.Id = rp2.ProviderId
+ WHERE rp2.ResourceVersionId = rp.ResourceVersionId
+ AND rp2.Deleted = 0
+ AND p.Deleted = 0
+ FOR JSON PATH
+ )
+INTO #Providers
+FROM resources.ResourceVersionProvider rp
+WHERE rp.Deleted = 0
+GROUP BY rp.ResourceVersionId;
+
+
+ -- Auth precomputed
+
+ SELECT DISTINCT CatalogueNodeId
+ INTO #Auth
+ FROM hub.RoleUserGroupView rug
+ JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
+ WHERE rug.ScopeTypeId = 1
+ AND rug.RoleId IN (1,2,3)
+ AND uug.Deleted = 0
+ AND uug.UserId = @UserId;
+
+ -- ResourceReferenceId (precomputed)
+ SELECT
+ rr.ResourceId,
+ rr.NodePathId,
+ rr.OriginalResourceReferenceId
+ INTO #Ref
+ FROM resources.ResourceReference rr
+ JOIN hierarchy.NodePath np ON np.Id = rr.NodePathId
+ AND np.Deleted = 0
+ WHERE rr.Deleted = 0;
+
+
+ SELECT TOP (@MaxRows)
+ r.Id AS ResourceId,
+ rv.Id AS ResourceVersionId,
+ r.ResourceTypeId,
+ rv.Title,
+ rv.Description,
+ rvrs.AverageRating,
+ rvrs.RatingCount,
+ p.CreateDate,
+ cnv.Name AS CatalogueName,
+ cnv.Url,
+ cnv.BadgeUrl,
+ cnv.RestrictedAccess,
+ prov.ProvidersJson,
+
+ ---------------------------------------------------------------------
+ -- Duration (Video/Audio)
+ ---------------------------------------------------------------------
+ CASE
+ WHEN r.ResourceTypeId = 7 THEN
+ (SELECT DurationInMilliseconds
+ FROM resources.VideoResourceVersion
+ WHERE ResourceVersionId = rv.Id)
+ WHEN r.ResourceTypeId = 2 THEN
+ (SELECT DurationInMilliseconds
+ FROM resources.AudioResourceVersion
+ WHERE ResourceVersionId = rv.Id)
+ ELSE NULL
+ END AS DurationInMilliseconds,
+
+ ---------------------------------------------------------------------
+ -- ResourceReferenceId (TOP 1 per original logic)
+ ---------------------------------------------------------------------
+ (SELECT TOP 1 rf.OriginalResourceReferenceId
+ FROM #Ref rf
+ JOIN hierarchy.NodePath np2 ON np2.Id = rf.NodePathId
+ AND np2.NodeId = n.Id
+ AND np2.Deleted = 0
+ WHERE rf.ResourceId = r.Id) AS ResourceReferenceId,
+
+
+ -- Bookmark
+
+ ub.Id AS BookMarkId,
+ CAST(ISNULL(ub.Deleted, 1) ^ 1 AS BIT) AS IsBookmarked,
+
+ -- Access
+
+ CAST(
+ CASE
+ WHEN cnv.RestrictedAccess = 1
+ AND auth.CatalogueNodeId IS NULL
+ THEN 0 ELSE 1
+ END AS BIT
+ ) AS HasAccess
+
+ INTO #Recent
+ FROM resources.Resource r
+ JOIN resources.ResourceVersion rv
+ ON rv.Id = r.CurrentResourceVersionId
+ AND rv.Deleted = 0
+ AND rv.VersionStatusId = 2
+ JOIN hierarchy.Publication p
+ ON rv.PublicationId = p.Id
+ AND p.Deleted = 0
+ JOIN resources.ResourceVersionRatingSummary rvrs
+ ON rv.Id = rvrs.ResourceVersionId
+ AND rvrs.Deleted = 0
+ JOIN hierarchy.NodeResource nr
+ ON nr.ResourceId = r.Id
+ AND nr.Deleted = 0
+ JOIN hierarchy.Node n
+ ON n.Id = nr.NodeId
+ AND n.Hidden = 0
+ AND n.Deleted = 0
+ JOIN hierarchy.NodePath np
+ ON np.NodeId = n.Id
+ AND np.Deleted = 0
+ AND np.IsActive = 1
+ JOIN hierarchy.NodeVersion nv
+ ON nv.NodeId = np.CatalogueNodeId
+ AND nv.VersionStatusId = 2
+ AND nv.Deleted = 0
+ JOIN hierarchy.CatalogueNodeVersion cnv
+ ON cnv.NodeVersionId = nv.Id
+ AND cnv.Deleted = 0
+ LEFT JOIN #Providers prov
+ ON prov.ResourceVersionId = rv.Id
+ LEFT JOIN #Auth auth
+ ON auth.CatalogueNodeId = n.Id
+ LEFT JOIN hub.UserBookmark ub
+ ON ub.UserId = @UserId
+ AND ub.ResourceReferenceId = (
+ SELECT TOP 1 rf.OriginalResourceReferenceId
+ FROM #Ref rf
+ JOIN hierarchy.NodePath np2 ON np2.Id = rf.NodePathId
+ AND np2.NodeId = n.Id
+ AND np2.Deleted = 0
+ WHERE rf.ResourceId = r.Id
+ )
+ ORDER BY p.CreateDate DESC;
+
+
+ SELECT @TotalRecords = COUNT(*) FROM #Recent;
+
+ SELECT *
+ FROM #Recent
+ ORDER BY CreateDate DESC
+ OFFSET @OffsetRows ROWS FETCH NEXT @FetchRows ROWS ONLY;
+
END
+
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Adf/ADFSyncMetadata.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Adf/ADFSyncMetadata.sql
index c39c5980b..838cb579b 100644
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Adf/ADFSyncMetadata.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Tables/Adf/ADFSyncMetadata.sql
@@ -1,7 +1,7 @@
-CREATE TABLE ADFSyncMetadata (
+CREATE TABLE ADFSyncMetadata (
SyncDirection VARCHAR(50), -- e.g., 'ELFHtoLH' or 'LHtoELFH'
TableName VARCHAR(100), -- e.g., 'userTBL_Test', 'departmentTBL'
LastSyncTime DATETIME2,
PRIMARY KEY (SyncDirection, TableName)
);
-GO
+GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTBL.sql
deleted file mode 100644
index 69fffa30b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTBL.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-CREATE TABLE [elfh].[attributeTBL](
- [attributeId] [int] IDENTITY(1,1) NOT NULL,
- [attributeTypeId] [int] NOT NULL,
- [attributeName] [nvarchar](50) NOT NULL,
- [attributeAccess] [tinyint] NOT NULL,
- [attributeDescription] [nvarchar](400) NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_attributeTBL] PRIMARY KEY CLUSTERED
-(
- [attributeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[attributeTBL] ADD DEFAULT ((0)) FOR [attributeAccess]
-GO
-
-ALTER TABLE [elfh].[attributeTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[attributeTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[attributeTBL] WITH CHECK ADD CONSTRAINT [FK_attributeTBL_attributeTypeId] FOREIGN KEY([attributeTypeId])
-REFERENCES [elfh].[attributeTypeTBL] ([attributeTypeId])
-GO
-
-ALTER TABLE [elfh].[attributeTBL] CHECK CONSTRAINT [FK_attributeTBL_attributeTypeId]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTypeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTypeTBL.sql
deleted file mode 100644
index 39a87b055..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/AttributeTypeTBL.sql
+++ /dev/null
@@ -1,18 +0,0 @@
-CREATE TABLE [elfh].[attributeTypeTBL](
- [attributeTypeId] [int] NOT NULL,
- [attributeTypeName] [nvarchar](50) NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_attributeTypeTBL] PRIMARY KEY CLUSTERED
-(
- [attributeTypeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[attributeTypeTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[attributeTypeTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/CountryTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/CountryTBL.sql
deleted file mode 100644
index 2adf7cc35..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/CountryTBL.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-CREATE TABLE [elfh].[countryTBL](
- [countryId] [int] IDENTITY(1,1) NOT NULL,
- [countryName] [nvarchar](50) NULL,
- [alpha2] [nvarchar](2) NULL,
- [alpha3] [nvarchar](3) NULL,
- [numeric] [nvarchar](3) NULL,
- [EUVatRate] [float] NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_countryTBL] PRIMARY KEY CLUSTERED
-(
- [countryId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[countryTBL] ADD DEFAULT ((0)) FOR [EUVatRate]
-GO
-
-ALTER TABLE [elfh].[countryTBL] ADD CONSTRAINT [DF_countryTBL_displayOrder] DEFAULT ((0)) FOR [displayOrder]
-GO
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/DeaneryTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/DeaneryTBL.sql
deleted file mode 100644
index bc2f91bef..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/DeaneryTBL.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE TABLE [elfh].[deaneryTBL](
- [deaneryId] [int] IDENTITY(1,1) NOT NULL,
- [deaneryName] [nvarchar](50) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_deaneryTBL] PRIMARY KEY CLUSTERED
-(
- [deaneryId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTBL.sql
deleted file mode 100644
index 18210ed54..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTBL.sql
+++ /dev/null
@@ -1,30 +0,0 @@
-CREATE TABLE [elfh].[emailTemplateTBL](
- [emailTemplateId] [int] IDENTITY(1,1) NOT NULL,
- [emailTemplateTypeId] [int] NOT NULL,
- [programmeComponentId] [int] NOT NULL,
- [title] [nvarchar](256) NULL,
- [subject] [nvarchar](256) NOT NULL,
- [body] [ntext] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- [tenantId] [int] NULL,
- CONSTRAINT [PK_EmailTemplateTBL] PRIMARY KEY CLUSTERED
-(
- [emailTemplateId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[emailTemplateTBL] ADD CONSTRAINT [DF_emailTemplateTBL_Deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[emailTemplateTBL] ADD CONSTRAINT [DF_EmailTemplate_AmendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[emailTemplateTBL] WITH CHECK ADD CONSTRAINT [FK_emailTemplateTBL_emailTemplateTypeTBL] FOREIGN KEY([emailTemplateTypeId])
-REFERENCES [elfh].[emailTemplateTypeTBL] ([emailTemplateTypeId])
-GO
-
-ALTER TABLE [elfh].[emailTemplateTBL] CHECK CONSTRAINT [FK_emailTemplateTBL_emailTemplateTypeTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTypeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTypeTBL.sql
deleted file mode 100644
index d3b4764b8..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmailTemplateTypeTBL.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-CREATE TABLE [elfh].[emailTemplateTypeTBL](
- [emailTemplateTypeId] [int] NOT NULL,
- [emailTemplateTypeName] [nvarchar](50) NOT NULL,
- [availableTags] [nvarchar](255) NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_emailTemplateTypeTBL] PRIMARY KEY CLUSTERED
-(
- [emailTemplateTypeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[emailTemplateTypeTBL] ADD CONSTRAINT [DF_emailTemplateTypeTBL_Deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[emailTemplateTypeTBL] ADD CONSTRAINT [DF_emailTemplateTypeTBL_AmendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmploymentReferenceTypeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmploymentReferenceTypeTBL.sql
deleted file mode 100644
index be4a54abb..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/EmploymentReferenceTypeTBL.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE TABLE [elfh].[employmentReferenceTypeTBL](
- [EmploymentReferenceTypeId] [int] NOT NULL,
- [Title] [nvarchar](50) NOT NULL,
- [RefAccess] [int] NOT NULL,
- CONSTRAINT [PK_EmploymentReferenceType] PRIMARY KEY CLUSTERED
-(
- [EmploymentReferenceTypeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[employmentReferenceTypeTBL] ADD CONSTRAINT [DF_employmentReferenceTypeTBL_RefAccess] DEFAULT ((0)) FOR [RefAccess]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GdcRegister.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GdcRegister.sql
deleted file mode 100644
index 560d58995..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GdcRegister.sql
+++ /dev/null
@@ -1,36 +0,0 @@
-CREATE TABLE [elfh].[gdcRegisterTBL](
- [reg_number] [nvarchar](50) NOT NULL,
- [Dentist] [bit] NOT NULL,
- [Title] [nvarchar](50) NULL,
- [Surname] [nvarchar](255) NULL,
- [Forenames] [nvarchar](255) NULL,
- [honorifics] [nvarchar](50) NULL,
- [house_name] [nvarchar](255) NULL,
- [address_line1] [nvarchar](255) NULL,
- [address_line2] [nvarchar](255) NULL,
- [address_line3] [nvarchar](255) NULL,
- [address_line4] [nvarchar](255) NULL,
- [Town] [nvarchar](50) NULL,
- [County] [nvarchar](50) NULL,
- [PostCode] [nvarchar](50) NULL,
- [Country] [nvarchar](50) NULL,
- [regdate] [nvarchar](50) NULL,
- [qualifications] [nvarchar](1000) NULL,
- [dcp_titles] [nvarchar](100) NULL,
- [specialties] [nvarchar](100) NULL,
- [condition] [nvarchar](50) NULL,
- [suspension] [nvarchar](50) NULL,
- [dateProcessed] [datetimeoffset](7) NOT NULL,
- [action] [nvarchar](1) NULL,
- CONSTRAINT [PK_gdcRegisterTBL] PRIMARY KEY CLUSTERED
-(
- [reg_number] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[gdcRegisterTBL] ADD DEFAULT ((0)) FOR [Dentist]
-GO
-
-ALTER TABLE [elfh].[gdcRegisterTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [dateProcessed]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GmcLrmp.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GmcLrmp.sql
deleted file mode 100644
index 7d66d14c4..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GmcLrmp.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-CREATE TABLE [elfh].[gmclrmpTBL](
- [GMC_Ref_No] [nvarchar](50) NOT NULL,
- [Surname] [nvarchar](255) NULL,
- [Given_Name] [nvarchar](255) NULL,
- [Year_Of_Qualification] [float] NULL,
- [GP_Register_Date] [nvarchar](255) NULL,
- [Registration_Status] [nvarchar](255) NULL,
- [Other_Names] [nvarchar](255) NULL,
- [dateProcessed] [datetime] NULL,
- [action] [nchar](1) NULL,
- CONSTRAINT [PK_gmclrmpTBL] PRIMARY KEY CLUSTERED
-(
- [GMC_Ref_No] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GradeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GradeTBL.sql
deleted file mode 100644
index c9f7c47df..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/GradeTBL.sql
+++ /dev/null
@@ -1,20 +0,0 @@
-CREATE TABLE [elfh].[gradeTBL](
- [gradeId] [int] IDENTITY(1,1) NOT NULL,
- [gradeName] [nvarchar](50) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_gradeTBL] PRIMARY KEY CLUSTERED
-(
- [gradeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[gradeTBL] ADD CONSTRAINT [DF_gradeTBL_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[gradeTBL] ADD CONSTRAINT [DF_gradeTBL_amendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/IpCountryLookupTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/IpCountryLookupTBL.sql
deleted file mode 100644
index d5bc7f13b..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/IpCountryLookupTBL.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-CREATE TABLE [elfh].[ipCountryLookupTBL](
- [fromIP] [varchar](20) NOT NULL,
- [toIP] [varchar](20) NOT NULL,
- [country] [varchar](10) NOT NULL,
- [fromInt] [bigint] NULL,
- [toInt] [bigint] NULL
-) ON [PRIMARY]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/JobRoleTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/JobRoleTBL.sql
deleted file mode 100644
index 7bb035683..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/JobRoleTBL.sql
+++ /dev/null
@@ -1,35 +0,0 @@
-CREATE TABLE [elfh].[jobRoleTBL](
- [jobRoleId] [int] IDENTITY(1,1) NOT NULL,
- [staffGroupId] [int] NULL,
- [jobRoleName] [nvarchar](100) NOT NULL,
- [medicalCouncilId] [int] NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_jobRoleTBL] PRIMARY KEY CLUSTERED
-(
- [jobRoleId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] ADD CONSTRAINT [DF_jobRoleTBL_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] ADD CONSTRAINT [DF_jobRoleTBL_amendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] WITH CHECK ADD CONSTRAINT [FK_jobRoleTBL_medicalCouncilTBL] FOREIGN KEY([medicalCouncilId])
-REFERENCES [elfh].[medicalCouncilTBL] ([medicalCouncilId])
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] CHECK CONSTRAINT [FK_jobRoleTBL_medicalCouncilTBL]
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] WITH CHECK ADD CONSTRAINT [FK_jobRoleTBL_staffGroupTBL] FOREIGN KEY([staffGroupId])
-REFERENCES [elfh].[staffGroupTBL] ([staffGroupId])
-GO
-
-ALTER TABLE [elfh].[jobRoleTBL] CHECK CONSTRAINT [FK_jobRoleTBL_staffGroupTBL]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/Location.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/Location.sql
deleted file mode 100644
index 54a0bac86..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/Location.sql
+++ /dev/null
@@ -1,117 +0,0 @@
-
-CREATE TABLE [elfh].[locationTBL](
- [locationId] [int] NOT NULL,
- [locationCode] [nvarchar](50) NOT NULL,
- [locationName] [nvarchar](200) NOT NULL,
- [locationSubName] [nvarchar](200) NULL,
- [locationTypeId] [int] NOT NULL,
- [address1] [nvarchar](100) NULL,
- [address2] [nvarchar](100) NULL,
- [address3] [nvarchar](100) NULL,
- [address4] [nvarchar](100) NULL,
- [town] [nvarchar](100) NULL,
- [county] [nvarchar](100) NULL,
- [postCode] [nvarchar](8) NULL,
- [telephone] [nvarchar](50) NULL,
- [acute] [bit] NOT NULL,
- [ambulance] [bit] NOT NULL,
- [mental] [bit] NOT NULL,
- [care] [bit] NOT NULL,
- [mainHosp] [bit] NOT NULL,
- [nhsCode] [nvarchar](50) NULL,
- [parentId] [int] NOT NULL,
- [dataSource] [nvarchar](50) NOT NULL,
- [active] [bit] NOT NULL,
- [importExclusion] [bit] NOT NULL,
- [depth] [int] NULL,
- [lineage] [nvarchar](max) NULL,
- [created] [datetimeoffset](7) NOT NULL,
- [updated] [datetimeoffset](7) NOT NULL,
- [archivedDate] [datetimeoffset](7) NULL,
- [countryId] [int] NULL,
- [iguId] [int] NOT NULL,
- [letbId] [int] NOT NULL,
- [ccgId] [int] NOT NULL,
- [healthServiceId] [int] NOT NULL,
- [healthBoardId] [int] NOT NULL,
- [primaryTrustId] [int] NOT NULL,
- [secondaryTrustId] [int] NOT NULL,
- [islandId] [int] NOT NULL,
- [otherNHSOrganisationId] [int] NOT NULL,
- CONSTRAINT [PK_locationTBL] PRIMARY KEY CLUSTERED
-(
- [locationId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [locationTypeId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_Acute] DEFAULT ((0)) FOR [acute]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_Ambulance] DEFAULT ((0)) FOR [ambulance]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_Mental] DEFAULT ((0)) FOR [mental]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_Care] DEFAULT ((0)) FOR [care]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_MainHosp] DEFAULT ((0)) FOR [mainHosp]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_Active] DEFAULT ((1)) FOR [active]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_ImportExclusion] DEFAULT ((0)) FOR [importExclusion]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_created] DEFAULT (sysdatetimeoffset()) FOR [created]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD CONSTRAINT [DF_locationTBL_updated] DEFAULT (sysdatetimeoffset()) FOR [updated]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [iguId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [letbId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [ccgId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [healthServiceId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [healthBoardId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [primaryTrustId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [secondaryTrustId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [islandId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] ADD DEFAULT ((0)) FOR [otherNHSOrganisationId]
-GO
-
-ALTER TABLE [elfh].[locationTBL] WITH CHECK ADD CONSTRAINT [FK_locationTBL_countryTBL] FOREIGN KEY([countryId])
-REFERENCES [elfh].[countryTBL] ([countryId])
-GO
-
-ALTER TABLE [elfh].[locationTBL] CHECK CONSTRAINT [FK_locationTBL_countryTBL]
-GO
-
-ALTER TABLE [elfh].[locationTBL] WITH CHECK ADD CONSTRAINT [FK_locationTBL_locationTypeTBL] FOREIGN KEY([locationTypeId])
-REFERENCES [elfh].[locationTypeTBL] ([locationTypeID])
-GO
-
-ALTER TABLE [elfh].[locationTBL] CHECK CONSTRAINT [FK_locationTBL_locationTypeTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardRuleTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardRuleTBL.sql
deleted file mode 100644
index 536df2f89..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardRuleTBL.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-CREATE TABLE [elfh].[loginWizardRuleTBL](
- [loginWizardRuleId] [int] NOT NULL,
- [loginWizardStageId] [int] NOT NULL,
- [loginWizardRuleCategoryId] [int] NOT NULL,
- [description] [nvarchar](128) NOT NULL,
- [reasonDisplayText] [nvarchar](1024) NOT NULL,
- [activationPeriod] [int] NULL,
- [required] [bit] NOT NULL,
- [active] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_loginWizardRule] PRIMARY KEY CLUSTERED
-(
- [loginWizardRuleId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[loginWizardRuleTBL] WITH CHECK ADD CONSTRAINT [FK_loginWizardRuleTBL_loginWizardStageTBL] FOREIGN KEY([loginWizardStageId])
-REFERENCES [elfh].[loginWizardStageTBL] ([loginWizardStageId])
-GO
-
-ALTER TABLE [elfh].[loginWizardRuleTBL] CHECK CONSTRAINT [FK_loginWizardRuleTBL_loginWizardStageTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardStageActivityTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardStageActivityTBL.sql
deleted file mode 100644
index 5c8a60fc2..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/LoginWizardStageActivityTBL.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-CREATE TABLE [elfh].[loginWizardStageActivityTBL](
- [loginWizardStageActivityId] [int] IDENTITY(1,1) NOT NULL,
- [loginWizardStageId] [int] NOT NULL,
- [userId] [int] NOT NULL,
- [activityDatetime] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_loginWizardStageActivityTBL] PRIMARY KEY CLUSTERED
-(
- [loginWizardStageActivityId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[loginWizardStageActivityTBL] WITH CHECK ADD CONSTRAINT [FK_loginWizardStageActivityTBL_loginWizardStageTBL] FOREIGN KEY([loginWizardStageId])
-REFERENCES [elfh].[loginWizardStageTBL] ([loginWizardStageId])
-GO
-
-ALTER TABLE [elfh].[loginWizardStageActivityTBL] CHECK CONSTRAINT [FK_loginWizardStageActivityTBL_loginWizardStageTBL]
-GO
-
-ALTER TABLE [elfh].[loginWizardStageActivityTBL] WITH CHECK ADD CONSTRAINT [FK_loginWizardStageActivityTBL_userTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[loginWizardStageActivityTBL] CHECK CONSTRAINT [FK_loginWizardStageActivityTBL_userTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MedicalCouncilTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MedicalCouncilTBL.sql
deleted file mode 100644
index 1eee676b8..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MedicalCouncilTBL.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-CREATE TABLE [elfh].[medicalCouncilTBL](
- [medicalCouncilId] [int] NOT NULL,
- [medicalCouncilName] [nvarchar](50) NOT NULL,
- [medicalCouncilCode] [nvarchar](50) NOT NULL,
- [uploadPrefix] [nvarchar](3) NOT NULL,
- [includeOnCerts] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_medicalCouncilTBL] PRIMARY KEY CLUSTERED
-(
- [medicalCouncilId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[medicalCouncilTBL] ADD CONSTRAINT [DF_medicalCouncilTBL_includeOnCerts] DEFAULT ((0)) FOR [includeOnCerts]
-GO
-
-ALTER TABLE [elfh].[medicalCouncilTBL] ADD CONSTRAINT [DF_medicalCouncilTBL_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[medicalCouncilTBL] ADD CONSTRAINT [DF_medicalCouncilTBL_amendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MergeUserTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MergeUserTBL.sql
deleted file mode 100644
index 510244acb..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/MergeUserTBL.sql
+++ /dev/null
@@ -1,12 +0,0 @@
-CREATE TABLE [elfh].[mergeUserTBL](
- [mergeUserId] [int] IDENTITY(1,1) NOT NULL,
- [fromUserId] [int] NOT NULL,
- [intoUserId] [int] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [createdDatetime] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_mergeUserTBL] PRIMARY KEY CLUSTERED
-(
- [mergeUserId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/RegionTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/RegionTBL.sql
deleted file mode 100644
index e3de79cde..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/RegionTBL.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-CREATE TABLE [elfh].[regionTBL](
- [regionId] [int] NOT NULL,
- [regionName] [nvarchar](100) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_regionTbl] PRIMARY KEY CLUSTERED
-(
- [regionId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[regionTBL] ADD CONSTRAINT [DF_regionTbl_deleted] DEFAULT ((0)) FOR [deleted]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SchoolTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SchoolTBL.sql
deleted file mode 100644
index b0ef70ea2..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SchoolTBL.sql
+++ /dev/null
@@ -1,29 +0,0 @@
-CREATE TABLE [elfh].[schoolTBL](
- [schoolId] [int] IDENTITY(1,1) NOT NULL,
- [deaneryId] [int] NOT NULL,
- [specialtyId] [int] NOT NULL,
- [schoolName] [nvarchar](50) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_schoolTBL] PRIMARY KEY CLUSTERED
-(
- [schoolId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[schoolTBL] WITH CHECK ADD CONSTRAINT [FK_schoolTBL_deaneryTBL] FOREIGN KEY([deaneryId])
-REFERENCES [elfh].[deaneryTBL] ([deaneryId])
-GO
-
-ALTER TABLE [elfh].[schoolTBL] CHECK CONSTRAINT [FK_schoolTBL_deaneryTBL]
-GO
-
-ALTER TABLE [elfh].[schoolTBL] WITH CHECK ADD CONSTRAINT [FK_schoolTBL_specialtyTBL] FOREIGN KEY([specialtyId])
-REFERENCES [elfh].[specialtyTBL] ([specialtyId])
-GO
-
-ALTER TABLE [elfh].[schoolTBL] CHECK CONSTRAINT [FK_schoolTBL_specialtyTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SpecialtyTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SpecialtyTBL.sql
deleted file mode 100644
index dd2fcf677..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SpecialtyTBL.sql
+++ /dev/null
@@ -1,19 +0,0 @@
-CREATE TABLE [elfh].[specialtyTBL](
- [specialtyId] [int] IDENTITY(1,1) NOT NULL,
- [specialtyName] [nvarchar](50) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_specialtyTBL] PRIMARY KEY CLUSTERED
-(
- [specialtyId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[specialtyTBL] ADD CONSTRAINT [DF_specialty_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[specialtyTBL] ADD CONSTRAINT [DF_specialtyTBL_amendDate] DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/StaffGroupTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/StaffGroupTBL.sql
deleted file mode 100644
index e2ffb9bf0..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/StaffGroupTBL.sql
+++ /dev/null
@@ -1,17 +0,0 @@
-CREATE TABLE [elfh].[staffGroupTBL](
- [staffGroupId] [int] IDENTITY(1,1) NOT NULL,
- [staffGroupName] [nvarchar](50) NOT NULL,
- [displayOrder] [int] NOT NULL,
- [internalUsersOnly] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_staffGroupTBL] PRIMARY KEY CLUSTERED
-(
- [staffGroupId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[staffGroupTBL] ADD CONSTRAINT [DF_staffGroupTBL_internalUsersOnly] DEFAULT ((0)) FOR [internalUsersOnly]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SystemSettingTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SystemSettingTBL.sql
deleted file mode 100644
index 8ead0a47c..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/SystemSettingTBL.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-CREATE TABLE [elfh].[systemSettingTBL](
- [systemSettingId] [int] NOT NULL,
- [systemSettingName] [nvarchar](50) NOT NULL,
- [intValue] [int] NULL,
- [textValue] [nvarchar](255) NULL,
- [booleanValue] [bit] NULL,
- [dateValue] [datetimeoffset](7) NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_systemSettingsTBL] PRIMARY KEY CLUSTERED
-(
- [systemSettingId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[systemSettingTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[systemSettingTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantSmtpTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantSmtpTBL.sql
deleted file mode 100644
index 390c1a123..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantSmtpTBL.sql
+++ /dev/null
@@ -1,16 +0,0 @@
-CREATE TABLE [elfh].[tenantSmtpTBL](
- [tenantId] [int] NOT NULL,
- [deliveryMethod] [nvarchar](128) NOT NULL,
- [pickupDirectoryLocation] [nvarchar](256) NULL,
- [from] [nvarchar](256) NULL,
- [userName] [nvarchar](256) NULL,
- [password] [nvarchar](256) NULL,
- [enableSsl] [bit] NULL,
- [host] [nvarchar](256) NULL,
- [port] [int] NULL,
- [active] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL
-) ON [PRIMARY]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantTBL.sql
deleted file mode 100644
index 47fb44f17..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantTBL.sql
+++ /dev/null
@@ -1,43 +0,0 @@
-CREATE TABLE [elfh].[tenantTBL](
- [tenantId] [int] NOT NULL,
- [tenantCode] [nvarchar](20) NOT NULL,
- [tenantName] [nvarchar](64) NOT NULL,
- [tenantDescription] [nvarchar](1024) NOT NULL,
- [showFullCatalogInfoMessageInd] [bit] NOT NULL,
- [catalogUrl] [nvarchar](256) NOT NULL,
- [quickStartGuideUrl] [nvarchar](1024) NULL,
- [supportFormUrl] [nvarchar](1024) NULL,
- [liveChatStatus] [int] NOT NULL,
- [liveChatSnippet] [nvarchar](2048) NULL,
- [myElearningDefaultView] [int] NOT NULL,
- [preLoginCatalogueDefaultView] [int] NOT NULL,
- [postLoginCatalogueDefaultView] [int] NOT NULL,
- [authSignInUrlRelative] [nvarchar](1024) NULL,
- [authSignOutUrlRelative] [nvarchar](1024) NULL,
- [authSecret] [uniqueidentifier] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_tenantTBL] PRIMARY KEY CLUSTERED
-(
- [tenantId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[tenantTBL] ADD DEFAULT ((0)) FOR [liveChatStatus]
-GO
-
-ALTER TABLE [elfh].[tenantTBL] ADD DEFAULT ((0)) FOR [myElearningDefaultView]
-GO
-
-ALTER TABLE [elfh].[tenantTBL] ADD DEFAULT ((0)) FOR [preLoginCatalogueDefaultView]
-GO
-
-ALTER TABLE [elfh].[tenantTBL] ADD DEFAULT ((0)) FOR [postLoginCatalogueDefaultView]
-GO
-
-ALTER TABLE [elfh].[tenantTBL] ADD DEFAULT (newid()) FOR [authSecret]
-GO
-
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantUrlTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantUrlTBL.sql
deleted file mode 100644
index f1698eafa..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TenantUrlTBL.sql
+++ /dev/null
@@ -1,24 +0,0 @@
-CREATE TABLE [elfh].[tenantUrlTBL](
- [tenantUrlId] [int] IDENTITY(1,1) NOT NULL,
- [tenantId] [int] NOT NULL,
- [urlHostName] [nvarchar](128) NOT NULL,
- [useHostForAuth] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_tenantUrlTBL] PRIMARY KEY CLUSTERED
-(
- [tenantUrlId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[tenantUrlTBL] ADD DEFAULT ((0)) FOR [useHostForAuth]
-GO
-
-ALTER TABLE [elfh].[tenantUrlTBL] WITH CHECK ADD CONSTRAINT [FK_tenantUrlTBL_tenantTBL] FOREIGN KEY([tenantId])
-REFERENCES [elfh].[tenantTBL] ([tenantId])
-GO
-
-ALTER TABLE [elfh].[tenantUrlTBL] CHECK CONSTRAINT [FK_tenantUrlTBL_tenantTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TermsAndConditionsTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TermsAndConditionsTBL.sql
deleted file mode 100644
index c2e581994..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/TermsAndConditionsTBL.sql
+++ /dev/null
@@ -1,27 +0,0 @@
-CREATE TABLE [elfh].[termsAndConditionsTBL](
- [termsAndConditionsId] [int] IDENTITY(1,1) NOT NULL,
- [createdDate] [datetimeoffset](7) NOT NULL,
- [description] [nvarchar](512) NOT NULL,
- [details] [ntext] NOT NULL,
- [tenantId] [int] NOT NULL,
- [active] [bit] NOT NULL,
- [reportable] [bit] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_termsAndConditions] PRIMARY KEY CLUSTERED
-(
- [termsAndConditionsId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[termsAndConditionsTBL] ADD DEFAULT ((1)) FOR [reportable]
-GO
-
-ALTER TABLE [elfh].[termsAndConditionsTBL] WITH CHECK ADD CONSTRAINT [FK_termsAndConditionsTBL_tenantTBL] FOREIGN KEY([tenantId])
-REFERENCES [elfh].[tenantTBL] ([tenantId])
-GO
-
-ALTER TABLE [elfh].[termsAndConditionsTBL] CHECK CONSTRAINT [FK_termsAndConditionsTBL_tenantTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAdminLocationTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAdminLocationTBL.sql
deleted file mode 100644
index 4c88913e6..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAdminLocationTBL.sql
+++ /dev/null
@@ -1,42 +0,0 @@
-
-CREATE TABLE [elfh].[userAdminLocationTBL](
- [userId] [int] NOT NULL,
- [adminLocationId] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- [createdUserId] [int] NOT NULL,
- [createdDate] [datetimeoffset](7) NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [adminLocationId] ASC,
- [userId] ASC,
- [deleted] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [createdDate]
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] WITH CHECK ADD CONSTRAINT [FK_userAdminLocationTBL_locationTBL] FOREIGN KEY([adminLocationId])
-REFERENCES [elfh].[locationTBL] ([locationId])
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] CHECK CONSTRAINT [FK_userAdminLocationTBL_locationTBL]
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] WITH CHECK ADD CONSTRAINT [FK_userAdminLocationTBL_userTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[user] ([Id])
-GO
-
-ALTER TABLE [elfh].[userAdminLocationTBL] CHECK CONSTRAINT [FK_userAdminLocationTBL_userTBL]
-GO
-
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAttributeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAttributeTBL.sql
deleted file mode 100644
index bf9969af6..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserAttributeTBL.sql
+++ /dev/null
@@ -1,37 +0,0 @@
-CREATE TABLE [elfh].[userAttributeTBL](
- [userAttributeId] [int] IDENTITY(1,1) NOT NULL,
- [userId] [int] NOT NULL,
- [attributeId] [int] NOT NULL,
- [intValue] [int] NULL,
- [textValue] [nvarchar](255) NULL,
- [booleanValue] [bit] NULL,
- [dateValue] [datetimeoffset](7) NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userAttributeTBL] PRIMARY KEY CLUSTERED
-(
- [userAttributeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] WITH CHECK ADD CONSTRAINT [FK_userAttributeTBL_attributeId] FOREIGN KEY([attributeId])
-REFERENCES [elfh].[attributeTBL] ([attributeId])
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] CHECK CONSTRAINT [FK_userAttributeTBL_attributeId]
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] WITH CHECK ADD CONSTRAINT [FK_userAttributeTBL_userId] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userAttributeTBL] CHECK CONSTRAINT [FK_userAttributeTBL_userId]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentReferenceTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentReferenceTBL.sql
deleted file mode 100644
index 66bc74d7f..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentReferenceTBL.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-CREATE TABLE [elfh].[userEmploymentReferenceTBL](
- [userEmploymentReferenceId] [int] IDENTITY(1,1) NOT NULL,
- [employmentReferenceTypeId] [int] NOT NULL,
- [userEmploymentId] [int] NOT NULL,
- [referenceValue] [nvarchar](100) NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userEmploymentReferenceTBL] PRIMARY KEY CLUSTERED
-(
- [userEmploymentReferenceId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userEmploymentReferenceTBL] ADD CONSTRAINT [DF_userEmploymentReferenceTBL_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[userEmploymentReferenceTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentReferenceTBL_employmentReferenceTypeTBL] FOREIGN KEY([employmentReferenceTypeId])
-REFERENCES [elfh].[employmentReferenceTypeTBL] ([EmploymentReferenceTypeId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentReferenceTBL] CHECK CONSTRAINT [FK_userEmploymentReferenceTBL_employmentReferenceTypeTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentReferenceTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentReferenceTBL_userEmploymentTBL] FOREIGN KEY([userEmploymentId])
-REFERENCES [elfh].[userEmploymentTBL] ([userEmploymentId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentReferenceTBL] CHECK CONSTRAINT [FK_userEmploymentReferenceTBL_userEmploymentTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentResponsibilityTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentResponsibilityTBL.sql
deleted file mode 100644
index 546aead55..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentResponsibilityTBL.sql
+++ /dev/null
@@ -1,15 +0,0 @@
-CREATE TABLE [elfh].[userEmploymentResponsibilityTBL](
- [userEmploymentResponsibilityId] [int] IDENTITY(1,1) NOT NULL,
- [userEmploymentId] [int] NOT NULL,
- [additionalResponsibilityId] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [userEmploymentResponsibilityId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userEmploymentResponsibilityTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentTBL.sql
deleted file mode 100644
index f43db0eec..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserEmploymentTBL.sql
+++ /dev/null
@@ -1,85 +0,0 @@
-
-CREATE TABLE [elfh].[userEmploymentTBL](
- [userEmploymentId] [int] IDENTITY(1,1) NOT NULL,
- [userId] [int] NOT NULL,
- [jobRoleId] [int] NULL,
- [specialtyId] [int] NULL,
- [gradeId] [int] NULL,
- [schoolId] [int] NULL,
- [locationId] [int] NOT NULL,
- [medicalCouncilId] [int] NULL,
- [medicalCouncilNo] [nvarchar](50) NULL,
- [startDate] [datetimeoffset](7) NULL,
- [endDate] [datetimeoffset](7) NULL,
- [deleted] [bit] NOT NULL,
- [archived] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userEmploymentTBL] PRIMARY KEY CLUSTERED
-(
- [userEmploymentId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] ADD CONSTRAINT [DF_userEmploymentTBL_deleted] DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] ADD CONSTRAINT [DF_userEmploymentTBL_archived] DEFAULT ((0)) FOR [archived]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_gradeTBL] FOREIGN KEY([gradeId])
-REFERENCES [elfh].[gradeTBL] ([gradeId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_gradeTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_jobRoleTBL] FOREIGN KEY([jobRoleId])
-REFERENCES [elfh].[jobRoleTBL] ([jobRoleId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_jobRoleTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_locationTBL] FOREIGN KEY([locationId])
-REFERENCES [elfh].[locationTBL] ([locationId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_locationTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_medicalCouncilTBL] FOREIGN KEY([medicalCouncilId])
-REFERENCES [elfh].[medicalCouncilTBL] ([medicalCouncilId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_medicalCouncilTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_schoolTBL] FOREIGN KEY([schoolId])
-REFERENCES [elfh].[schoolTBL] ([schoolId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_schoolTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_specialtyTBL] FOREIGN KEY([specialtyId])
-REFERENCES [elfh].[specialtyTBL] ([specialtyId])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_specialtyTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_userTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_userTBL]
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] WITH CHECK ADD CONSTRAINT [FK_userEmploymentTBL_userTBL_AmendUser] FOREIGN KEY([amendUserId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userEmploymentTBL] CHECK CONSTRAINT [FK_userEmploymentTBL_userTBL_AmendUser]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupReporterTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupReporterTBL.sql
deleted file mode 100644
index 8794a0a64..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupReporterTBL.sql
+++ /dev/null
@@ -1,30 +0,0 @@
-CREATE TABLE [elfh].[userGroupReporterTBL](
- [userGroupReporterId] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
- [userId] [int] NOT NULL,
- [userGroupId] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userGroupReporterTBL] PRIMARY KEY CLUSTERED
-(
- [userGroupReporterId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userGroupReporterTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[userGroupReporterTBL] WITH CHECK ADD CONSTRAINT [FK_userGroupReporterTBL_userGroupTBL] FOREIGN KEY([userGroupId])
-REFERENCES [hub].[userGroup] ([Id])
-GO
-
-ALTER TABLE [elfh].[userGroupReporterTBL] CHECK CONSTRAINT [FK_userGroupReporterTBL_userGroupTBL]
-GO
-
-ALTER TABLE [elfh].[userGroupReporterTBL] WITH CHECK ADD CONSTRAINT [FK_userGroupReporterTBL_userTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[user] ([Id])
-GO
-
-ALTER TABLE [elfh].[userGroupReporterTBL] CHECK CONSTRAINT [FK_userGroupReporterTBL_userTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupTypeInputValidationTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupTypeInputValidationTBL.sql
deleted file mode 100644
index dc2fd76dd..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserGroupTypeInputValidationTBL.sql
+++ /dev/null
@@ -1,39 +0,0 @@
-CREATE TABLE [elfh].[userGroupTypeInputValidationTBL](
- [userGroupTypeInputValidationId] [int] IDENTITY(1,1) NOT NULL,
- [userGroupId] [int] NOT NULL,
- [userGroupTypePrefix] [nvarchar](10) NOT NULL,
- [userGroupTypeId] [int] NOT NULL,
- [validationTextValue] [nvarchar](1000) NOT NULL,
- [validationMethod] [int] NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- [createdUserId] [int] NOT NULL,
- [createdDate] [datetimeoffset](7) NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [userGroupTypeInputValidationId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],
- CONSTRAINT [UQ_userGroupTypeInputValidationTBL_userGroupId_validationTextValue] UNIQUE NONCLUSTERED
-(
- [userGroupId] ASC,
- [validationTextValue] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userGroupTypeInputValidationTBL] ADD DEFAULT (N'USR TYP:') FOR [userGroupTypePrefix]
-GO
-
-ALTER TABLE [elfh].[userGroupTypeInputValidationTBL] ADD DEFAULT ((0)) FOR [deleted]
-GO
-
-ALTER TABLE [elfh].[userGroupTypeInputValidationTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [amendDate]
-GO
-
-ALTER TABLE [elfh].[userGroupTypeInputValidationTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [createdDate]
-GO
-
-ALTER TABLE [elfh].[userGroupTypeInputValidationTBL] WITH CHECK ADD CONSTRAINT [FK_userGroupTypeInputValidationTBL_amendUserTBL] FOREIGN KEY([amendUserId])
-REFERENCES [hub].[User] ([Id])
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserHistoryTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserHistoryTBL.sql
deleted file mode 100644
index 12a25fc81..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserHistoryTBL.sql
+++ /dev/null
@@ -1,25 +0,0 @@
-CREATE TABLE [elfh].[userHistoryTBL](
- [userHistoryId] [int] IDENTITY(1,1) NOT NULL,
- [userHistoryTypeId] [int] NOT NULL,
- [userId] [int] NOT NULL,
- [createdDate] [datetimeoffset](7) NOT NULL,
- [tenantId] [int] NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [userHistoryId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userHistoryTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [createdDate]
-GO
-
-ALTER TABLE [elfh].[userHistoryTBL] ADD DEFAULT ((0)) FOR [tenantId]
-GO
-
-ALTER TABLE [elfh].[userHistoryTBL] WITH CHECK ADD CONSTRAINT [FK_userHistoryTBL_userHistoryTypeTBL] FOREIGN KEY([userHistoryTypeId])
-REFERENCES [elfh].[userHistoryTypeTBL] ([UserHistoryTypeId])
-GO
-
-ALTER TABLE [elfh].[userHistoryTBL] CHECK CONSTRAINT [FK_userHistoryTBL_userHistoryTypeTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserPasswordValidationTokenTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserPasswordValidationTokenTBL.sql
deleted file mode 100644
index 7beed21ce..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserPasswordValidationTokenTBL.sql
+++ /dev/null
@@ -1,33 +0,0 @@
-CREATE TABLE [elfh].[userPasswordValidationTokenTBL](
- [userPasswordValidationTokenId] [int] IDENTITY(1,1) NOT NULL,
- [hashedToken] [nvarchar](128) NOT NULL,
- [salt] [nvarchar](128) NOT NULL,
- [lookup] [nvarchar](128) NOT NULL,
- [expiry] [datetimeoffset](7) NOT NULL,
- [tenantId] [int] NOT NULL,
- [userId] [int] NOT NULL,
- [createdUserId] [int] NOT NULL,
- [createdDate] [datetimeoffset](7) NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [userPasswordValidationTokenId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userPasswordValidationTokenTBL] ADD DEFAULT (sysdatetimeoffset()) FOR [createdDate]
-GO
-
-ALTER TABLE [elfh].[userPasswordValidationTokenTBL] WITH CHECK ADD CONSTRAINT [FK_userPasswordValidationTokenTBL_tenantTBL] FOREIGN KEY([tenantId])
-REFERENCES [elfh].[tenantTBL] ([tenantId])
-GO
-
-ALTER TABLE [elfh].[userPasswordValidationTokenTBL] CHECK CONSTRAINT [FK_userPasswordValidationTokenTBL_tenantTBL]
-GO
-
-ALTER TABLE [elfh].[userPasswordValidationTokenTBL] WITH CHECK ADD CONSTRAINT [FK_userPasswordValidationTokenTBL_userTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userPasswordValidationTokenTBL] CHECK CONSTRAINT [FK_userPasswordValidationTokenTBL_userTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserReportingUserTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserReportingUserTBL.sql
deleted file mode 100644
index a96df3713..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserReportingUserTBL.sql
+++ /dev/null
@@ -1,31 +0,0 @@
-CREATE TABLE [elfh].[userReportingUserTBL](
- [userReportingUserId] [int] IDENTITY(1,1) NOT NULL,
- [userId] [int] NOT NULL,
- [reportingUserId] [int] NOT NULL,
- [reportable] [bit] NOT NULL,
- [Deleted] [bit] NOT NULL,
- [AmendUserID] [int] NOT NULL,
- [AmendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userReportingUser] PRIMARY KEY CLUSTERED
-(
- [userReportingUserId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userReportingUserTBL] ADD DEFAULT ((1)) FOR [reportable]
-GO
-
-ALTER TABLE [elfh].[userReportingUserTBL] WITH CHECK ADD CONSTRAINT [FK_userReportingUser_reportingUser] FOREIGN KEY([reportingUserId])
-REFERENCES [hub].[user] ([Id])
-GO
-
-ALTER TABLE [elfh].[userReportingUserTBL] CHECK CONSTRAINT [FK_userReportingUser_reportingUser]
-GO
-
-ALTER TABLE [elfh].[userReportingUserTBL] WITH CHECK ADD CONSTRAINT [FK_userReportingUser_user] FOREIGN KEY([userId])
-REFERENCES [hub].[user] ([Id])
-GO
-
-ALTER TABLE [elfh].[userReportingUserTBL] CHECK CONSTRAINT [FK_userReportingUser_user]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserRoleUpgradeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserRoleUpgradeTBL.sql
deleted file mode 100644
index c5f00d25d..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserRoleUpgradeTBL.sql
+++ /dev/null
@@ -1,35 +0,0 @@
-CREATE TABLE [elfh].[userRoleUpgradeTBL](
- [userRoleUpgradeId] [int] IDENTITY(1,1) NOT NULL,
- [userId] [int] NOT NULL,
- [emailAddress] [nvarchar](100) NOT NULL,
- [upgradeDate] [datetimeoffset](7) NULL,
- [deleted] [bit] NOT NULL,
- [createUserId] [int] NOT NULL,
- [createDate] [datetimeoffset](7) NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- [userHistoryTypeId] [int] NOT NULL,
- CONSTRAINT [PK_userRoleUpgrade] PRIMARY KEY CLUSTERED
-(
- [userRoleUpgradeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userRoleUpgradeTBL] ADD DEFAULT ((12)) FOR [userHistoryTypeId]
-GO
-
-ALTER TABLE [elfh].[userRoleUpgradeTBL] WITH CHECK ADD CONSTRAINT [FK_userRoleUpgradeTBL_userHistoryTypeTBL] FOREIGN KEY([userHistoryTypeId])
-REFERENCES [elfh].[userHistoryTypeTBL] ([UserHistoryTypeId])
-GO
-
-ALTER TABLE [elfh].[userRoleUpgradeTBL] CHECK CONSTRAINT [FK_userRoleUpgradeTBL_userHistoryTypeTBL]
-GO
-
-ALTER TABLE [elfh].[userRoleUpgradeTBL] WITH CHECK ADD CONSTRAINT [FK_userRoleUpgradeTbl_userTbl] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userRoleUpgradeTBL] CHECK CONSTRAINT [FK_userRoleUpgradeTbl_userTbl]
-GO
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserTermsAndConditionsTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserTermsAndConditionsTBL.sql
deleted file mode 100644
index 66e86902d..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/UserTermsAndConditionsTBL.sql
+++ /dev/null
@@ -1,28 +0,0 @@
-CREATE TABLE [elfh].[userTermsAndConditionsTBL](
- [userTermsAndConditionsId] [int] IDENTITY(1,1) NOT NULL,
- [termsAndConditionsId] [int] NOT NULL,
- [userId] [int] NOT NULL,
- [acceptanceDate] [datetimeoffset](7) NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserID] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_userTermsAndConditions] PRIMARY KEY CLUSTERED
-(
- [userTermsAndConditionsId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[userTermsAndConditionsTBL] WITH CHECK ADD CONSTRAINT [FK_userTermsAndConditionsTBL_portalUserTBL] FOREIGN KEY([userId])
-REFERENCES [hub].[User] ([Id])
-GO
-
-ALTER TABLE [elfh].[userTermsAndConditionsTBL] CHECK CONSTRAINT [FK_userTermsAndConditionsTBL_portalUserTBL]
-GO
-
-ALTER TABLE [elfh].[userTermsAndConditionsTBL] WITH CHECK ADD CONSTRAINT [FK_userTermsAndConditionsTBL_termsAndConditionsTBL] FOREIGN KEY([termsAndConditionsId])
-REFERENCES [elfh].[termsAndConditionsTBL] ([termsAndConditionsId])
-GO
-
-ALTER TABLE [elfh].[userTermsAndConditionsTBL] CHECK CONSTRAINT [FK_userTermsAndConditionsTBL_termsAndConditionsTBL]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/locationTypeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/locationTypeTBL.sql
deleted file mode 100644
index cf10e09b5..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/locationTypeTBL.sql
+++ /dev/null
@@ -1,34 +0,0 @@
-CREATE TABLE [elfh].[locationTypeTBL](
- [locationTypeID] [int] IDENTITY(1,1) NOT NULL,
- [locationType] [nvarchar](50) NOT NULL,
- [countryId] [int] NULL,
- [healthService] [bit] NOT NULL,
- [healthBoard] [bit] NOT NULL,
- [primaryTrust] [bit] NOT NULL,
- [secondaryTrust] [bit] NOT NULL,
- CONSTRAINT [PK_locationType] PRIMARY KEY CLUSTERED
-(
- [locationTypeID] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] ADD DEFAULT ((0)) FOR [healthService]
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] ADD DEFAULT ((0)) FOR [healthBoard]
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] ADD DEFAULT ((0)) FOR [primaryTrust]
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] ADD DEFAULT ((0)) FOR [secondaryTrust]
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] WITH CHECK ADD CONSTRAINT [FK_locationTypeTBL_countryTBL] FOREIGN KEY([countryId])
-REFERENCES [elfh].[countryTBL] ([countryId])
-GO
-
-ALTER TABLE [elfh].[locationTypeTBL] CHECK CONSTRAINT [FK_locationTypeTBL_countryTBL]
-GO
-
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/loginWizardStageTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/loginWizardStageTBL.sql
deleted file mode 100644
index ae704a35d..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/loginWizardStageTBL.sql
+++ /dev/null
@@ -1,13 +0,0 @@
-CREATE TABLE [elfh].[loginWizardStageTBL](
- [loginWizardStageId] [int] NOT NULL,
- [description] [nvarchar](128) NOT NULL,
- [reasonDisplayText] [nvarchar](1024) NOT NULL,
- [deleted] [bit] NOT NULL,
- [amendUserId] [int] NOT NULL,
- [amendDate] [datetimeoffset](7) NOT NULL,
- CONSTRAINT [PK_loginWizardStageTBL] PRIMARY KEY CLUSTERED
-(
- [loginWizardStageId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100) ON [PRIMARY]
-) ON [PRIMARY]
-GO
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/userHistoryTypeTBL.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/userHistoryTypeTBL.sql
deleted file mode 100644
index 95e58af92..000000000
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Elfh/userHistoryTypeTBL.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-CREATE TABLE [elfh].[userHistoryTypeTBL](
- [UserHistoryTypeId] [int] NOT NULL,
- [Description] [nvarchar](100) NOT NULL,
-PRIMARY KEY CLUSTERED
-(
- [UserHistoryTypeId] ASC
-)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 100, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
-) ON [PRIMARY]
-GO
\ No newline at end of file
diff --git a/WebAPI/LearningHub.Nhs.Database/Tables/Hub/User.sql b/WebAPI/LearningHub.Nhs.Database/Tables/Hub/User.sql
index 3af869df7..52bbb9802 100644
--- a/WebAPI/LearningHub.Nhs.Database/Tables/Hub/User.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Tables/Hub/User.sql
@@ -40,37 +40,6 @@ GO
ALTER TABLE [hub].[User] ADD DEFAULT (CONVERT([datetime2],'9999-12-31 23:59:59.9999999')) FOR [VersionEndTime]
GO
-
-ALTER TABLE [hub].[User] ADD CONSTRAINT [DF_userTBL_passwordLifeCounter] DEFAULT ((0)) FOR [passwordLifeCounter]
-GO
-
-ALTER TABLE [hub].[User] ADD CONSTRAINT [DF_userTBL_securityLifeCounter] DEFAULT ((0)) FOR [securityLifeCounter]
-GO
-
-ALTER TABLE [hub].[User] ADD CONSTRAINT [DF_userTBL_RestrictToSSO] DEFAULT ((0)) FOR [RestrictToSSO]
-GO
-
-ALTER TABLE [hub].[User] WITH CHECK ADD CONSTRAINT [FK_userTBL_countryTBL] FOREIGN KEY([countryId])
-REFERENCES [elfh].[countryTBL] ([countryId])
-GO
-
-ALTER TABLE [hub].[User] CHECK CONSTRAINT [FK_userTBL_countryTBL]
-GO
-
-ALTER TABLE [hub].[User] WITH CHECK ADD CONSTRAINT [FK_userTBL_regionTBL] FOREIGN KEY([regionId])
-REFERENCES [elfh].[regionTBL] ([regionId])
-GO
-
-ALTER TABLE [hub].[User] CHECK CONSTRAINT [FK_userTBL_regionTBL]
-GO
-
-ALTER TABLE [hub].[User] WITH CHECK ADD CONSTRAINT [FK_userTBL_userEmploymentTBL] FOREIGN KEY([primaryUserEmploymentId])
-REFERENCES [elfh].[userEmploymentTBL] ([userEmploymentId])
-GO
-
-ALTER TABLE [hub].[User] CHECK CONSTRAINT [FK_userTBL_userEmploymentTBL]
-GO
-
CREATE INDEX idx_User_Deleted ON hub.[User] (Deleted) include (UserName) WITH (FILLFACTOR = 95);
GO