public override Expression<Func<IndexedContact, bool>> GetPredicate<T>(Type type, BaseAdaptiveConditionBase<T> adaptiveCondition, T ruleContext)
        {
            var leftFacetName = adaptiveCondition.GetLeftValue(ruleContext).ToString();

            object right = adaptiveCondition.GetRightValue(ruleContext);
            if (right == null)
                return null;
            float rightInt;
            if (!float.TryParse(right.ToString(), out rightInt))
            {
                return null;
            }

            var conditionOperator = ConditionUtility.GetConditionOperatorById(adaptiveCondition.Operator.ToString());
            return GetCompareExpression<float>(conditionOperator, c => (float)c[(ObjectIndexerKey)leftFacetName], rightInt);
        }        
        public override Expression <Func <IndexedContact, bool> > GetPredicate <T>(Type type, BaseAdaptiveConditionBase <T> adaptiveCondition, T ruleContext)
        {
            var leftFacetName = adaptiveCondition.GetLeftValue(ruleContext).ToString();

            object right = adaptiveCondition.GetRightValue(ruleContext);

            if (right == null)
            {
                return(null);
            }
            DateTime rightDateTime;

            rightDateTime = DateUtil.ParseDateTime(right.ToString(), DateTime.MinValue);
            if (rightDateTime == DateTime.MinValue)
            {
                return(null);
            }

            var conditionOperator = ConditionUtility.GetConditionOperatorById(adaptiveCondition.Operator.ToString());

            return(GetCompareExpression <DateTime>(conditionOperator, c => (DateTime)c[(ObjectIndexerKey)leftFacetName], rightDateTime));
        }