Skip to content

Commit cbafad3

Browse files
authored
Merge pull request #262 from TechnologyEnhancedLearning/Develop/Feature/TD-6159-latest
TD-6159-User Profile Migartion
2 parents f950b57 + fdab034 commit cbafad3

File tree

13 files changed

+109
-31
lines changed

13 files changed

+109
-31
lines changed

LearningHub.Nhs.UserApi.Repository.Interface/LH/IUserRepository.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
namespace LearningHub.Nhs.UserApi.Repository.Interface.LH
22
{
33
using System.Threading.Tasks;
4+
using elfhHub.Nhs.Models.Common;
5+
using elfhHub.Nhs.Models.Dto;
46
using LearningHub.Nhs.Models.Entities;
57

68
/// <summary>
@@ -18,5 +20,38 @@ public interface IUserRepository : IGenericLHRepository<User>
1820
/// The <see cref="Task"/>.
1921
/// </returns>
2022
Task<User> GetByIdAsync(int id);
23+
24+
/// <summary>
25+
/// The get user id by username async.
26+
/// </summary>
27+
/// <param name="username">
28+
/// The username.
29+
/// </param>
30+
/// <returns>
31+
/// The <see cref="Task"/>.
32+
/// </returns>
33+
Task<int> GetUserIdByUsernameAsync(string username);
34+
35+
/// <summary>
36+
/// The get by open athens id.
37+
/// </summary>
38+
/// <param name="openAthensId">
39+
/// The open athens id.
40+
/// </param>
41+
/// <returns>
42+
/// The <see cref="Task"/>.
43+
/// </returns>
44+
Task<UserBasic> GetByOpenAthensIdAsync(string openAthensId);
45+
46+
/// <summary>
47+
/// The get user detail for the authentication.
48+
/// </summary>
49+
/// <param name = "username">
50+
/// username.
51+
/// </param>
52+
/// <returns>
53+
/// The <see cref="Task"/>.
54+
/// </returns>
55+
Task<UserAuthenticateDto> GetUserDetailForAuthentication(string username);
2156
}
2257
}

LearningHub.Nhs.UserApi.Repository.Interface/LearningHub.Nhs.UserApi.Repository.Interface.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1313
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

LearningHub.Nhs.UserApi.Repository/LH/LearningHubDbContext.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace LearningHub.Nhs.UserApi.Repository.LH
22
{
3+
using elfhHub.Nhs.Models.Dto;
34
using LearningHub.Nhs.Models.Entities;
45
using LearningHub.Nhs.Models.Entities.External;
56
using LearningHub.Nhs.Models.Entities.Messaging;
@@ -50,6 +51,11 @@ public LearningHubDbContext(LearningHubDbContextOptions options)
5051
/// </summary>
5152
public virtual DbSet<EmailTemplate> EmailTemplate { get; set; }
5253

54+
/// <summary>
55+
/// Gets or sets the UserAuthentiate Dto.
56+
/// </summary>
57+
public virtual DbSet<UserAuthenticateDto> UserAuthenticateDto { get; set; }
58+
5359
/// <summary>
5460
/// The on model creating.
5561
/// </summary>

LearningHub.Nhs.UserApi.Repository/LH/UserRepository.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
11
namespace LearningHub.Nhs.UserApi.Repository.LH
22
{
3+
using System.Data;
4+
using System.Linq;
35
using System.Threading.Tasks;
6+
using elfhHub.Nhs.Models.Common;
7+
using elfhHub.Nhs.Models.Dto;
48
using LearningHub.Nhs.Models.Entities;
59
using LearningHub.Nhs.UserApi.Repository;
610
using LearningHub.Nhs.UserApi.Repository.Interface.LH;
11+
using Microsoft.Data.SqlClient;
712
using Microsoft.EntityFrameworkCore;
813

914
/// <summary>
@@ -26,5 +31,40 @@ public async Task<User> GetByIdAsync(int id)
2631
{
2732
return await this.DbContext.User.FirstOrDefaultWithNoLockAsync(n => n.Id == id);
2833
}
34+
35+
/// <inheritdoc/>
36+
public async Task<int> GetUserIdByUsernameAsync(string username)
37+
{
38+
return await this.DbContext.User.AsNoTracking().Where(n => n.UserName == username).Select(n => n.Id).FirstOrDefaultWithNoLockAsync();
39+
}
40+
41+
/// <inheritdoc/>
42+
public async Task<UserBasic> GetByOpenAthensIdAsync(string openAthensId)
43+
{
44+
var param = new SqlParameter("@OpenAthensId", openAthensId);
45+
46+
return await this.DbContext.Set<UserBasic>()
47+
.FromSqlRaw("EXEC elfh.proc_GetUserByOpenAthensId @OpenAthensId", param)
48+
.AsNoTracking()
49+
.FirstOrDefaultAsync();
50+
}
51+
52+
/// <summary>
53+
/// The get user detail for the authentication.
54+
/// </summary>
55+
/// <param name = "username">
56+
/// username.
57+
/// </param>
58+
/// <returns>
59+
/// The <see cref="Task"/>.
60+
/// </returns>
61+
public async Task<UserAuthenticateDto> GetUserDetailForAuthentication(string username)
62+
{
63+
var param0 = new SqlParameter("@userName", SqlDbType.VarChar) { Value = username };
64+
65+
var userAuthenticateDto = await this.DbContext.UserAuthenticateDto.FromSqlRaw("elfh.proc_UserDetailForAuthenticationByUserName @userName", param0).AsNoTracking().ToListAsync();
66+
67+
return userAuthenticateDto.FirstOrDefault();
68+
}
2969
}
3070
}

LearningHub.Nhs.UserApi.Repository/LearningHub.Nhs.UserApi.Repository.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1313
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
1414
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.0" />
1515
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">

LearningHub.Nhs.UserApi.Services.Interface/LearningHub.Nhs.UserAPI.Services.Interface.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1313
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

LearningHub.Nhs.UserApi.Services.UnitTests/LearningHub.Nhs.UserApi.Services.UnitTests.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
1414
<PackageReference Include="EntityFrameworkCore.Testing.Moq" Version="5.0.0" />
1515
<PackageReference Include="LearningHub.Nhs.Caching" Version="2.0.0" />
16-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
16+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
1818
<PackageReference Include="MockQueryable.Core" Version="7.0.3" />
1919
<PackageReference Include="MockQueryable.Moq" Version="5.0.0" />

LearningHub.Nhs.UserApi.Services/ElfhUserService.cs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,13 @@ public async Task<UserBasic> GetByOpenAthensIdAsync(string openAthensId)
158158
return null;
159159
}
160160

161-
var user = await this.elfhUserRepository.GetByOpenAthensIdAsync(openAthensId);
161+
var user = await this.lhUserRepository.GetByOpenAthensIdAsync(openAthensId);
162162

163-
if (user != null)
164-
{
165-
await this.SyncLHUserAsync(user.Id, user.UserName);
166-
}
167-
168-
return user?.ToBasicUser();
163+
// if (user != null)
164+
// {
165+
// await this.SyncLHUserAsync(user.Id, user.UserName);
166+
// }
167+
return user;
169168
}
170169

171170
/// <inheritdoc/>
@@ -181,13 +180,13 @@ public async Task<User> GetByUsernameAsync(string userName, UserIncludeCollectio
181180
/// <returns>The <see cref="Task"/>.</returns>
182181
public async Task<int> GetUserIdByUsernameAsync(string userName)
183182
{
184-
return await this.elfhUserRepository.GetUserIdByUsernameAsync(userName);
183+
return await this.lhUserRepository.GetUserIdByUsernameAsync(userName);
185184
}
186185

187186
/// <inheritdoc/>
188187
public async Task<UserAuthenticateDto> GetUserDetailForAuthenticateAsync(string userName)
189188
{
190-
return await this.elfhUserRepository.GetUserDetailForAuthentication(userName);
189+
return await this.lhUserRepository.GetUserDetailForAuthentication(userName);
191190
}
192191

193192
/// <inheritdoc/>
@@ -229,14 +228,14 @@ public async Task<string> GetUserRoleAsync(int id)
229228
/// <inheritdoc/>
230229
public async Task RecordSuccessfulSigninAsync(int id, CancellationToken token = default)
231230
{
232-
var user = await this.elfhUserRepository.GetByIdAsync(id);
231+
var user = await this.lhUserRepository.GetByIdAsync(id);
233232

234233
if (user.PasswordLifeCounter != 0 || user.SecurityLifeCounter != 0)
235234
{
236235
user.PasswordLifeCounter = 0;
237236
user.SecurityLifeCounter = 0;
238237

239-
await this.elfhUserRepository.UpdateAsync(id, user);
238+
await this.lhUserRepository.UpdateAsync(id, user);
240239

241240
await this.InvalidateElfhUserCacheAsync(user.Id, user.UserName, token);
242241
}
@@ -245,11 +244,11 @@ public async Task RecordSuccessfulSigninAsync(int id, CancellationToken token =
245244
/// <inheritdoc/>
246245
public async Task RecordUnsuccessfulSigninAsync(int id, CancellationToken token = default)
247246
{
248-
var user = await this.elfhUserRepository.GetByIdAsync(id);
247+
var user = await this.lhUserRepository.GetByIdAsync(id);
249248

250249
user.PasswordLifeCounter++;
251250

252-
await this.elfhUserRepository.UpdateAsync(id, user);
251+
await this.lhUserRepository.UpdateAsync(id, user);
253252

254253
await this.InvalidateElfhUserCacheAsync(user.Id, user.UserName, token);
255254
}

LearningHub.Nhs.UserApi.Services/LearningHub.Nhs.UserApi.Services.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1313
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
1414
<PackageReference Include="Microsoft.Extensions.Caching.Redis" Version="2.3.0" />
1515
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">

LearningHub.Nhs.UserApi.Shared/LearningHub.Nhs.UserApi.Shared.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="elfhHub.Nhs.Models" Version="3.0.14" />
12-
<PackageReference Include="LearningHub.Nhs.Models" Version="3.0.46" />
12+
<PackageReference Include="LearningHub.Nhs.Models" Version="4.0.4" />
1313
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118">
1414
<PrivateAssets>all</PrivateAssets>
1515
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>

0 commit comments

Comments
 (0)