public IEnumerable <Examination> AdvancedSearch(AdvancedSearchDTO advancedSearchDTO) { IEnumerable <Examination> examinations = BasicSearch(advancedSearchDTO.InitialParameters); if (examinations.Any()) { return(examinations); } IAdvancedSearchStrategy strategy = GetAdvancedSearchStrategy(advancedSearchDTO); return(ApplyStrategy(strategy)); }
private IEnumerable <Examination> ApplyStrategy(IAdvancedSearchStrategy strategy) { for (BasicSearchDTO parameters = strategy.GetSearchParameters(); parameters != null; parameters = strategy.GetSearchParameters()) { IEnumerable <Examination> availableExaminations = BasicSearch(parameters); if (availableExaminations.Any()) { return(availableExaminations); } } return(Enumerable.Empty <Examination>()); }