Skip to content

Commit 6e844cc

Browse files
TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted
1 parent 980b9c7 commit 6e844cc

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

DigitalLearningSolutions.Data/DataServices/CourseDataService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2040,6 +2040,7 @@ public bool IsSelfEnrollmentAllowed(int customisationId)
20402040
,DiagObjSelect
20412041
,HideInLearnerPortal
20422042
,NotificationEmails
2043+
,Q1Options
20432044
FROM Customisations
20442045
WHERE CustomisationID = @customisationID ",
20452046
new { customisationId }).FirstOrDefault();

DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,34 @@ public static string BuildFilterValueString(string group, string propertyName, s
6666
? defaultFilterValue
6767
: AddNewFilterToFilterString(existingFilterString, newFilterToAdd);
6868
}
69+
public static string? GetFilterString(
70+
string? existingFilterString,
71+
string? newFilterToAdd,
72+
bool clearFilters,
73+
HttpRequest request,
74+
string cookieName,
75+
string? q1Options,
76+
string? defaultFilterValue = null
77+
)
78+
{
79+
var cookieHasBeenSet = request.Cookies.ContainsKey(cookieName);
80+
var noFiltersInQueryParams = existingFilterString == null && newFilterToAdd == null;
81+
var cookieValue = request.Cookies[cookieName];
82+
if ((clearFilters) || (q1Options == null && cookieValue != null && cookieValue.Contains("Answer1|Not Allowed") ||
83+
(cookieValue != null && cookieValue.Contains("Answer1|Allowed"))))
84+
{
85+
return null;
86+
}
87+
88+
if (cookieHasBeenSet && noFiltersInQueryParams)
89+
{
90+
return request.Cookies[cookieName] == EmptyFiltersCookieValue ? null : request.Cookies[cookieName];
91+
}
6992

93+
return noFiltersInQueryParams
94+
? defaultFilterValue
95+
: AddNewFilterToFilterString(existingFilterString, newFilterToAdd);
96+
}
7097
public static string? GetCategoryAndTopicFilterString(
7198
string? categoryFilterString,
7299
string? topicFilterString

DigitalLearningSolutions.Data/Models/Courses/Customisation.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public Customisation(
4343
public string? NotificationEmails { get; set; }
4444
public int CustomisationId { get; set; }
4545
public bool Active { get; set; }
46+
public string? Q1Options { get; set; }
4647

4748
}
4849
}

DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,14 @@ public IActionResult Index(
9595

9696
sortBy ??= DefaultSortByOptions.Name.PropertyName;
9797
sortDirection ??= GenericSortingHelper.Ascending;
98-
99-
existingFilterString = FilteringHelper.GetFilterString(
98+
var course = courseService.GetCourse(customisationId.Value);
99+
existingFilterString = FilteringHelper.GetFilterString(
100100
existingFilterString,
101101
newFilterToAdd,
102102
clearFilters,
103103
Request,
104104
filterCookieName,
105+
course.Q1Options,
105106
CourseDelegateAccountStatusFilterOptions.Active.FilterValue
106107
);
107108

0 commit comments

Comments
 (0)