예제 #1
0
        public PropertyFilterComponent(IAuditProperty <TProp> prop, TProp value, PropertyValueComparison comparison)
        {
            Property   = prop;
            Comparison = comparison;
            Value      = value;

            Expression <Func <AuditPropertyValue, bool> > valuePredicate;

            if (typeof(TProp) == typeof(string) && (comparison == PropertyValueComparison.Contains || comparison == PropertyValueComparison.NotContains))
            {
                var asStr = Convert.ToString(value);
                valuePredicate = comparison == PropertyValueComparison.Contains
                    ? Expr.Create(( AuditPropertyValue v ) => v.StringValue.Contains(asStr))
                    : Expr.Create(( AuditPropertyValue v ) => !v.StringValue.Contains(asStr));
            }
            else
            {
                var valueAccessor = AuditPropertyValue.GetAccessorExpression <TProp>();
                valuePredicate = Expression.Lambda <Func <AuditPropertyValue, bool> >(
                    Expression.MakeBinary(Op(Comparison), valueAccessor.Body, Expression.Constant(Value)),
                    valueAccessor.Parameters);
            }

            Filter = e => e.PropertyValues.Any(p => p.PropertyId == Property.ID && valuePredicate.Invoke(p));
            Filter = Filter.Expand();
        }
예제 #2
0
        public static IAuditEventBuilder With <T>(this IAuditEventBuilder builder, IAuditProperty <T> prop, T value)
        {
            var pv = new AuditPropertyValue {
                PropertyId = prop.ID
            };

            pv.SetValue(value);
            return(builder.With(pv));
        }
예제 #3
0
            public IAuditEventBuilder With(AuditPropertyValue pv)
            {
                throw new Lpp.Utilities.CodeToBeUpdatedException();

                //return new EventBuilder( _service, _event, () =>
                //{
                //    _commit();
                //    pv.Event = _event;
                //    _service.PropertyValues.Add( pv );
                //} );
            }