|
1234567891011121314151617181920212223242526272829303132333435363738 |
- namespace Diligent.WebAPI.Business.Extensions
- {
- [ExcludeFromCodeCoverage]
- public static class SelectionProcessExtensions
- {
- public static List<SelectionLevel> FilterLevels(this List<SelectionLevel> query, SelectionProcessFilterDto filter)
- {
- var filteredLevels = new List<SelectionLevel>();
- // If filters are empty
- if ((filter == null) || (!filter.DateStart.HasValue && !filter.DateEnd.HasValue && filter.Statuses != null && filter.Statuses.Length == 0))
- return query;
-
- foreach (var level in query)
- {
- List<SelectionProcess> selectionProcesses = level.SelectionProcesses;
- if (filter.DateStart.HasValue)
- {
- selectionProcesses = level.SelectionProcesses.Where(sp => sp.Date >= filter.DateStart.Value).ToList();
- }
-
- if (filter.DateEnd.HasValue)
- {
- selectionProcesses = selectionProcesses.Where(sp => sp.Date <= filter.DateEnd.Value).ToList();
- }
-
- var filteredLevel = new SelectionLevel { Id = level.Id, Name = level.Name, SelectionProcesses = level.SelectionProcesses};
-
- if(filter.Statuses != null && filter.Statuses.Length > 0) {
- filteredLevel.SelectionProcesses = selectionProcesses.Where(f => filter.Statuses.Contains(f.Status)).ToList();
- }
-
- filteredLevels.Add(filteredLevel);
- }
-
- return filteredLevels;
- }
- }
- }
|