using CodeBug.CountryProvider.Interfaces; using Microsoft.Xrm.Sdk.Query; using System; using System.Linq; namespace CodeBug.CountryProvider.Services { public class CountryQueryVisitor : IQueryExpressionVisitor { public string SearchingBy { get; private set; } public string SearchedTerm { get; private set; } private readonly IQueryValidator _queryValidator; public CountryQueryVisitor(IQueryValidator queryValidator) { _queryValidator = queryValidator; } public QueryExpression Visit(QueryExpression query) { SearchingBy = "all"; SearchedTerm = "all"; if (query == null) { throw new ArgumentNullException(nameof(query)); } if (_queryValidator.Validate()) { SearchingBy = query.Criteria.Conditions.Single().AttributeName; SearchedTerm = query.Criteria.Conditions.Single().Values.Single().ToString(); } return query; } } }