Skip to content

Commit 6868890

Browse files
authored
Merge pull request #2101 from TechnologyEnhancedLearning/Develop/Feature/TD-989_SuperAdminCentreRoleLimitFixes
TD-989_SuperAdminCentreRoleLimitFixes
2 parents ac4f07d + 8430ebc commit 6868890

File tree

3 files changed

+43
-20
lines changed

3 files changed

+43
-20
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ public void CentreRoleLimits_route_loads_existing_role_limits_with_derived_flags
110110
var expectedVm = new CentreRoleLimitsViewModel
111111
{
112112
CentreId = 374,
113-
RoleLimitCmsAdministrators = 0,
113+
RoleLimitCmsAdministrators = null,
114114
IsRoleLimitSetCmsAdministrators = false, // automatically set off
115-
RoleLimitCmsManagers = 0,
115+
RoleLimitCmsManagers = null,
116116
IsRoleLimitSetCmsManagers = false, // automatically set off
117117
IsRoleLimitSetContentCreatorLicences = true,
118118
RoleLimitContentCreatorLicences = 10,

DigitalLearningSolutions.Web/Controllers/SuperAdmin/Centres/CentresController.cs

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -360,32 +360,60 @@ public IActionResult CentreRoleLimits(int centreId = 0)
360360
[Route("SuperAdmin/Centres/{centreId=0:int}/CentreRoleLimits")]
361361
public IActionResult EditCentreRoleLimits(CentreRoleLimitsViewModel model)
362362
{
363-
if (!ModelState.IsValid)
363+
if (model.IsRoleLimitSetCmsAdministrators && model.RoleLimitCmsAdministrators == null)
364364
{
365-
return View("CentreRoleLimits", model);
365+
ModelState["RoleLimitCmsAdministrators.RoleLimitCmsAdministrators"]?.Errors.Clear();
366366
}
367-
368-
if (!(model.IsRoleLimitSetCmsAdministrators))
367+
if (!model.IsRoleLimitSetCmsAdministrators)
369368
{
370369
model.RoleLimitCmsAdministrators = -1;
371370
}
371+
model.RoleLimitCmsAdministrators ??= -1;
372372

373-
if (!(model.IsRoleLimitSetCmsManagers))
373+
if (model.IsRoleLimitSetCmsManagers && model.RoleLimitCmsManagers == null)
374+
{
375+
ModelState["RoleLimitCmsManagers.RoleLimitCmsManagers"]?.Errors.Clear();
376+
}
377+
if (!model.IsRoleLimitSetCmsManagers)
374378
{
375379
model.RoleLimitCmsManagers = -1;
376380
}
377-
if (!(model.IsRoleLimitSetContentCreatorLicences))
381+
model.RoleLimitCmsManagers ??= -1;
382+
383+
if (model.IsRoleLimitSetContentCreatorLicences && model.RoleLimitContentCreatorLicences == null)
384+
{
385+
ModelState["RoleLimitContentCreatorLicences.RoleLimitContentCreatorLicences"]?.Errors.Clear();
386+
}
387+
if (!model.IsRoleLimitSetContentCreatorLicences)
378388
{
379389
model.RoleLimitContentCreatorLicences = -1;
380390
}
381-
if (!(model.IsRoleLimitSetCustomCourses))
391+
model.RoleLimitContentCreatorLicences ??= -1;
392+
393+
if (model.IsRoleLimitSetCustomCourses && model.RoleLimitCustomCourses == null)
394+
{
395+
ModelState["RoleLimitCustomCourses.RoleLimitCustomCourses"]?.Errors.Clear();
396+
}
397+
if (!model.IsRoleLimitSetCustomCourses)
382398
{
383399
model.RoleLimitCustomCourses = -1;
384400
}
385-
if (!(model.IsRoleLimitSetTrainers))
401+
model.RoleLimitCustomCourses ??= -1;
402+
403+
if (model.IsRoleLimitSetTrainers && model.RoleLimitTrainers == null)
404+
{
405+
ModelState["RoleLimitTrainers.RoleLimitTrainers"]?.Errors.Clear();
406+
}
407+
if (!model.IsRoleLimitSetTrainers)
386408
{
387409
model.RoleLimitTrainers = -1;
388410
}
411+
model.RoleLimitTrainers ??= -1;
412+
413+
if (!ModelState.IsValid)
414+
{
415+
return View("CentreRoleLimits", model);
416+
}
389417

390418
centresDataService.UpdateCentreRoleLimits(
391419
model.CentreId,

DigitalLearningSolutions.Web/ViewModels/SuperAdmin/Centres/CentreRoleLimitsViewModel.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,24 +11,19 @@ public class CentreRoleLimitsViewModel
1111
public bool IsRoleLimitSetCustomCourses { get; set; }
1212
public bool IsRoleLimitSetTrainers { get; set; }
1313

14-
[Required(ErrorMessage = "Please enter a number for the CMS Administrators role limit.")]
1514
[Range(-1, int.MaxValue, ErrorMessage = "The role limit must be a non-negative whole number.")]
16-
public int RoleLimitCmsAdministrators { get; set; }
15+
public int? RoleLimitCmsAdministrators { get; set; }
1716

18-
[Required(ErrorMessage = "Please enter a number for the CMS Managers role limit.")]
1917
[Range(-1, int.MaxValue, ErrorMessage = "The role limit must be a non-negative whole number.")]
20-
public int RoleLimitCmsManagers { get; set; }
18+
public int? RoleLimitCmsManagers { get; set; }
2119

22-
[Required(ErrorMessage = "Please enter a number for the Content Creator Licences role limit.")]
2320
[Range(-1, int.MaxValue, ErrorMessage = "The role limit must be a non-negative whole number.")]
24-
public int RoleLimitContentCreatorLicences { get; set; }
21+
public int? RoleLimitContentCreatorLicences { get; set; }
2522

26-
[Required(ErrorMessage = "Please enter a number for the Custom Courses role limit.")]
2723
[Range(-1, int.MaxValue, ErrorMessage = "The role limit must be a non-negative whole number.")]
28-
public int RoleLimitCustomCourses { get; set; }
24+
public int? RoleLimitCustomCourses { get; set; }
2925

30-
[Required(ErrorMessage = "Please enter a number for the Trainers role limit.")]
3126
[Range(-1, int.MaxValue, ErrorMessage = "The role limit must be a non-negative whole number.")]
32-
public int RoleLimitTrainers { get; set; }
27+
public int? RoleLimitTrainers { get; set; }
3328
}
3429
}

0 commit comments

Comments
 (0)