Beispiel #1
0
        /// <summary>
        /// Gets the value as elastic searchs json format for flags. (OR|AND|PREFIX)
        /// </summary>
        /// <param name="instance">Enum instance to format.</param>
        /// <returns>Value in elastic search json format.</returns>
        internal static string AsJsonValue(this SimpleQuerystringOperators instance)
        {
            if (instance == SimpleQuerystringOperators.All)
            {
                return(typeof(SimpleQuerystringOperators)
                       .GetField(nameof(SimpleQuerystringOperators.All))
                       .GetCustomAttribute <EnumMemberAttribute>()?.Value ?? nameof(SimpleQuerystringOperators.All));
            }

            return(string.Join("|", Enum.GetValues(typeof(SimpleQuerystringOperators))
                               .Cast <SimpleQuerystringOperators>()
                               .Where(x => instance.HasFlag(x) && Convert.ToInt32(x) > 0)
                               .DefaultIfEmpty()
                               .Select(f => typeof(SimpleQuerystringOperators).GetField(f.ToString()).GetCustomAttribute <EnumMemberAttribute>()?.Value ?? f.ToString())));
        }
        public void AsJsonValue_Returns_Values()
        {
            SimpleQuerystringOperators value = SimpleQuerystringOperators.Not | SimpleQuerystringOperators.Or | SimpleQuerystringOperators.Phrase;

            Assert.Equal("NOT|OR|PHRASE", value.AsJsonValue());
        }
 public MatchSimpleQueryString(string query, List <string> fields, Operator @operator, SimpleQuerystringOperators flags = SimpleQuerystringOperators.All, string analyzer = null)
 {
     SimpleQueryString = new SimpleQueryStringInternal
     {
         Query           = query,
         DefaultOperator = @operator.ToString().ToLower(),
         Fields          = fields,
         Analyzer        = analyzer,
         Flags           = flags.AsJsonValue()
     };
 }