42 lines
1.3 KiB
C#
42 lines
1.3 KiB
C#
namespace LaaProduction.Search
|
|
{
|
|
using LaaProduction.Search.Data.Interfaces;
|
|
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
public class SearchManager : ISearchManager
|
|
{
|
|
private readonly IWildcardRepository wildcardRepository;
|
|
|
|
public SearchManager(IWildcardRepository wildcardRepository)
|
|
=> this.wildcardRepository = wildcardRepository;
|
|
|
|
public IEnumerable<IDictionary<String, Object>> SearchWildcard(String token, IEnumerable<String> selectedFields)
|
|
{
|
|
if (String.IsNullOrWhiteSpace(token))
|
|
{
|
|
return Array.Empty<IDictionary<String, Object>>();
|
|
}
|
|
|
|
token = token.Replace(" ", String.Empty).Trim();
|
|
selectedFields = selectedFields ?? Array.Empty<String>();
|
|
|
|
if (selectedFields.Any())
|
|
{
|
|
selectedFields = this.wildcardRepository.Fields().Intersect(selectedFields);
|
|
}
|
|
else
|
|
{
|
|
selectedFields = this.wildcardRepository.Fields();
|
|
}
|
|
|
|
return this.wildcardRepository.Find(token, selectedFields);
|
|
}
|
|
|
|
public IEnumerable<String> WildcardFields()
|
|
=> this.wildcardRepository.Fields();
|
|
}
|
|
}
|