コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
        }