public new IEnumerable <TestingSearchResultItem> GetRunningTestsInAllLanguages(Item hostItem) { Assert.ArgumentNotNull(hostItem, "hostItem"); ISearchIndex testingSearchIndex = GetTestingSearchIndex(); if (testingSearchIndex == null) { return(Enumerable.Empty <Models.TestingSearchResultItem>()); } List <Models.TestingSearchResultItem> list = new List <Models.TestingSearchResultItem>(); using (IProviderSearchContext providerSearchContext = testingSearchIndex.CreateSearchContext(SearchSecurityOptions.DisableSecurityCheck)) { Expression <Func <Models.TestingSearchResultItem, bool> > first = PredicateBuilder.True <Models.TestingSearchResultItem>(); Language[] languages = hostItem.Languages; foreach (Language language in languages) { Item itemInLanguage = hostItem.Database.GetItem(hostItem.ID, language); // This is de wrong implementation because it only focusses on if the current item is the initiator/host of the test. first = first.Or((Models.TestingSearchResultItem x) => x.HostItemPartial == FieldFormattingHelper.FormatUriForSearch(itemInLanguage)); // It should focus on if the current item is subject of the actual test. string dataSourceId = itemInLanguage.ID.ToShortID().ToString().Replace("-", string.Empty); first = first.Or((Models.TestingSearchResultItem x) => x.DataSourceItemsTidy.Contains(dataSourceId)); } // Querying our new field that is TriState compatible first = first.And((Models.TestingSearchResultItem x) => x.IsRunningString == "1"); list.AddRange(providerSearchContext.GetQueryable <Models.TestingSearchResultItem>().Where(first).ToArray()); return(list); } }
protected Expression <Func <Models.TestingSearchResultItem, bool> > AddDefaultSearchCriteria(Expression <Func <Models.TestingSearchResultItem, bool> > predicate) { Expression <Func <Models.TestingSearchResultItem, bool> > expression = predicate; if (!string.IsNullOrEmpty(Owner)) { expression = expression.And((Models.TestingSearchResultItem x) => x.Owner == FormattingHelper.GetCompactUserName(Owner)); } if (HostItem != null) { expression = expression.And((Models.TestingSearchResultItem x) => x.HostItemPartial == FieldFormattingHelper.FormatUriForSearch(HostItem)); } if (!string.IsNullOrEmpty(SearchText)) { expression = expression.And((Models.TestingSearchResultItem x) => x.SearchText.Contains(SearchText)); } if (TestUri != null) { expression = expression.And((Models.TestingSearchResultItem x) => x.Uri == TestUri); } if (!ID.IsNullOrEmpty(DeviceId)) { expression = expression.And((Models.TestingSearchResultItem x) => x.DeviceId == DeviceId); } return(expression); }