Skip to content

Commit 816c511

Browse files
committed
TD-6159 user table swap
1 parent 982bff9 commit 816c511

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+796
-239
lines changed

LearningHub.Nhs.UserApi.Database/LearningHub.Nhs.UserApi.Database.sqlproj

Lines changed: 47 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<SchemaVersion>2.0</SchemaVersion>
88
<ProjectVersion>4.1</ProjectVersion>
99
<ProjectGuid>{bdab7190-d505-421d-874d-c9f49574c9df}</ProjectGuid>
10-
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
10+
<DSP>Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider</DSP>
1111
<OutputType>Database</OutputType>
1212
<RootPath />
1313
<RootNamespace>LearningHub.Nhs.UserApi.Database</RootNamespace>
@@ -44,6 +44,7 @@
4444
<DefineTrace>true</DefineTrace>
4545
<ErrorReport>prompt</ErrorReport>
4646
<WarningLevel>4</WarningLevel>
47+
<SuppressTSqlWarnings>70588,71502,71558</SuppressTSqlWarnings>
4748
</PropertyGroup>
4849
<PropertyGroup>
4950
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">11.0</VisualStudioVersion>
@@ -59,39 +60,56 @@
5960
<Folder Include="Stored Procedures" />
6061
<Folder Include="Views" />
6162
<Folder Include="Tables\Elfh" />
63+
<Folder Include="Stored Procedures\Elfh" />
64+
<Folder Include="Tables\Hub" />
6265
</ItemGroup>
6366
<ItemGroup>
6467
<Build Include="Schemas\elfh.sql" />
6568
<Build Include="Tables\Elfh\GdcRegister.sql" />
69+
<Build Include="Tables\elfh\SchoolTBL.sql" />
70+
<Build Include="Tables\elfh\locationTypeTBL.sql" />
71+
<Build Include="Tables\elfh\loginWizardStageTBL.sql" />
72+
<Build Include="Tables\elfh\DeaneryTBL.sql" />
73+
<Build Include="Tables\elfh\AttributeTypeTBL.sql" />
74+
<Build Include="Tables\elfh\AttributeTBL.sql" />
75+
<Build Include="Schemas\hub.sql" />
76+
<Build Include="Tables\Hub\User.sql" />
77+
<Build Include="Tables\Elfh\userHistoryTypeTBL.sql" />
6678
</ItemGroup>
6779
<ItemGroup>
68-
<None Include="Tables\Elfh\GmcLrmp.sql" />
69-
<None Include="Tables\Elfh\Location.sql" />
70-
<None Include="Tables\Elfh\CountryTBL.sql" />
71-
<None Include="Tables\Elfh\GradeTBL.sql" />
72-
<None Include="Tables\Elfh\IpCountryLookupTBL.sql" />
73-
<None Include="Tables\Elfh\JobRoleTBL.sql" />
74-
<None Include="Tables\Elfh\MedicalCouncilTBL.sql" />
75-
<None Include="Tables\Elfh\RegionTBL.sql" />
76-
<None Include="Tables\Elfh\SpecialtyTBL.sql" />
77-
<None Include="Tables\Elfh\StaffGroupTBL.sql" />
78-
<None Include="Tables\Elfh\EmailTemplateTBL.sql" />
79-
<None Include="Tables\Elfh\UserGroupTypeInputValidationTBL.sql" />
80-
<None Include="Tables\Elfh\LoginWizardRuleTBL.sql" />
81-
<None Include="Tables\Elfh\LoginWizardStageActivityTBL.sql" />
82-
<None Include="Tables\Elfh\TermsAndConditionsTBL.sql" />
83-
<None Include="Tables\Elfh\UserTermsAndConditionsTBL.sql" />
84-
<None Include="Tables\Elfh\UserRoleUpgradeTBL.sql" />
85-
<None Include="Tables\Elfh\ExternalSystemTBL.sql" />
86-
<None Include="Tables\Elfh\SystemSettingTBL.sql" />
87-
<None Include="Tables\Elfh\TenantTBL.sql" />
88-
<None Include="Tables\Elfh\TenantSmtpTBL.sql" />
89-
<None Include="Tables\Elfh\TenantUrlTBL.sql" />
90-
<None Include="Tables\Elfh\UserAttributeTBL.sql" />
91-
<None Include="Tables\Elfh\UserEmploymentTBL.sql" />
92-
<None Include="Tables\Elfh\UserHistoryTBL.sql" />
93-
<None Include="Tables\Elfh\UserHistoryAttributeTBL.sql" />
94-
<None Include="Tables\Elfh\UserPasswordValidationTokenTBL.sql" />
95-
<None Include="Tables\Elfh\EmailTemplateTypeTBL.sql" />
80+
<Build Include="Tables\Elfh\GmcLrmp.sql" />
81+
<Build Include="Tables\Elfh\Location.sql" />
82+
<Build Include="Tables\Elfh\CountryTBL.sql" />
83+
<Build Include="Tables\Elfh\GradeTBL.sql" />
84+
<Build Include="Tables\Elfh\IpCountryLookupTBL.sql" />
85+
<Build Include="Tables\Elfh\JobRoleTBL.sql" />
86+
<Build Include="Tables\Elfh\MedicalCouncilTBL.sql" />
87+
<Build Include="Tables\Elfh\RegionTBL.sql" />
88+
<Build Include="Tables\Elfh\SpecialtyTBL.sql" />
89+
<Build Include="Tables\Elfh\StaffGroupTBL.sql" />
90+
<Build Include="Tables\Elfh\EmailTemplateTBL.sql" />
91+
<Build Include="Tables\Elfh\UserGroupTypeInputValidationTBL.sql" />
92+
<Build Include="Tables\Elfh\LoginWizardRuleTBL.sql" />
93+
<Build Include="Tables\Elfh\LoginWizardStageActivityTBL.sql" />
94+
<Build Include="Tables\Elfh\TermsAndConditionsTBL.sql" />
95+
<Build Include="Tables\Elfh\UserTermsAndConditionsTBL.sql" />
96+
<Build Include="Tables\Elfh\UserRoleUpgradeTBL.sql" />
97+
<Build Include="Tables\Elfh\ExternalSystemTBL.sql" />
98+
<Build Include="Tables\Elfh\SystemSettingTBL.sql" />
99+
<Build Include="Tables\Elfh\TenantTBL.sql" />
100+
<Build Include="Tables\Elfh\TenantSmtpTBL.sql" />
101+
<Build Include="Tables\Elfh\TenantUrlTBL.sql" />
102+
<Build Include="Tables\Elfh\UserAttributeTBL.sql" />
103+
<Build Include="Tables\Elfh\UserEmploymentTBL.sql" />
104+
<Build Include="Tables\Elfh\UserHistoryTBL.sql" />
105+
<Build Include="Tables\Elfh\UserHistoryAttributeTBL.sql" />
106+
<Build Include="Tables\Elfh\UserPasswordValidationTokenTBL.sql" />
107+
<Build Include="Tables\Elfh\EmailTemplateTypeTBL.sql" />
108+
<Build Include="Stored Procedures\elfh\LinkEmploymentRecordToUser.sql" />
109+
<Build Include="Stored Procedures\elfh\UserDetailForAuthenticationByUserName.sql" />
110+
<Build Include="Stored Procedures\elfh\UserHistoryLoadForUser.sql" />
111+
<Build Include="Stored Procedures\elfh\UserHistoryInsert.sql" />
112+
<Build Include="Stored Procedures\elfh\UserHistoryLoadForLearningHubUser.sql" />
113+
<Build Include="Stored Procedures\elfh\UserHistoryAttributeSave.sql" />
96114
</ItemGroup>
97115
</Project>
Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1-
CREATE SCHEMA [elfh]
1+
CREATE SCHEMA [elfh]
2+
AUTHORIZATION [dbo];
3+
GO
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
CREATE SCHEMA [hub]
2+
AUTHORIZATION [dbo];
3+
GO
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
-----------------------------------------------------------------------------------------------
2+
-- Mark Avey 11/06/2020 - Initial Version.
3+
-- Update the UserTBL record with the primaryUserEmploymentId from userEmploymentTBL
4+
------------------------------------------------------------------------------------------------
5+
CREATE PROCEDURE [elfh].[proc_LinkEmploymentRecordToUser]
6+
(
7+
@userId int
8+
)
9+
AS
10+
BEGIN
11+
BEGIN TRANSACTION
12+
BEGIN TRY
13+
SET NOCOUNT OFF
14+
15+
UPDATE [hub].[User]
16+
SET primaryUserEmploymentId = (SELECT userEmploymentId FROM [elfh].[userEmploymentTBL] WHERE userId = @userId)
17+
WHERE Id = @userId
18+
19+
END TRY
20+
21+
BEGIN CATCH
22+
SELECT
23+
ERROR_NUMBER() AS ErrorNumber
24+
,ERROR_SEVERITY() AS ErrorSeverity
25+
,ERROR_STATE() AS ErrorState
26+
,ERROR_PROCEDURE() AS ErrorProcedure
27+
,ERROR_LINE() AS ErrorLine
28+
,ERROR_MESSAGE() AS ErrorMessage;
29+
30+
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION
31+
END CATCH
32+
33+
IF @@TRANCOUNT > 0 COMMIT TRANSACTION
34+
35+
RETURN @@ERROR
36+
END
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
-------------------------------------------------------------------------
2+
-- Jignesh Jethwani 27 Sept 2023 - Initial version
3+
-- Tobi Awe 24 Sept 2025 - swapped elfh user table to hub user table
4+
--------------------------------------------------------------------------
5+
CREATE PROCEDURE [elfh].[proc_UserDetailForAuthenticationByUserName]
6+
(
7+
@userName varchar(100)
8+
)
9+
AS
10+
BEGIN
11+
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
12+
SET NOCOUNT ON
13+
DECLARE @Err int
14+
DECLARE @false bit
15+
SET @false = 0
16+
SELECT elfhuser.Id as Id,
17+
elfhuser.userName,
18+
ISNULL(elfhuser.passwordHash, '') AS 'passwordHash',
19+
elfhuser.RestrictToSSO,
20+
elfhuser.active,
21+
elfhuser.activeFromDate,
22+
elfhuser.activeToDate,
23+
elfhuser.passwordLifeCounter,
24+
userAttribData.userAttributeId as OpenAthensUserAttributeId
25+
FROM
26+
[hub].[User] elfhuser
27+
OUTER APPLY
28+
(
29+
SELECT
30+
TOP 1 userAttrib.userAttributeId
31+
FROM
32+
elfh.userAttributeTBL userAttrib
33+
INNER Join
34+
elfh.attributeTBL attrib ON userAttrib.attributeId = attrib.attributeId AND lower(attrib.attributeName) = 'openathens_userid' AND userAttrib.deleted = 0
35+
WHERE
36+
userAttrib.userId = elfhuser.Id
37+
) userAttribData
38+
WHERE
39+
elfhuser.userName = @userName
40+
AND
41+
elfhuser.deleted = 0
42+
SET @Err = @@Error
43+
RETURN @Err
44+
END
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
2+
--------------------------------------------------------------------------
3+
-- Jignesh Jethwani 02-03-2018 Initial version
4+
-- Jignesh Jethwani 02-10-2023 TD-2913, performance improvement, added no lock to select statement
5+
-- Tobi Awe 24-09-2025 Updated table schema
6+
--------------------------------------------------------------------------
7+
CREATE PROCEDURE [elfh].[proc_UserHistoryAttributeSave]
8+
(
9+
@userHistoryAttributeId int OUTPUT,
10+
@userHistoryId int,
11+
@attributeId int,
12+
@intValue int,
13+
@textValue nvarchar(255),
14+
@booleanValue bit,
15+
@dateValue datetimeoffset,
16+
@deleted bit,
17+
@amendUserId int,
18+
@amendDate datetimeoffset
19+
)
20+
AS
21+
BEGIN
22+
DECLARE @currentIntValue int
23+
DECLARE @currentTextValue nvarchar(255)
24+
DECLARE @currentBooleanValue bit
25+
DECLARE @currentDateValue datetimeoffset
26+
SELECT
27+
@userHistoryAttributeId = userHistoryAttributeId,
28+
@currentIntValue = intValue,
29+
@currentTextValue = textValue,
30+
@currentBooleanValue = booleanValue,
31+
@currentDateValue = dateValue
32+
FROM
33+
elfh.userHistoryAttributeTBL WITH (NOLOCK)
34+
WHERE
35+
userHistoryId = @userHistoryId
36+
AND
37+
attributeId = @attributeId
38+
IF @userHistoryAttributeId IS NULL
39+
BEGIN
40+
IF @intValue IS NOT NULL
41+
OR ISNULL(@textValue, '') != ''
42+
OR @booleanValue IS NOT NULL
43+
OR @dateValue IS NOT NULL
44+
BEGIN
45+
INSERT INTO elfh.userHistoryAttributeTBL(userHistoryId,
46+
attributeId,
47+
intValue,
48+
textValue,
49+
booleanValue,
50+
dateValue,
51+
deleted,
52+
amendUserId,
53+
amendDate)
54+
SELECT
55+
userHistoryId = @userHistoryId,
56+
attributeId = @attributeId,
57+
intValue = @intValue,
58+
textValue = @textValue,
59+
booleanValue = @booleanValue,
60+
dateValue = @dateValue,
61+
deleted = @deleted,
62+
amendUserId = @amendUserId,
63+
@amendDate
64+
SELECT @userHistoryAttributeId = SCOPE_IDENTITY()
65+
END
66+
END
67+
ELSE
68+
BEGIN
69+
-- Only update when an Attribute Value has changed
70+
IF (@intValue != @currentIntValue
71+
OR ISNULL(@textValue, '') != ISNULL(@currentTextValue,'')
72+
OR @booleanValue != @currentBooleanValue
73+
OR @dateValue != @currentDateValue)
74+
BEGIN
75+
UPDATE
76+
elfh.userHistoryAttributeTBL
77+
SET
78+
intValue = @intValue,
79+
textValue = @textValue,
80+
booleanValue = @booleanValue,
81+
dateValue = @dateValue,
82+
deleted = @deleted,
83+
amendUserId = @amendUserId,
84+
amendDate = @amendDate
85+
WHERE
86+
userHistoryAttributeId = @userHistoryAttributeId
87+
END
88+
END
89+
END

0 commit comments

Comments
 (0)