From 6e844ccab21d73f49c481651860c67f1f1e6408a Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Tue, 26 Nov 2024 11:09:04 +0000 Subject: [PATCH 1/7] TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted --- .../DataServices/CourseDataService.cs | 1 + .../Helpers/FilteringHelper.cs | 27 +++++++++++++++++++ .../Models/Courses/Customisation.cs | 1 + .../Delegates/ActivityDelegatesController.cs | 5 ++-- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs index 9f0ab58aec..57b4c69f33 100644 --- a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs @@ -2040,6 +2040,7 @@ public bool IsSelfEnrollmentAllowed(int customisationId) ,DiagObjSelect ,HideInLearnerPortal ,NotificationEmails + ,Q1Options FROM Customisations WHERE CustomisationID = @customisationID ", new { customisationId }).FirstOrDefault(); diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index 4ea7ae9ebe..5c8d46f864 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -66,7 +66,34 @@ public static string BuildFilterValueString(string group, string propertyName, s ? defaultFilterValue : AddNewFilterToFilterString(existingFilterString, newFilterToAdd); } + public static string? GetFilterString( + string? existingFilterString, + string? newFilterToAdd, + bool clearFilters, + HttpRequest request, + string cookieName, + string? q1Options, + string? defaultFilterValue = null + ) + { + var cookieHasBeenSet = request.Cookies.ContainsKey(cookieName); + var noFiltersInQueryParams = existingFilterString == null && newFilterToAdd == null; + var cookieValue = request.Cookies[cookieName]; + if ((clearFilters) || (q1Options == null && cookieValue != null && cookieValue.Contains("Answer1|Not Allowed") || + (cookieValue != null && cookieValue.Contains("Answer1|Allowed")))) + { + return null; + } + + if (cookieHasBeenSet && noFiltersInQueryParams) + { + return request.Cookies[cookieName] == EmptyFiltersCookieValue ? null : request.Cookies[cookieName]; + } + return noFiltersInQueryParams + ? defaultFilterValue + : AddNewFilterToFilterString(existingFilterString, newFilterToAdd); + } public static string? GetCategoryAndTopicFilterString( string? categoryFilterString, string? topicFilterString diff --git a/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs b/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs index 1ae49eb751..4669eb1bf2 100644 --- a/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs +++ b/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs @@ -43,6 +43,7 @@ public Customisation( public string? NotificationEmails { get; set; } public int CustomisationId { get; set; } public bool Active { get; set; } + public string? Q1Options { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs index bfa04cd271..d9f73cdf3e 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs @@ -95,13 +95,14 @@ public IActionResult Index( sortBy ??= DefaultSortByOptions.Name.PropertyName; sortDirection ??= GenericSortingHelper.Ascending; - - existingFilterString = FilteringHelper.GetFilterString( + var course = courseService.GetCourse(customisationId.Value); + existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, filterCookieName, + course.Q1Options, CourseDelegateAccountStatusFilterOptions.Active.FilterValue ); From 4a6a4275f333f015a0e26ee8e2e6962a24d4520f Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Tue, 26 Nov 2024 11:48:27 +0000 Subject: [PATCH 2/7] TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted --- .../DataServices/CourseDataService.cs | 4 ++-- .../TrackingSystem/Delegates/ActivityDelegatesController.cs | 2 +- DigitalLearningSolutions.Web/Services/CourseService.cs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs index 57b4c69f33..05e16e389a 100644 --- a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs @@ -139,7 +139,7 @@ int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int sup public IEnumerable GetDelegateAssessmentStatisticsAtCentre(string searchString, int centreId, string categoryName, string isActive, int? categoryId); bool IsSelfEnrollmentAllowed(int customisationId); - Customisation? GetCourse(int customisationId); + Customisation? GetCourse(int? customisationId); } public class CourseDataService : ICourseDataService @@ -2024,7 +2024,7 @@ public bool IsSelfEnrollmentAllowed(int customisationId) return selfRegister > 0; } - public Customisation? GetCourse(int customisationId) + public Customisation? GetCourse(int? customisationId) { return connection.Query( @"SELECT CustomisationID diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs index d9f73cdf3e..a637d4c687 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs @@ -95,7 +95,7 @@ public IActionResult Index( sortBy ??= DefaultSortByOptions.Name.PropertyName; sortDirection ??= GenericSortingHelper.Ascending; - var course = courseService.GetCourse(customisationId.Value); + var course = courseService.GetCourse(customisationId); existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, diff --git a/DigitalLearningSolutions.Web/Services/CourseService.cs b/DigitalLearningSolutions.Web/Services/CourseService.cs index 9c255baf2e..530d34c22c 100644 --- a/DigitalLearningSolutions.Web/Services/CourseService.cs +++ b/DigitalLearningSolutions.Web/Services/CourseService.cs @@ -134,7 +134,7 @@ int diagCompletionThreshold int GetNumberOfActiveCoursesAtCentreFilteredByCategory(int centreId, int? categoryId); public IEnumerable GetApplicationsAvailableToCentre(int centreId); bool IsSelfEnrollmentAllowed(int customisationId); - Customisation? GetCourse(int customisationId); + Customisation? GetCourse(int? customisationId); } public class CourseService : ICourseService @@ -632,7 +632,7 @@ public bool IsSelfEnrollmentAllowed(int customisationId) return courseDataService.IsSelfEnrollmentAllowed(customisationId); } - public Customisation? GetCourse(int customisationId) + public Customisation? GetCourse(int? customisationId) { return courseDataService.GetCourse(customisationId); } From 70c2531d93a633fa2f931843e23c312c80a0e446 Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Mon, 2 Dec 2024 09:54:09 +0000 Subject: [PATCH 3/7] TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted --- .../DataServices/CourseDataService.cs | 1 - .../Helpers/FilteringHelper.cs | 59 ++++++++++--------- .../Models/Courses/Customisation.cs | 1 - .../Delegates/ActivityDelegatesController.cs | 4 +- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs index 05e16e389a..df086021b6 100644 --- a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs @@ -2040,7 +2040,6 @@ public bool IsSelfEnrollmentAllowed(int customisationId) ,DiagObjSelect ,HideInLearnerPortal ,NotificationEmails - ,Q1Options FROM Customisations WHERE CustomisationID = @customisationID ", new { customisationId }).FirstOrDefault(); diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index 5c8d46f864..11a99843b3 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -66,35 +66,7 @@ public static string BuildFilterValueString(string group, string propertyName, s ? defaultFilterValue : AddNewFilterToFilterString(existingFilterString, newFilterToAdd); } - public static string? GetFilterString( - string? existingFilterString, - string? newFilterToAdd, - bool clearFilters, - HttpRequest request, - string cookieName, - string? q1Options, - string? defaultFilterValue = null - ) - { - var cookieHasBeenSet = request.Cookies.ContainsKey(cookieName); - var noFiltersInQueryParams = existingFilterString == null && newFilterToAdd == null; - var cookieValue = request.Cookies[cookieName]; - if ((clearFilters) || (q1Options == null && cookieValue != null && cookieValue.Contains("Answer1|Not Allowed") || - (cookieValue != null && cookieValue.Contains("Answer1|Allowed")))) - { - return null; - } - - if (cookieHasBeenSet && noFiltersInQueryParams) - { - return request.Cookies[cookieName] == EmptyFiltersCookieValue ? null : request.Cookies[cookieName]; - } - - return noFiltersInQueryParams - ? defaultFilterValue - : AddNewFilterToFilterString(existingFilterString, newFilterToAdd); - } - public static string? GetCategoryAndTopicFilterString( + public static string? GetCategoryAndTopicFilterString( string? categoryFilterString, string? topicFilterString ) @@ -195,7 +167,36 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin : answer; return BuildFilterValueString(group, group.Split('(')[0], propertyValue); } + public static string? CheckIfFilterisValid(bool clearFilters, string existingFilterString, string newFilterToAdd, IEnumerable availableFilters, HttpRequest request, + string cookieName, HttpResponse response) + { + if (!request.Cookies.ContainsKey(cookieName) || string.IsNullOrEmpty(request.Cookies[cookieName]) || clearFilters) + return null; + + var cookieValue = request.Cookies[cookieName]; + if (string.IsNullOrEmpty(cookieValue) || cookieValue == EmptyFiltersCookieValue) + { + return existingFilterString; + } + var existingFilters = cookieValue.Split('╡'); + var validFilterValues = availableFilters + .SelectMany(filter => filter.FilterOptions) + .Select(option => option.FilterValue) + .ToHashSet(); + + var filteredResults = existingFilters + .Where(entry => IsFilterInvalid(entry, validFilterValues)) + .ToList(); + var newCookieValue = string.Join("╡", filteredResults); + if (string.IsNullOrEmpty(newCookieValue)) return null; + return AddNewFilterToFilterString(newCookieValue, newFilterToAdd); + } + private static bool IsFilterInvalid(string filterEntry, HashSet validFilterValues) + { + if (validFilterValues.Contains(filterEntry)) return true; + return false; + } private static IEnumerable GetFilterOptionsForPromptWithOptions(Prompt prompt) { var group = GetFilterGroupForPrompt(prompt); diff --git a/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs b/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs index 4669eb1bf2..1ae49eb751 100644 --- a/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs +++ b/DigitalLearningSolutions.Data/Models/Courses/Customisation.cs @@ -43,7 +43,6 @@ public Customisation( public string? NotificationEmails { get; set; } public int CustomisationId { get; set; } public bool Active { get; set; } - public string? Q1Options { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs index a637d4c687..270b6f9738 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs @@ -95,14 +95,12 @@ public IActionResult Index( sortBy ??= DefaultSortByOptions.Name.PropertyName; sortDirection ??= GenericSortingHelper.Ascending; - var course = courseService.GetCourse(customisationId); existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, filterCookieName, - course.Q1Options, CourseDelegateAccountStatusFilterOptions.Active.FilterValue ); @@ -277,7 +275,7 @@ public IActionResult Index( var activityName = isCourseDelegate ? courseService.GetCourseNameAndApplication((int)customisationId).CourseName : selfAssessmentService.GetSelfAssessmentNameById((int)selfAssessmentId); - + existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response); if (isCourseDelegate) { var result = paginateService.Paginate( From eafb99bd754b323d0de69da1f19ad24ac85039c8 Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Mon, 2 Dec 2024 11:03:27 +0000 Subject: [PATCH 4/7] TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted --- DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs | 4 +--- .../TrackingSystem/Delegates/ActivityDelegatesController.cs | 5 ++++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index 11a99843b3..f24435e919 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -170,9 +170,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin public static string? CheckIfFilterisValid(bool clearFilters, string existingFilterString, string newFilterToAdd, IEnumerable availableFilters, HttpRequest request, string cookieName, HttpResponse response) { - if (!request.Cookies.ContainsKey(cookieName) || string.IsNullOrEmpty(request.Cookies[cookieName]) || clearFilters) - return null; - + var cookieValue = request.Cookies[cookieName]; if (string.IsNullOrEmpty(cookieValue) || cookieValue == EmptyFiltersCookieValue) { diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs index 270b6f9738..0bf52f1a11 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs @@ -275,7 +275,10 @@ public IActionResult Index( var activityName = isCourseDelegate ? courseService.GetCourseNameAndApplication((int)customisationId).CourseName : selfAssessmentService.GetSelfAssessmentNameById((int)selfAssessmentId); - existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response); + if (!string.IsNullOrEmpty(existingFilterString)) + { + existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response); + } if (isCourseDelegate) { var result = paginateService.Paginate( From 198b22287ba4e5fa0d23dc57b2031d5ca2b37026 Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Mon, 2 Dec 2024 11:04:57 +0000 Subject: [PATCH 5/7] TD-4893 Delegate activities - view course delegates resulted in 500 error when course admin field applied filters got deleted --- DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index f24435e919..adf4c3a89e 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -170,7 +170,6 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin public static string? CheckIfFilterisValid(bool clearFilters, string existingFilterString, string newFilterToAdd, IEnumerable availableFilters, HttpRequest request, string cookieName, HttpResponse response) { - var cookieValue = request.Cookies[cookieName]; if (string.IsNullOrEmpty(cookieValue) || cookieValue == EmptyFiltersCookieValue) { From b8e3b4317b896c3cc2cb4b5fafc8d5905e6c8e2e Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Mon, 2 Dec 2024 17:26:44 +0000 Subject: [PATCH 6/7] TD-4893 Remove filter duplicate --- .../Helpers/FilteringHelper.cs | 32 +++++++++++++++++-- .../Delegates/ActivityDelegatesController.cs | 23 ++----------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index adf4c3a89e..8a660c4acb 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -167,8 +167,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin : answer; return BuildFilterValueString(group, group.Split('(')[0], propertyValue); } - public static string? CheckIfFilterisValid(bool clearFilters, string existingFilterString, string newFilterToAdd, IEnumerable availableFilters, HttpRequest request, - string cookieName, HttpResponse response) + public static string? GetValidFilters(string existingFilterString, string newFilterToAdd, IEnumerable availableFilters, HttpRequest request, string cookieName) { var cookieValue = request.Cookies[cookieName]; if (string.IsNullOrEmpty(cookieValue) || cookieValue == EmptyFiltersCookieValue) @@ -186,7 +185,8 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin .ToList(); var newCookieValue = string.Join("╡", filteredResults); if (string.IsNullOrEmpty(newCookieValue)) return null; - return AddNewFilterToFilterString(newCookieValue, newFilterToAdd); + newCookieValue = AddNewFilterToFilterString(newCookieValue, newFilterToAdd); + return RemoveDuplicateFilters( newFilterToAdd, newCookieValue); } private static bool IsFilterInvalid(string filterEntry, HashSet validFilterValues) @@ -194,6 +194,32 @@ private static bool IsFilterInvalid(string filterEntry, HashSet validFi if (validFilterValues.Contains(filterEntry)) return true; return false; } + public static string RemoveDuplicateFilters(string newFilterToAdd, string? existingFilterString) + { + if (string.IsNullOrEmpty(existingFilterString)) + { + return existingFilterString ?? string.Empty; + } + var selectedFilters = existingFilterString.Split(FilteringHelper.FilterSeparator).ToList(); + if (!string.IsNullOrEmpty(newFilterToAdd)) + { + var filterHeader = newFilterToAdd.Split(FilteringHelper.Separator)[0]; + var dupfilters = selectedFilters.Where(x => x.Contains(filterHeader)); + if (dupfilters.Count() > 1) + { + foreach (var filter in selectedFilters) + { + if (filter.Contains(filterHeader)) + { + selectedFilters.Remove(filter); + existingFilterString = string.Join(FilteringHelper.FilterSeparator, selectedFilters); + break; + } + } + } + } + return existingFilterString; + } private static IEnumerable GetFilterOptionsForPromptWithOptions(Prompt prompt) { var group = GetFilterGroupForPrompt(prompt); diff --git a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs index 0bf52f1a11..eea76c00d7 100644 --- a/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs +++ b/DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ActivityDelegatesController.cs @@ -141,25 +141,7 @@ public IActionResult Index( if (!string.IsNullOrEmpty(existingFilterString)) { var selectedFilters = existingFilterString.Split(FilteringHelper.FilterSeparator).ToList(); - - if (!string.IsNullOrEmpty(newFilterToAdd)) - { - var filterHeader = newFilterToAdd.Split(FilteringHelper.Separator)[0]; - var dupfilters = selectedFilters.Where(x => x.Contains(filterHeader)); - if (dupfilters.Count() > 1) - { - foreach (var filter in selectedFilters) - { - if (filter.Contains(filterHeader)) - { - selectedFilters.Remove(filter); - existingFilterString = string.Join(FilteringHelper.FilterSeparator, selectedFilters); - break; - } - } - } - } - + existingFilterString = FilteringHelper.RemoveDuplicateFilters(newFilterToAdd, existingFilterString); if (selectedFilters.Count > 0) { foreach (var filter in selectedFilters) @@ -277,7 +259,7 @@ public IActionResult Index( : selfAssessmentService.GetSelfAssessmentNameById((int)selfAssessmentId); if (!string.IsNullOrEmpty(existingFilterString)) { - existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response); + existingFilterString = FilteringHelper.GetValidFilters( existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName); } if (isCourseDelegate) { @@ -593,6 +575,7 @@ DelegateAccessRoute accessedVia return RedirectToAction("Index", "ActivityDelegates", routeData, returnPageQuery.Value.ItemIdToReturnTo); } } + } } From 01bde99fe21d18015c6122fe7eb54ce6348e2bc6 Mon Sep 17 00:00:00 2001 From: Sherif Olaboye Date: Tue, 3 Dec 2024 11:25:42 +0000 Subject: [PATCH 7/7] TD-4893 Replacing the FilterSeparator --- DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs index 8a660c4acb..a806df3f5d 100644 --- a/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs +++ b/DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs @@ -174,7 +174,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin { return existingFilterString; } - var existingFilters = cookieValue.Split('╡'); + var existingFilters = cookieValue.Split(FilterSeparator); var validFilterValues = availableFilters .SelectMany(filter => filter.FilterOptions) .Select(option => option.FilterValue) @@ -183,7 +183,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin var filteredResults = existingFilters .Where(entry => IsFilterInvalid(entry, validFilterValues)) .ToList(); - var newCookieValue = string.Join("╡", filteredResults); + var newCookieValue = string.Join(FilterSeparator, filteredResults); if (string.IsNullOrEmpty(newCookieValue)) return null; newCookieValue = AddNewFilterToFilterString(newCookieValue, newFilterToAdd); return RemoveDuplicateFilters( newFilterToAdd, newCookieValue);