Exemplo n.º 1
0
        public IBlankQuery Search(Parameter searchWords, SearchOperator searchOperator, Node searchNodeType, params FieldResult[] searchFields)
        {
            SetType(PartType.Search);

            SearchWords    = searchWords;
            SearchOperator = searchOperator;
            Patterns       = new[] { searchNodeType };
            Fields         = searchFields;

            if ((object?)searchNodeType.NodeAlias is null)
            {
                throw new ArgumentException($"The searchNodeType does not have an alias. Rewite your query to: {Example()}");
            }

            foreach (FieldResult field in Fields)
            {
                if ((object?)field.Alias != searchNodeType.NodeAlias)
                {
                    throw new ArgumentException($"The searchfield should be retrieved from the searchNodeType it's alias. Rewite your query to: {Example()}");
                }

                if ((object?)field.Alias != searchNodeType.NodeAlias)
                {
                    throw new ArgumentException($"The searchfield '{field.FieldName}' is not supported for free text searching. Add it to the free text index in an upgrade script.");
                }
            }

            return(New);

            string Example()
            {
                return($"Search({SearchWordExample()}, {OperatorExample()}, {NodeTypeExample()}, {SearchFieldExample()}, ...)");
            }

            string SearchFieldExample()
            {
                return($"{AliasExample()}.{searchFields.FirstOrDefault().FieldName ?? "FieldName"}");
            }

            string NodeTypeExample()
            {
                return($"node.{searchNodeType.Neo4jLabel}.Alias(out var {AliasExample()})");
            }

            string AliasExample()
            {
                return(searchNodeType.Neo4jLabel.ToCamelCase());
            }

            string OperatorExample()
            {
                return($"SearchOperator.{searchOperator.ToString()}");
            }

            string SearchWordExample()
            {
                return($"Parameter.New<string>(\"{searchWords?.Name ?? "SearchWords"}\")");
            }
        }
Exemplo n.º 2
0
        internal static string ToFriendlyDisplayString(this SearchOperator searchOperator)
        {
            string searchOperatorStr = searchOperator.ToString();
            string displayText       = Resources.ResourceManager.GetString(searchOperatorStr);

            if (displayText == null)
            {
                // split on capital letters and add spaces - purely as a fallback in case the enum value is not localised
                Regex capitalLetterMatch = new Regex("\\B[A-Z]", RegexOptions.Compiled);
                displayText = capitalLetterMatch.Replace(searchOperatorStr, " $&").ToLower(Thread.CurrentThread.CurrentCulture);
            }

            return(displayText);
        }
        /// <summary>
        /// Gets the list subscribers.
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <param name="limit">The limit.</param>
        /// <param name="page">The page.</param>
        /// <param name="firstName">The first name to search for in the list.</param>
        /// <param name="lastName">The last name to search for in the list.</param>
        /// <param name="mobileNumber">The mobile number to search for in the list.</param>
        /// <param name="searchOperator">The search operator to use if multiple search params are provided.</param>
        /// <returns></returns>
        public SubscribersResponse GetListSubscribers(int id, int?limit = null, int?page = null, string firstName = null, string lastName = null, string mobileNumber = null, SearchOperator searchOperator = SearchOperator.AND, SubscriberStatus status = SubscriberStatus.ACTIVE)
        {
            var request = new RestRequest($"lists/{id}/subscribers");

            request.Method = Method.GET;

            if (limit.HasValue)
            {
                request.AddParameter("limit", limit, ParameterType.GetOrPost);
            }

            if (page.HasValue)
            {
                request.AddParameter("page", page, ParameterType.GetOrPost);
            }

            var searchParams = 0;

            if (!string.IsNullOrWhiteSpace(firstName))
            {
                request.AddParameter("first", firstName, ParameterType.GetOrPost);
                searchParams = searchParams + 1;
            }

            if (!string.IsNullOrWhiteSpace(lastName))
            {
                request.AddParameter("last", lastName, ParameterType.GetOrPost);
                searchParams = searchParams + 1;
            }

            if (!string.IsNullOrWhiteSpace(mobileNumber))
            {
                request.AddParameter("mobile_number", mobileNumber, ParameterType.GetOrPost);
                searchParams = searchParams + 1;
            }

            request.AddParameter("status", status.ToString(), ParameterType.GetOrPost);
            searchParams = searchParams + 1;

            if (searchParams > 1)
            {
                request.AddParameter("operator", searchOperator.ToString(), ParameterType.GetOrPost);
            }

            return(Execute <SubscribersResponse>(request));
        }