namespace Diligent.WebAPI.Business.Extensions { [ExcludeFromCodeCoverage] public static class SelectionProcessExtensions { public static List FilterLevels(this List query, SelectionProcessFilterDto filter) { var filteredLevels = new List(); // 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 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; } } }