public void SelectFromDefaultConfigurationIfNoProviderFlagIsDetected()
        {
            _defaultSearchProviderConfigurationMock.Setup(x => x.DefaultName).Returns("provider2");

            var provider = _searchProviderSelector.Get("foo");

            provider.Provider.ProviderName.ShouldBe("provider2");
            provider.ParsedSearchText.ShouldBe("foo");
        }
Example #2
0
        public async Task <IEnumerable <SearchLegalPartyDto> > SearchAsync(SearchLegalPartyQueryDto legalPartySearchDto)
        {
            if (string.IsNullOrEmpty(legalPartySearchDto.SearchText))
            {
                throw new BadRequestException("SearchText cannot be null.");
            }

            if (legalPartySearchDto.MaxRows > _searchResultsConfiguration.MaxRows)
            {
                legalPartySearchDto.MaxRows = _searchResultsConfiguration.MaxRows;
            }

            legalPartySearchDto.SearchText = legalPartySearchDto.SearchText.Trim();

            ThrowBadRequestIfAllAreExcluded(legalPartySearchDto);

            var searchProvider = _searchProviderSelector.Get(legalPartySearchDto.SearchText);

            CacheMaxRowIfMaxRowIsValid(legalPartySearchDto.MaxRows);

            IEnumerable <SearchLegalParty> results = null;

            var isPin = IsPin(legalPartySearchDto.SearchText, new List <SearchLegalParty>());

            if (isPin)
            {
                var searchLegalPartyQueryExclusions = legalPartySearchDto.ToExclusions();

                searchLegalPartyQueryExclusions.ExcludeAddress     = true;
                searchLegalPartyQueryExclusions.ExcludeDisplayName = true;
                searchLegalPartyQueryExclusions.ExcludeAin         = false;
                searchLegalPartyQueryExclusions.ExcludePin         = false;
                searchLegalPartyQueryExclusions.ExcludeSearchAll   = true;
                searchLegalPartyQueryExclusions.ExcludeTag         = false;
                bool isActive = legalPartySearchDto.IsActive ?? true;

                results = await searchProvider.Provider
                          .SearchPinAsync(searchProvider.ParsedSearchText, searchLegalPartyQueryExclusions, isActive, legalPartySearchDto.EffectiveDate);
            }
            else
            {
                if (legalPartySearchDto.EffectiveDate.HasValue || legalPartySearchDto.IsActive.HasValue)
                {
                    results = await searchProvider.Provider.SearchAsync(
                        searchProvider.ParsedSearchText,
                        legalPartySearchDto.ToExclusions(),
                        legalPartySearchDto.IsActive,
                        legalPartySearchDto.EffectiveDate);
                }
                else
                {
                    results = await searchProvider.Provider.SearchAsync(
                        searchProvider.ParsedSearchText,
                        legalPartySearchDto.ToExclusions());
                }
            }

            results = SearchLegalParties(searchProvider.ParsedSearchText, legalPartySearchDto.ToExclusions(), legalPartySearchDto.EffectiveDate, results.ToList());

            var records = results.Select(x => x.ToDomain()).ToList();

            _logger.LogDebug($"Found {records.Count} records.");
            return(records);
        }