Exemplo n.º 1
0
        public string BuildCriteriaCondition(FilterOperator op, FilterDBType format, string value)
        {
            string criteria = string.Empty;

            switch (format)
            {
            case FilterDBType.Literal:
            case FilterDBType.Guid:
            case FilterDBType.String:
            default:
                return(BuildCriteriaConditionString(op, value));

            case FilterDBType.DateTime: return(BuildCriteriaConditionDatetime(op, value));
            }
        }
Exemplo n.º 2
0
        private static string GetFilterLinq(string searchingName, FilterOperator searchingOperator, string searchingValue, FilterDBType format)
        {
            if (string.IsNullOrEmpty(searchingValue))
            {
                return(string.Empty);
            }

            string searchingOperatorString = String.Empty;

            if (format == FilterDBType.DateTime)
            {
                var valueDate     = DateTime.ParseExact(searchingValue, "yyyy-MM-ddTHH:mm:ss.fffZ", null);
                var valueDateTime = valueDate.TimeOfDay;
                var dayBegin      = valueDate.AddHours(-valueDateTime.Hours).AddMinutes(-valueDateTime.Minutes).AddSeconds(-valueDateTime.Seconds).AddMilliseconds(-valueDateTime.Milliseconds);
                var nextDayBegin  = dayBegin.AddDays(1);
                switch (searchingOperator)
                {
                case FilterOperator.Eq:
                    // ==
                    return(String.Format("({0} {1} \"{2:MM/dd/yyyy}\" && {3} {4} \"{5:MM/dd/yyyy}\")", searchingName, ">=", dayBegin, searchingName, "<", nextDayBegin));

                case FilterOperator.Ne:
                    // !=
                    return(String.Format("({0} {1} \"{2:MM/dd/yyyy}\" && {3} {4} \"{5:MM/dd/yyyy}\")", searchingName, "<", dayBegin, searchingName, ">=", nextDayBegin));

                case FilterOperator.Lt:
                    // <
                    return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "<", dayBegin));

                case FilterOperator.Le:
                    // <=
                    return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "<=", dayBegin));

                case FilterOperator.Gt:
                    // >
                    return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, ">", nextDayBegin));

                case FilterOperator.Ge:
                    // >=
                    return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, ">=", dayBegin));

                case FilterOperator.Nu: return(String.Format("{0} is null", searchingName));

                case FilterOperator.Nn: return(String.Format("{0} is not null", searchingName));

                default:
                    return(String.Format("{0} {1} \"{2:MM/dd/yyyy}\"", searchingName, "=", valueDate));
                }
            }
            else
            {
                //FORMAT DATA. DEPENDING ON TYPE OF DATA
                if ((searchingOperator == FilterOperator.Eq || searchingOperator == FilterOperator.Ne) &&
                    format == FilterDBType.String)
                {
                    searchingValue = string.Format("\"{0}\"", searchingValue);
                }
                //FORMAT DATA. DEPENDING ON TYPE OF DATA
                if (format == FilterDBType.Guid)
                {
                    var incomingIds = searchingValue.Split(',');
                    searchingValue = String.Join(",", incomingIds.Select(x => "\"" + Guid.Parse(x).ToString() + "\""));
                }
                switch (searchingOperator)
                {
                case FilterOperator.Eq: return(String.Format("{0} {1} {2}", searchingName, "=", searchingValue));

                case FilterOperator.Ne: return(String.Format("{0} {1} {2}", searchingName, "!=", searchingValue));

                //case FilterOperator.EqText: return String.Format("{0} {1} \"{2}\"", searchingName, "=", searchingValue);
                //case FilterOperator.NeText: return String.Format("{0} {1} \"{2}\"", searchingName, "!=", searchingValue);
                case FilterOperator.Lt: return(String.Format("{0} {1} {2}", searchingName, "<", searchingValue));

                case FilterOperator.Le: return(String.Format("{0} {1} {2}", searchingName, "<=", searchingValue));

                case FilterOperator.Gt: return(String.Format("{0} {1} {2}", searchingName, ">", searchingValue));

                case FilterOperator.Ge: return(String.Format("{0} {1} {2}", searchingName, ">=", searchingValue));

                case FilterOperator.Bw: return(String.Format("{0}.StartsWith(\"{1}\")", searchingName, searchingValue));

                case FilterOperator.Bn: return(String.Format("!{0}.StartsWith(\"{1}\")", searchingName, searchingValue));

                case FilterOperator.Ew: return(String.Format("{0}.EndsWith(\"{1}\")", searchingName, searchingValue));

                case FilterOperator.En: return(String.Format("!{0}.EndsWith(\"{1}\")", searchingName, searchingValue));

                case FilterOperator.Cn: return(String.Format("{0}.Contains(\"{1}\")", searchingName, searchingValue));

                case FilterOperator.Nc: return(String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue));

                //case FilterOperator.EqualOrNotEqual: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue);
                case FilterOperator.In: return(String.Format("({0} {1} ({2}))", searchingName, "in", searchingValue));

                case FilterOperator.Ni: return(String.Format("({0} {1} ({2}))", searchingName, "not in", searchingValue));

                case FilterOperator.Nu: return(String.Format("({0} is null)", searchingName));

                case FilterOperator.Nn: return(String.Format("({0} is not null)", searchingName));

                //case FilterOperator.TextOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue);
                //case FilterOperator.NoTextOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue);
                //case FilterOperator.NullOperators: return String.Format("!{0}.Contains(\"{1}\")", searchingName, searchingValue);

                default: return(String.Format("{0} {1} \"{2}\"", searchingName, "=", searchingValue));
                }
            }
        }