protected void btnSearch_Click(object sender, EventArgs e)
    {
        var searchBuilder = new SearchBuilder(Search.FromManifest(MultiStepWizards.SearchResumeBank.SearchManifest));

        MultiStepWizards.SearchResumeBank.SearchBuilder =
            searchBuilder;

        cfsSearchCriteria.Harvest();
        MemberSuiteObject mso = cfsSearchCriteria.MemberSuiteObject;

        string keywords = tbKeywords.Text;

        if (!string.IsNullOrWhiteSpace(keywords))
        {
            searchBuilder.AddOperation(
                new Keyword {
                FieldName = "File", ValuesToOperateOn = new List <object> {
                    keywords
                }
            },
                SearchOperationGroupType.And);
        }


        ParseSearchCriteria(targetCriteriaFields, mso, searchBuilder);

        string nextUrl = "~/careercenter/SearchResume_Results.aspx";

        if (rblOutputFormat.SelectedValue == "zip")
        {
            nextUrl += "?output=zip";
        }
        GoTo(nextUrl);
    }
Exemplo n.º 2
0
    protected void ParseSearchCriteria(List <FieldMetadata> targetCriteriaFields, MemberSuiteObject criteria, SearchBuilder sb)
    {
        foreach (var fieldMetadata in targetCriteriaFields)
        {
            string fieldName = Formats.GetSafeFieldName(fieldMetadata.Name);
            bool   found     = false;

            if (_isValidRange(criteria.SafeGetValue(fieldName + "__from")))
            {
                // let's create a greater than
                sb.AddOperation(Expr.IsGreaterThanOrEqualTo(fieldMetadata.Name, criteria[fieldName + "__from"]), SearchOperationGroupType.And);
                found = true;
            }

            if (_isValidRange(criteria.SafeGetValue(fieldName + "__to")))
            {
                // let's create a less than
                sb.AddOperation(Expr.IsLessThanOrEqual(fieldMetadata.Name, criteria[fieldName + "__to"]), SearchOperationGroupType.And);
                found = true;
            }

            if (found || !criteria.Fields.ContainsKey(fieldName))
            {
                continue;
            }

            var fieldValue = criteria.Fields[fieldName];
            if (fieldValue == null)
            {
                continue;
            }

            SearchOperation so = new Equals(); //default
            so.ValuesToOperateOn = new List <object> {
                fieldValue
            };

            if (fieldValue is string)
            {
                string fieldValueAsString = (string)fieldValue;
                if (String.IsNullOrWhiteSpace(fieldValueAsString))
                {
                    continue;
                }

                if (fieldMetadata.DataType == FieldDataType.Boolean)
                {
                    bool b = false;
                    if (Boolean.TryParse(fieldValueAsString, out b))
                    {
                        so.ValuesToOperateOn = new List <object>()
                        {
                            b
                        }
                    }
                    ;
                }
                else
                {
                    so = new Contains(); //string should use contains instead of equals
                    so.ValuesToOperateOn = new List <object>()
                    {
                        fieldValueAsString.Trim()
                    };
                }
            }

            if (fieldValue is List <string> )
            {
                List <string> fieldValueAsList = fieldValue as List <string>;
                if (fieldValueAsList.Count == 0)
                {
                    continue;
                }

                so = new ContainsOneOfTheFollowing(); //Lists just look for one hit
                List <object> values = new List <object>();
                values.AddRange(fieldValueAsList);

                so.ValuesToOperateOn = values;
            }

            so.FieldName = fieldMetadata.Name;

            sb.AddOperation(so, SearchOperationGroupType.And);
        }
    }