Skip to content
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int sup
public IEnumerable<DelegateAssessmentStatistics> 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
Expand Down Expand Up @@ -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<Customisation>(
@"SELECT CustomisationID
Expand Down
29 changes: 27 additions & 2 deletions DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ public static string BuildFilterValueString(string group, string propertyName, s
? defaultFilterValue
: AddNewFilterToFilterString(existingFilterString, newFilterToAdd);
}

public static string? GetCategoryAndTopicFilterString(
public static string? GetCategoryAndTopicFilterString(
string? categoryFilterString,
string? topicFilterString
)
Expand Down Expand Up @@ -168,7 +167,33 @@ 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<FilterModel> availableFilters, HttpRequest request,
string cookieName, HttpResponse response)
{
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<string> validFilterValues)
{
if (validFilterValues.Contains(filterEntry)) return true;
return false;
}
private static IEnumerable<FilterOptionModel> GetFilterOptionsForPromptWithOptions(Prompt prompt)
{
var group = GetFilterGroupForPrompt(prompt);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ public IActionResult Index(

sortBy ??= DefaultSortByOptions.Name.PropertyName;
sortDirection ??= GenericSortingHelper.Ascending;

existingFilterString = FilteringHelper.GetFilterString(
existingFilterString = FilteringHelper.GetFilterString(
existingFilterString,
newFilterToAdd,
clearFilters,
Expand Down Expand Up @@ -276,7 +275,10 @@ public IActionResult Index(
var activityName = isCourseDelegate
? courseService.GetCourseNameAndApplication((int)customisationId).CourseName
: selfAssessmentService.GetSelfAssessmentNameById((int)selfAssessmentId);

if (!string.IsNullOrEmpty(existingFilterString))
{
existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response);
}
if (isCourseDelegate)
{
var result = paginateService.Paginate(
Expand Down
4 changes: 2 additions & 2 deletions DigitalLearningSolutions.Web/Services/CourseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ int diagCompletionThreshold
int GetNumberOfActiveCoursesAtCentreFilteredByCategory(int centreId, int? categoryId);
public IEnumerable<Course> GetApplicationsAvailableToCentre(int centreId);
bool IsSelfEnrollmentAllowed(int customisationId);
Customisation? GetCourse(int customisationId);
Customisation? GetCourse(int? customisationId);
}

public class CourseService : ICourseService
Expand Down Expand Up @@ -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);
}
Expand Down
Loading