Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
namespace DigitalLearningSolutions.Data.Migrations
{
using FluentMigrator;

[Migration(202202281322)]
public class AddNominatedSupervisorToAdminUsersTable : Migration
{
public override void Up()
{
Alter.Table("AdminUsers").AddColumn("NominatedSupervisor").AsBoolean().NotNullable().WithDefaultValue(false);
}

public override void Down()
{
Delete.Column("NominatedSupervisor").FromTable("AdminUsers");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -162,12 +162,13 @@ public void UpdateAdminUserPermissions_updates_user()
try
{
// When
userDataService.UpdateAdminUserPermissions(7, true, true, true, true, true, true, 1);
userDataService.UpdateAdminUserPermissions(7, true, true, true, true, true, true, true, 1);
var updatedUser = userDataService.GetAdminUserById(7)!;

// Then
updatedUser.IsCentreAdmin.Should().BeTrue();
updatedUser.IsSupervisor.Should().BeTrue();
updatedUser.IsNominatedSupervisor.Should().BeTrue();
updatedUser.IsTrainer.Should().BeTrue();
updatedUser.IsContentCreator.Should().BeTrue();
updatedUser.IsContentManager.Should().BeTrue();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public void AdminRegistrationModel_without_isCmsManager_or_isCmsAdmin_populates_
public void GetNotificationRoles_returns_full_list_with_all_roles()
{
// Given
var expectedRoles = new List<int> { 1, 2, 3, 4, 6, 7 };
var expectedRoles = new List<int> { 1, 2, 3, 4, 6, 7, 8 };
var adminRegistrationModel = new AdminRegistrationModel(
"Test",
"Name",
Expand All @@ -64,6 +64,7 @@ public void GetNotificationRoles_returns_full_list_with_all_roles()
true,
true,
true,
true,
true
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -683,7 +683,7 @@ public void PromoteDelegateToAdmin_throws_AdminCreationFailedException_if_delega
{
// Given
var delegateUser = UserTestHelper.GetDefaultDelegateUser(firstName: null);
var adminRoles = new AdminRoles(true, true, true, true, true, true);
var adminRoles = new AdminRoles(true, true, true, true, true, true, true);
A.CallTo(() => userDataService.GetDelegateUserById(A<int>._)).Returns(delegateUser);

// When
Expand All @@ -700,7 +700,7 @@ public void PromoteDelegateToAdmin_throws_AdminCreationFailedException_if_delega
{
// Given
var delegateUser = UserTestHelper.GetDefaultDelegateUser(emailAddress: null);
var adminRoles = new AdminRoles(true, true, true, true, true, true);
var adminRoles = new AdminRoles(true, true, true, true, true, true, true);
A.CallTo(() => userDataService.GetDelegateUserById(A<int>._)).Returns(delegateUser);

// When
Expand All @@ -718,7 +718,7 @@ public void PromoteDelegateToAdmin_throws_email_in_use_AdminCreationFailedExcept
// Given
var delegateUser = UserTestHelper.GetDefaultDelegateUser();
var adminUser = UserTestHelper.GetDefaultAdminUser();
var adminRoles = new AdminRoles(true, true, true, true, true, true);
var adminRoles = new AdminRoles(true, true, true, true, true, true, true);
A.CallTo(() => userDataService.GetDelegateUserById(A<int>._)).Returns(delegateUser);
A.CallTo(() => userDataService.GetAdminUserByEmailAddress(A<string>._)).Returns(adminUser);

Expand All @@ -736,7 +736,7 @@ public void PromoteDelegateToAdmin_calls_data_service_with_expected_value()
{
// Given
var delegateUser = UserTestHelper.GetDefaultDelegateUser();
var adminRoles = new AdminRoles(true, true, true, true, true, true);
var adminRoles = new AdminRoles(true, true, true, true, true, true, true);
A.CallTo(() => userDataService.GetDelegateUserById(A<int>._)).Returns(delegateUser);
A.CallTo(() => userDataService.GetAdminUserByEmailAddress(A<string>._)).Returns(null);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,7 @@ public void UpdateAdminUserPermissions_edits_roles_when_spaces_available()
);
var numberOfAdmins = CentreContractAdminUsageTestHelper.GetDefaultNumberOfAdministrators();
GivenAdminDataReturned(numberOfAdmins, currentAdminUser);
var adminRoles = new AdminRoles(true, true, true, true, true, true);
var adminRoles = new AdminRoles(true, true, true, true, true, true, true);

// When
userService.UpdateAdminUserPermissions(currentAdminUser.Id, adminRoles, 0);
Expand All @@ -719,7 +719,7 @@ bool importOnly

var numberOfAdmins = GetFullCentreContractAdminUsage();
GivenAdminDataReturned(numberOfAdmins, currentAdminUser);
var adminRoles = new AdminRoles(true, true, true, true, true, importOnly);
var adminRoles = new AdminRoles(true, true, true, true, true, true, importOnly);

// When
userService.UpdateAdminUserPermissions(currentAdminUser.Id, adminRoles, 0);
Expand Down Expand Up @@ -748,7 +748,7 @@ bool newImportOnly
);
var numberOfAdmins = GetFullCentreContractAdminUsage();
GivenAdminDataReturned(numberOfAdmins, currentAdminUser);
var adminRoles = new AdminRoles(true, true, newIsContentCreator, newIsTrainer, true, newImportOnly);
var adminRoles = new AdminRoles(true, true, newIsContentCreator, true, newIsTrainer, true, newImportOnly);

// Then
Assert.Throws<AdminRoleFullException>(
Expand Down Expand Up @@ -1105,6 +1105,7 @@ int categoryId
adminId,
adminRoles.IsCentreAdmin,
adminRoles.IsSupervisor,
adminRoles.IsNominatedSupervisor,
adminRoles.IsTrainer,
adminRoles.IsContentCreator,
adminRoles.IsContentManager,
Expand All @@ -1125,6 +1126,7 @@ private void AssertAdminPermissionUpdateMustNotHaveHappened()
A<bool>._,
A<bool>._,
A<bool>._,
A<bool>._,
A<int>._
)
).MustNotHaveHappened();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public static AdminRegistrationModel GetDefaultCentreManagerRegistrationModel(
bool isCentreAdmin=true,
bool isCentreManager=true,
bool isSupervisor= false,
bool isNominatedSupervisor= false,
bool isTrainer= false,
bool isContentCreator= false,
bool isCmsAdmin= false,
Expand All @@ -38,6 +39,7 @@ public static AdminRegistrationModel GetDefaultCentreManagerRegistrationModel(
isCentreAdmin,
isCentreManager,
isSupervisor,
isNominatedSupervisor,
isTrainer,
isContentCreator,
isCmsAdmin,
Expand All @@ -57,6 +59,7 @@ public static AdminRegistrationModel GetDefaultAdminRegistrationModel(
bool isCentreAdmin = true,
bool isCentreManager = true,
bool isSupervisor = true,
bool isNominatedSupervisor = true,
bool isTrainer = true,
bool isContentCreator = true,
bool isCmsAdmin = true,
Expand All @@ -75,6 +78,7 @@ public static AdminRegistrationModel GetDefaultAdminRegistrationModel(
isCentreAdmin,
isCentreManager,
isSupervisor,
isNominatedSupervisor,
isTrainer,
isContentCreator,
isCmsAdmin,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ public int RegisterAdmin(AdminRegistrationModel registrationModel)
contentManager = registrationModel.IsContentManager,
importOnly = registrationModel.ImportOnly,
trainer = registrationModel.IsTrainer,
supervisor = registrationModel.IsSupervisor
supervisor = registrationModel.IsSupervisor,
nominatedSupervisor = registrationModel.IsNominatedSupervisor
};

using var transaction = new TransactionScope();
Expand All @@ -95,7 +96,8 @@ public int RegisterAdmin(AdminRegistrationModel registrationModel)
ContentManager,
ImportOnly,
Trainer,
Supervisor
Supervisor,
NominatedSupervisor
)
OUTPUT Inserted.AdminID
VALUES
Expand All @@ -114,7 +116,8 @@ OUTPUT Inserted.AdminID
@contentManager,
@importOnly,
@trainer,
@supervisor
@supervisor,
@nominatedSupervisor
)",
values
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public partial class UserDataService
ELSE cc.CategoryName
END AS CategoryName,
au.Supervisor AS IsSupervisor,
au.NominatedSupervisor AS IsNominatedSupervisor,
au.Trainer AS IsTrainer,
au.IsFrameworkDeveloper,
au.ProfileImage,
Expand Down Expand Up @@ -80,6 +81,7 @@ FROM AdminUsers AS au
ELSE cc.CategoryName
END AS CategoryName,
au.Supervisor AS IsSupervisor,
au.NominatedSupervisor AS IsNominatedSupervisor,
au.Trainer AS IsTrainer,
au.IsFrameworkDeveloper,
au.ProfileImage,
Expand Down Expand Up @@ -124,6 +126,7 @@ FROM AdminUsers AS au
ELSE cc.CategoryName
END AS CategoryName,
au.Supervisor AS IsSupervisor,
au.NominatedSupervisor AS IsNominatedSupervisor,
au.Trainer AS IsTrainer,
au.IsFrameworkDeveloper,
au.ProfileImage,
Expand Down Expand Up @@ -169,6 +172,7 @@ public List<AdminUser> GetAdminUsersByCentreId(int centreId)
ELSE cc.CategoryName
END AS CategoryName,
au.Supervisor AS IsSupervisor,
au.NominatedSupervisor AS IsNominatedSupervisor,
au.Trainer AS IsTrainer,
au.IsFrameworkDeveloper,
au.ProfileImage,
Expand Down Expand Up @@ -214,6 +218,7 @@ public void UpdateAdminUserPermissions(
int adminId,
bool isCentreAdmin,
bool isSupervisor,
bool isNominatedSupervisor,
bool isTrainer,
bool isContentCreator,
bool isContentManager,
Expand All @@ -226,6 +231,7 @@ int categoryId
SET
CentreAdmin = @isCentreAdmin,
Supervisor = @isSupervisor,
NominatedSupervisor = @isNominatedSupervisor,
Trainer = @isTrainer,
ContentCreator = @isContentCreator,
ContentManager = @isContentManager,
Expand All @@ -236,6 +242,7 @@ int categoryId
{
isCentreAdmin,
isSupervisor,
isNominatedSupervisor,
isTrainer,
isContentCreator,
isContentManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ void UpdateAdminUserPermissions(
int adminId,
bool isCentreAdmin,
bool isSupervisor,
bool isNominatedSupervisor,
bool isTrainer,
bool isContentCreator,
bool isContentManager,
Expand Down
69 changes: 35 additions & 34 deletions DigitalLearningSolutions.Data/Mappers/AdminUserMap.cs
Original file line number Diff line number Diff line change
@@ -1,34 +1,35 @@
namespace DigitalLearningSolutions.Data.Mappers
{
using Dapper.FluentMap.Mapping;
using DigitalLearningSolutions.Data.Models.User;

public class AdminUserMap : EntityMap<AdminUser>
{
public AdminUserMap()
{
// Columns derived from User abstract class
Map(adminUser => adminUser.Id).ToColumn("AdminID");
Map(adminUser => adminUser.CentreId).ToColumn("CentreID");
Map(adminUser => adminUser.CentreName).ToColumn("CentreName");
Map(adminUser => adminUser.FirstName).ToColumn("Forename");
Map(adminUser => adminUser.LastName).ToColumn("Surname");
Map(adminUser => adminUser.EmailAddress).ToColumn("Email");
Map(adminUser => adminUser.Password).ToColumn("Password");
Map(adminUser => adminUser.ResetPasswordId).ToColumn("ResetPasswordID");

// Columns specific to AdminUser class
Map(adminUser => adminUser.IsCentreAdmin).ToColumn("IsCentreAdmin");
Map(adminUser => adminUser.IsCentreManager).ToColumn("IsCentreManager");
Map(adminUser => adminUser.IsContentCreator).ToColumn("IsContentCreator");
Map(adminUser => adminUser.IsContentManager).ToColumn("IsContentManager");
Map(adminUser => adminUser.PublishToAll).ToColumn("PublishToAll");
Map(adminUser => adminUser.SummaryReports).ToColumn("SummaryReports");
Map(adminUser => adminUser.IsUserAdmin).ToColumn("IsUserAdmin");
Map(adminUser => adminUser.CategoryId).ToColumn("CategoryID");
Map(adminUser => adminUser.IsSupervisor).ToColumn("IsSupervisor");
Map(adminUser => adminUser.IsTrainer).ToColumn("IsTrainer");
Map(adminUser => adminUser.IsFrameworkDeveloper).ToColumn("IsFrameworkDeveloper");
}
}
}
namespace DigitalLearningSolutions.Data.Mappers
{
using Dapper.FluentMap.Mapping;
using DigitalLearningSolutions.Data.Models.User;

public class AdminUserMap : EntityMap<AdminUser>
{
public AdminUserMap()
{
// Columns derived from User abstract class
Map(adminUser => adminUser.Id).ToColumn("AdminID");
Map(adminUser => adminUser.CentreId).ToColumn("CentreID");
Map(adminUser => adminUser.CentreName).ToColumn("CentreName");
Map(adminUser => adminUser.FirstName).ToColumn("Forename");
Map(adminUser => adminUser.LastName).ToColumn("Surname");
Map(adminUser => adminUser.EmailAddress).ToColumn("Email");
Map(adminUser => adminUser.Password).ToColumn("Password");
Map(adminUser => adminUser.ResetPasswordId).ToColumn("ResetPasswordID");

// Columns specific to AdminUser class
Map(adminUser => adminUser.IsCentreAdmin).ToColumn("IsCentreAdmin");
Map(adminUser => adminUser.IsCentreManager).ToColumn("IsCentreManager");
Map(adminUser => adminUser.IsContentCreator).ToColumn("IsContentCreator");
Map(adminUser => adminUser.IsContentManager).ToColumn("IsContentManager");
Map(adminUser => adminUser.PublishToAll).ToColumn("PublishToAll");
Map(adminUser => adminUser.SummaryReports).ToColumn("SummaryReports");
Map(adminUser => adminUser.IsUserAdmin).ToColumn("IsUserAdmin");
Map(adminUser => adminUser.CategoryId).ToColumn("CategoryID");
Map(adminUser => adminUser.IsSupervisor).ToColumn("IsSupervisor");
Map(adminUser => adminUser.IsNominatedSupervisor).ToColumn("IsNominatedSupervisor");
Map(adminUser => adminUser.IsTrainer).ToColumn("IsTrainer");
Map(adminUser => adminUser.IsFrameworkDeveloper).ToColumn("IsFrameworkDeveloper");
}
}
}
3 changes: 3 additions & 0 deletions DigitalLearningSolutions.Data/Models/AdminRoles.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class AdminRoles
public AdminRoles(
bool isCentreAdmin,
bool isSupervisor,
bool isNominatedSupervisor,
bool isContentCreator,
bool isTrainer,
bool isContentManager,
Expand All @@ -13,6 +14,7 @@ bool importOnly
{
IsCentreAdmin = isCentreAdmin;
IsSupervisor = isSupervisor;
IsNominatedSupervisor = isNominatedSupervisor;
IsContentCreator = isContentCreator;
IsTrainer = isTrainer;
IsContentManager = isContentManager;
Expand All @@ -21,6 +23,7 @@ bool importOnly

public bool IsCentreAdmin { get; set; }
public bool IsSupervisor { get; set; }
public bool IsNominatedSupervisor { get; set; }
public bool IsTrainer { get; set; }
public bool IsContentCreator { get; set; }
public bool IsContentManager { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public CentreContractAdminUsage(Centre centreDetails, List<AdminUser> adminUsers
{
AdminCount = adminUsers.Count(a => a.IsCentreAdmin);
SupervisorCount = adminUsers.Count(a => a.IsSupervisor);
NominatedSupervisorCount = adminUsers.Count(a => a.IsNominatedSupervisor);
TrainerCount = adminUsers.Count(a => a.IsTrainer);
CmsAdministratorCount = adminUsers.Count(a => a.IsCmsAdministrator);
CmsManagerCount = adminUsers.Count(a => a.IsCmsManager);
Expand All @@ -25,6 +26,7 @@ public CentreContractAdminUsage(Centre centreDetails, List<AdminUser> adminUsers

public int AdminCount { get; set; }
public int SupervisorCount { get; set; }
public int NominatedSupervisorCount { get; set; }
public int TrainerCount { get; set; }
public int CmsAdministratorCount { get; set; }
public int CmsManagerCount { get; set; }
Expand Down
Loading