Skip to content

Commit 7df95f9

Browse files
authored
Merge pull request #2720 from TechnologyEnhancedLearning/Develop/Features/TD-3916-UsersController-refactor(Controller-Service-Repositorypattern)
TD-3916 users controller refactor(controller service repository pattern)
2 parents 25bffe8 + 018ed27 commit 7df95f9

File tree

3 files changed

+46
-30
lines changed

3 files changed

+46
-30
lines changed

DigitalLearningSolutions.Web.Tests/Controllers/SuperAdmin/UsersControllerTests.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using DigitalLearningSolutions.Data.DataServices;
2-
using DigitalLearningSolutions.Data.DataServices.UserDataService;
3-
using DigitalLearningSolutions.Data.Models.Support;
1+
using DigitalLearningSolutions.Data.Models.Support;
42
using DigitalLearningSolutions.Data.Utilities;
53
using DigitalLearningSolutions.Data.ViewModels.UserCentreAccount;
64
using DigitalLearningSolutions.Web.Controllers.SuperAdmin;
@@ -26,13 +24,11 @@ namespace DigitalLearningSolutions.Web.Tests.Controllers.SuperAdmin
2624
public class UsersControllerTests
2725
{
2826
private UsersController controller = null!;
29-
3027
private IUserService userService = null!;
3128
private IUserCentreAccountsService userCentreAccountsService = null!;
32-
private IUserDataService userDataService=null!;
33-
private ICentreRegistrationPromptsDataService centreRegistrationPromptsDataService=null!;
29+
private ICentreRegistrationPromptsService centreRegistrationPromptsService=null!;
3430
private ISearchSortFilterPaginateService searchSortFilterPaginateService=null!;
35-
private IJobGroupsDataService jobGroupsDataService=null!;
31+
private IJobGroupsService jobGroupsService=null!;
3632
private IClockUtility clockUtility=null!;
3733
private static readonly List<int> EmptyListOfCentreIds = new List<int>();
3834
[SetUp]
@@ -41,8 +37,8 @@ public void Setup()
4137
userService = A.Fake<IUserService>();
4238
userCentreAccountsService = A.Fake<IUserCentreAccountsService>();
4339

44-
controller = new UsersController(userDataService, centreRegistrationPromptsDataService,
45-
searchSortFilterPaginateService, jobGroupsDataService,userCentreAccountsService, userService, clockUtility)
40+
controller = new UsersController(centreRegistrationPromptsService,
41+
searchSortFilterPaginateService, jobGroupsService,userCentreAccountsService, userService, clockUtility)
4642
.WithDefaultContext()
4743
.WithMockHttpContextSession()
4844
.WithMockTempData();

DigitalLearningSolutions.Web/Controllers/SuperAdmin/Users/UsersController.cs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
namespace DigitalLearningSolutions.Web.Controllers.SuperAdmin.Users
22
{
3-
using DigitalLearningSolutions.Data.DataServices;
4-
using DigitalLearningSolutions.Data.DataServices.UserDataService;
53
using DigitalLearningSolutions.Data.Enums;
64
using DigitalLearningSolutions.Data.Helpers;
75
using DigitalLearningSolutions.Data.Models.SearchSortFilterPaginate;
@@ -28,20 +26,18 @@
2826
[SetSelectedTab(nameof(NavMenuTab.Admins))]
2927
public class UsersController : Controller
3028
{
31-
private readonly IUserDataService userDataService;
32-
private readonly ICentreRegistrationPromptsDataService centreRegistrationPromptsDataService;
29+
private readonly ICentreRegistrationPromptsService centreRegistrationPromptsService;
3330
private readonly ISearchSortFilterPaginateService searchSortFilterPaginateService;
34-
private readonly IJobGroupsDataService jobGroupsDataService;
31+
private readonly IJobGroupsService jobGroupsService;
3532
private const string UserAccountFilterCookieName = "UserAccountFilter";
3633
private readonly IUserService userService;
3734
private readonly IUserCentreAccountsService userCentreAccountsService;
3835
private readonly IClockUtility clockUtility;
39-
public UsersController(IUserDataService userDataService, ICentreRegistrationPromptsDataService centreRegistrationPromptsDataService, ISearchSortFilterPaginateService searchSortFilterPaginateService, IJobGroupsDataService jobGroupsDataService,IUserCentreAccountsService userCentreAccountsService, IUserService userService, IClockUtility clockUtility)
36+
public UsersController(ICentreRegistrationPromptsService centreRegistrationPromptsService, ISearchSortFilterPaginateService searchSortFilterPaginateService, IJobGroupsService jobGroupsService,IUserCentreAccountsService userCentreAccountsService, IUserService userService, IClockUtility clockUtility)
4037
{
41-
this.userDataService = userDataService;
42-
this.centreRegistrationPromptsDataService = centreRegistrationPromptsDataService;
38+
this.centreRegistrationPromptsService = centreRegistrationPromptsService;
4339
this.searchSortFilterPaginateService = searchSortFilterPaginateService;
44-
this.jobGroupsDataService = jobGroupsDataService;
40+
this.jobGroupsService = jobGroupsService;
4541
this.userService = userService;
4642
this.userCentreAccountsService = userCentreAccountsService;
4743
this.clockUtility = clockUtility;
@@ -52,7 +48,7 @@ public IActionResult InactivateUserConfirmation(int userId = 0)
5248
{
5349
InactivateUserViewModel inactivateUserViewModel = new InactivateUserViewModel();
5450
inactivateUserViewModel.UserId = userId;
55-
inactivateUserViewModel.DisplayName = this.userDataService.GetUserDisplayName(userId);
51+
inactivateUserViewModel.DisplayName = this.userService.GetUserDisplayName(userId);
5652

5753
if (TempData["SearchString"] != null)
5854
{
@@ -78,7 +74,7 @@ public IActionResult InactivateUserConfirmation(InactivateUserViewModel inactiva
7874
TempData["UserId"] = userId;
7975
if (inactivateUserViewModel.IsChecked)
8076
{
81-
this.userDataService.InactivateUser(userId);
77+
this.userService.InactivateUser(userId);
8278
return RedirectToAction("Index", "Users", new { UserId = userId });
8379
}
8480
else
@@ -156,9 +152,9 @@ public IActionResult Index(
156152
}
157153
}
158154

159-
(var UserAccounts, var ResultCount) = this.userDataService.GetUserAccounts(Search ?? string.Empty, offSet, itemsPerPage ?? 0, JobGroupId, UserStatus, EmailStatus, UserId, AuthHelper.FailedLoginThreshold);
155+
(var UserAccounts, var ResultCount) = this.userService.GetUserAccounts(Search ?? string.Empty, offSet, itemsPerPage ?? 0, JobGroupId, UserStatus, EmailStatus, UserId, AuthHelper.FailedLoginThreshold);
160156

161-
var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical().ToList();
157+
var jobGroups = jobGroupsService.GetJobGroupsAlphabetical().ToList();
162158
jobGroups.Insert(0, (0, "Any"));
163159

164160
var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions(
@@ -235,7 +231,7 @@ public List<string> GetEmailStatus()
235231
[Route("SuperAdmin/Users/{userId=0:int}/EditUserDetails")]
236232
public IActionResult EditUserDetails(int userId)
237233
{
238-
UserAccount userAccount = this.userDataService.GetUserAccountById(userId);
234+
UserAccount userAccount = this.userService.GetUserAccountById(userId);
239235
EditUserDetailsViewModel editUserDetailsViewModel = new EditUserDetailsViewModel(userAccount);
240236

241237
if (TempData["SearchString"] != null)
@@ -253,7 +249,7 @@ public IActionResult EditUserDetails(int userId)
253249
TempData["UserId"] = userId;
254250
TempData.Keep();
255251

256-
var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical().ToList();
252+
var jobGroups = jobGroupsService.GetJobGroupsAlphabetical().ToList();
257253
ViewBag.JobGroups = SelectListHelper.MapOptionsToSelectListItems(
258254
jobGroups, userAccount.JobGroupId
259255
);
@@ -266,9 +262,9 @@ public IActionResult EditUserDetails(EditUserDetailsViewModel editUserDetailsVie
266262
{
267263
if (ModelState.IsValid)
268264
{
269-
if (!this.userDataService.PrimaryEmailIsInUseByOtherUser(editUserDetailsViewModel.PrimaryEmail, editUserDetailsViewModel.Id))
265+
if (!this.userService.PrimaryEmailIsInUseByOtherUser(editUserDetailsViewModel.PrimaryEmail, editUserDetailsViewModel.Id))
270266
{
271-
this.userDataService.UpdateUserDetailsAccount(editUserDetailsViewModel.FirstName, editUserDetailsViewModel.LastName, editUserDetailsViewModel.PrimaryEmail, editUserDetailsViewModel.JobGroupId, editUserDetailsViewModel.ProfessionalRegistrationNumber,
267+
this.userService.UpdateUserDetailsAccount(editUserDetailsViewModel.FirstName, editUserDetailsViewModel.LastName, editUserDetailsViewModel.PrimaryEmail, editUserDetailsViewModel.JobGroupId, editUserDetailsViewModel.ProfessionalRegistrationNumber,
272268
((editUserDetailsViewModel.ResetEmailVerification) ? null : editUserDetailsViewModel.EmailVerified),
273269
editUserDetailsViewModel.Id);
274270
return RedirectToAction("Index", "Users", new { UserId = editUserDetailsViewModel.Id });
@@ -281,7 +277,7 @@ public IActionResult EditUserDetails(EditUserDetailsViewModel editUserDetailsVie
281277
);
282278
}
283279
}
284-
var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical().ToList();
280+
var jobGroups = jobGroupsService.GetJobGroupsAlphabetical().ToList();
285281
ViewBag.JobGroups = SelectListHelper.MapOptionsToSelectListItems(
286282
jobGroups, editUserDetailsViewModel.JobGroupId
287283
);
@@ -332,15 +328,15 @@ public IActionResult UnlockAccount(int userId, string RequestUrl= null)
332328
[Route("SuperAdmin/Users/{userId=0:int}/ActivateUser")]
333329
public IActionResult ActivateUser(int userId = 0)
334330
{
335-
userDataService.ActivateUser(userId);
331+
userService.ActivateUser(userId);
336332
TempData["UserId"] = userId;
337333
return RedirectToAction("Index", "Users", new { UserId = userId });
338334
}
339335

340336
[Route("SuperAdmin/Users/{userId=0:int}/{email='':string}/VerifyEmail")]
341337
public IActionResult VerifyEmail(int userId = 0,string email="")
342338
{
343-
userDataService.SetPrimaryEmailVerified(userId,email, clockUtility.UtcNow);
339+
userService.SetPrimaryEmailVerified(userId,email, clockUtility.UtcNow);
344340
TempData["UserId"] = userId;
345341
return RedirectToAction("Index", "Users", new { UserId = userId });
346342
}

DigitalLearningSolutions.Web/Services/UserService.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ void SetCentreEmail(
159159

160160
AdminUser? GetAdminUserById(int id);
161161
string GetUserDisplayName(int userId);
162+
162163
(IEnumerable<SuperAdminDelegateAccount>, int) GetAllDelegates(
163164
string search, int offset, int rows, int? delegateId, string accountStatus, string lhlinkStatus, int? centreId, int failedLoginThreshold
164165
);
@@ -187,7 +188,12 @@ bool isWorkforceManager
187188
bool IsUserAlreadyAdminAtCentre(int? userId, int centreId);
188189
IEnumerable<AdminEntity> GetAdminsByCentreId(int centreId);
189190
void DeactivateAdmin(int adminId);
190-
191+
void ActivateUser(int userId);
192+
void InactivateUser(int userId);
193+
(IEnumerable<UserAccountEntity>, int recordCount) GetUserAccounts(
194+
string search, int offset, int rows, int jobGroupId, string userStatus, string emailStatus, int userId, int failedLoginThreshold
195+
);
196+
void UpdateUserDetailsAccount(string firstName, string lastName, string primaryEmail, int jobGroupId, string? prnNumber, DateTime? emailVerified, int userId);
191197
}
192198

193199
public class UserService : IUserService
@@ -873,6 +879,7 @@ public string GetUserDisplayName(int userId)
873879
return userDataService.GetUserDisplayName(userId);
874880
}
875881

882+
876883
public (IEnumerable<SuperAdminDelegateAccount>, int) GetAllDelegates(string search, int offset, int rows, int? delegateId, string accountStatus, string lhlinkStatus, int? centreId, int failedLoginThreshold)
877884
{
878885
return userDataService.GetAllDelegates(search, offset, rows, delegateId, accountStatus, lhlinkStatus, centreId, failedLoginThreshold);
@@ -932,5 +939,22 @@ public void DeactivateAdmin(int adminId)
932939
{
933940
userDataService.DeactivateAdmin(adminId);
934941
}
942+
943+
public void ActivateUser(int userId)
944+
{
945+
userDataService.ActivateUser(userId);
946+
}
947+
public void InactivateUser(int userId)
948+
{
949+
userDataService.InactivateUser(userId);
950+
}
951+
public (IEnumerable<UserAccountEntity>, int recordCount) GetUserAccounts(string search, int offset, int rows, int jobGroupId, string userStatus, string emailStatus, int userId, int failedLoginThreshold)
952+
{
953+
return userDataService.GetUserAccounts(search, offset, rows, jobGroupId, userStatus, emailStatus, userId, failedLoginThreshold);
954+
}
955+
public void UpdateUserDetailsAccount(string firstName, string lastName, string primaryEmail, int jobGroupId, string? prnNumber, DateTime? emailVerified, int userId)
956+
{
957+
userDataService.UpdateUserDetailsAccount(firstName, lastName, primaryEmail, jobGroupId, prnNumber, emailVerified, userId);
958+
}
935959
}
936960
}

0 commit comments

Comments
 (0)