Skip to content

Commit b8e3b43

Browse files
TD-4893 Remove filter duplicate
1 parent 198b222 commit b8e3b43

File tree

2 files changed

+32
-23
lines changed

2 files changed

+32
-23
lines changed

DigitalLearningSolutions.Data/Helpers/FilteringHelper.cs

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin
167167
: answer;
168168
return BuildFilterValueString(group, group.Split('(')[0], propertyValue);
169169
}
170-
public static string? CheckIfFilterisValid(bool clearFilters, string existingFilterString, string newFilterToAdd, IEnumerable<FilterModel> availableFilters, HttpRequest request,
171-
string cookieName, HttpResponse response)
170+
public static string? GetValidFilters(string existingFilterString, string newFilterToAdd, IEnumerable<FilterModel> availableFilters, HttpRequest request, string cookieName)
172171
{
173172
var cookieValue = request.Cookies[cookieName];
174173
if (string.IsNullOrEmpty(cookieValue) || cookieValue == EmptyFiltersCookieValue)
@@ -186,14 +185,41 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin
186185
.ToList();
187186
var newCookieValue = string.Join("╡", filteredResults);
188187
if (string.IsNullOrEmpty(newCookieValue)) return null;
189-
return AddNewFilterToFilterString(newCookieValue, newFilterToAdd);
188+
newCookieValue = AddNewFilterToFilterString(newCookieValue, newFilterToAdd);
189+
return RemoveDuplicateFilters( newFilterToAdd, newCookieValue);
190190
}
191191

192192
private static bool IsFilterInvalid(string filterEntry, HashSet<string> validFilterValues)
193193
{
194194
if (validFilterValues.Contains(filterEntry)) return true;
195195
return false;
196196
}
197+
public static string RemoveDuplicateFilters(string newFilterToAdd, string? existingFilterString)
198+
{
199+
if (string.IsNullOrEmpty(existingFilterString))
200+
{
201+
return existingFilterString ?? string.Empty;
202+
}
203+
var selectedFilters = existingFilterString.Split(FilteringHelper.FilterSeparator).ToList();
204+
if (!string.IsNullOrEmpty(newFilterToAdd))
205+
{
206+
var filterHeader = newFilterToAdd.Split(FilteringHelper.Separator)[0];
207+
var dupfilters = selectedFilters.Where(x => x.Contains(filterHeader));
208+
if (dupfilters.Count() > 1)
209+
{
210+
foreach (var filter in selectedFilters)
211+
{
212+
if (filter.Contains(filterHeader))
213+
{
214+
selectedFilters.Remove(filter);
215+
existingFilterString = string.Join(FilteringHelper.FilterSeparator, selectedFilters);
216+
break;
217+
}
218+
}
219+
}
220+
}
221+
return existingFilterString;
222+
}
197223
private static IEnumerable<FilterOptionModel> GetFilterOptionsForPromptWithOptions(Prompt prompt)
198224
{
199225
var group = GetFilterGroupForPrompt(prompt);

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

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -141,25 +141,7 @@ public IActionResult Index(
141141
if (!string.IsNullOrEmpty(existingFilterString))
142142
{
143143
var selectedFilters = existingFilterString.Split(FilteringHelper.FilterSeparator).ToList();
144-
145-
if (!string.IsNullOrEmpty(newFilterToAdd))
146-
{
147-
var filterHeader = newFilterToAdd.Split(FilteringHelper.Separator)[0];
148-
var dupfilters = selectedFilters.Where(x => x.Contains(filterHeader));
149-
if (dupfilters.Count() > 1)
150-
{
151-
foreach (var filter in selectedFilters)
152-
{
153-
if (filter.Contains(filterHeader))
154-
{
155-
selectedFilters.Remove(filter);
156-
existingFilterString = string.Join(FilteringHelper.FilterSeparator, selectedFilters);
157-
break;
158-
}
159-
}
160-
}
161-
}
162-
144+
existingFilterString = FilteringHelper.RemoveDuplicateFilters(newFilterToAdd, existingFilterString);
163145
if (selectedFilters.Count > 0)
164146
{
165147
foreach (var filter in selectedFilters)
@@ -277,7 +259,7 @@ public IActionResult Index(
277259
: selfAssessmentService.GetSelfAssessmentNameById((int)selfAssessmentId);
278260
if (!string.IsNullOrEmpty(existingFilterString))
279261
{
280-
existingFilterString = FilteringHelper.CheckIfFilterisValid(clearFilters, existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName, Response);
262+
existingFilterString = FilteringHelper.GetValidFilters( existingFilterString, newFilterToAdd, availableFilters, Request, filterCookieName);
281263
}
282264
if (isCourseDelegate)
283265
{
@@ -593,6 +575,7 @@ DelegateAccessRoute accessedVia
593575
return RedirectToAction("Index", "ActivityDelegates", routeData, returnPageQuery.Value.ItemIdToReturnTo);
594576
}
595577
}
578+
596579
}
597580
}
598581

0 commit comments

Comments
 (0)