コード例 #1
0
        public override void Parse(string inValue, FilterHelper.ColumnFilterInfo info)
        {
            if (!string.IsNullOrEmpty(inValue))
            {
                inValue = inValue.ToLower().Trim();

                if (_enumType != null)
                {
                    var equalValues = new List <object>();
                    foreach (var field in _enumType.GetFields(BindingFlags.Static | BindingFlags.Public))
                    {
                        var displayAttribute = field.GetCustomAttribute(typeof(DisplayAttribute)) as DisplayAttribute;
                        var display          = displayAttribute == null ? field.Name : displayAttribute.Name;
                        if (display != null)
                        {
                            if (display.ToLower().Contains(inValue))
                            {
                                field.GetValue(_enumType);
                                equalValues.Add((int)Enum.Parse(_enumType, field.Name));
                            }
                        }
                    }

                    info.EqualValue = equalValues;
                }
            }
        }
コード例 #2
0
        public override void Parse(string inValue, FilterHelper.ColumnFilterInfo info)
        {
            DateTime value;

            if (DateTime.TryParse(inValue, out value))
            {
                info.GreaterThanOrEqualValue = value.Date;
                info.LessThanValue           = value.Date.AddDays(1);
            }
        }
コード例 #3
0
        public override void Parse(string inValue, FilterHelper.ColumnFilterInfo info)
        {
            if (string.IsNullOrEmpty(inValue))
            {
                return;
            }
            var value = DateTimeHelper.ParseDateTimeForSearch(inValue.Trim(), new CultureInfo("vi-VN"));

            if (!value.HasValue)
            {
                return;
            }

            info.GreaterThanOrEqualValue = value.Value;
            info.LessThanValue           = value.Value.AddDays(1);
        }
        public override void Parse(string inValue, FilterHelper.ColumnFilterInfo info)
        {
            if (!string.IsNullOrEmpty(inValue))
            {
                inValue = inValue.ToLower().Trim();

                /*if (_dictionary != null)
                 * {
                 *  var enumValues = _dictionary.Where(x => x.Value.ToLower().Contains(inValue)).ToList();
                 *  if (!enumValues.Any()) return;
                 *
                 *  var equalValues = enumValues.Select(value => value.Key).Cast<object>().ToList();
                 *  info.EqualValue = equalValues;
                 * }*/

                if (_enumType != null)
                {
                    var equalValues = new List <object>();
                    foreach (var field in _enumType.GetFields(BindingFlags.Static | BindingFlags.Public))
                    {
                        var displayAttribute = field.GetCustomAttribute(typeof(DisplayAttribute)) as DisplayAttribute;
                        var display          = displayAttribute == null ? field.Name : displayAttribute.Name;
                        if (display != null)
                        {
                            if (display.ToLower().Contains(inValue))
                            {
                                field.GetValue(_enumType);
                                equalValues.Add(Enum.Parse(_enumType, field.Name));
                            }
                        }
                    }

                    info.EqualValue = equalValues;
                }
            }
        }
コード例 #5
0
 public override void Parse(string inValue, FilterHelper.ColumnFilterInfo info)
 {
     try
     {
         if (toType == typeof(string))
         {
             info.ContainValue = new List <string>()
             {
                 inValue.Trim()
             };
         }
         else
         {
             var outValue = Convert.ChangeType(inValue, toType);
             info.EqualValue = new List <object>()
             {
                 outValue
             };
         }
     }
     catch (Exception)
     {
     }
 }
コード例 #6
0
 /// <summary>
 /// return Expression<Func<TEntity, bool>> to specify condition to filter
 /// </summary>
 /// <param name="info"></param>
 /// <returns></returns>
 public virtual Expression <Func <T, bool> > GetCondition <T>(FilterHelper.ColumnFilterInfo info)
 {
     return(FilterHelper.BuildFilterExpression <T>(info));
 }
コード例 #7
0
        public IQueryable <TEntity> GetDataForResponse(IDataTablesRequest param, params FilterHelper.ColumnFilterInfo[] addtitonalFilters)
        {
            Expression <Func <TEntity, bool> > genericExpression = null;
            var query = _source;

            foreach (var c in param.Columns)
            {
                ViewModelPropertyInfo vmProperty;
                if (c.Searchable && ViewModelProperties.TryGetValue(c.Data, out vmProperty))
                {
                    var col = new FilterHelper.ColumnFilterInfo()
                    {
                        PropertyNameOrExpression = vmProperty.MapUnderlyingProperty
                    };
                    if (!string.IsNullOrEmpty(c.Search.Value))
                    {
                        vmProperty.ValueConverter.Parse(c.Search.Value, col);
                    }

                    var condition = vmProperty.Condition.GetCondition <TEntity>(col);
                    if (condition != null)
                    {
                        query = query.Where(condition);
                    }

                    //Generic Search
                    if (!string.IsNullOrEmpty(param.Search.Value))
                    {
                        Expression <Func <TEntity, bool> > singleExpression = null;
                        var tmpCol = new FilterHelper.ColumnFilterInfo()
                        {
                            PropertyNameOrExpression = vmProperty.MapUnderlyingProperty
                        };
                        vmProperty.ValueConverter.Parse(param.Search.Value, tmpCol);
                        singleExpression = vmProperty.Condition.GetCondition <TEntity>(tmpCol);
                        if (singleExpression != null)
                        {
                            genericExpression = genericExpression == null
                                                ? singleExpression
                                                : genericExpression.OrElse(singleExpression);
                        }
                    }
                }
            }
            if (addtitonalFilters != null)
            {
                var defaultConditionBuilder = new ConditionProviderAttribute();
                foreach (var addtitonalFilter in addtitonalFilters)
                {
                    var condition = defaultConditionBuilder.GetCondition <TEntity>(addtitonalFilter);
                    if (condition != null)
                    {
                        query = query.Where(condition);
                    }
                }
            }

            if (genericExpression != null)
            {
                query = query.Where(genericExpression);
            }

            //Ordering
            var orderColumns = param.Columns.Where(c => c.IsOrdered).OrderBy(c => c.OrderNumber);
            IOrderedQueryable <TEntity> orderQuery = null;

            foreach (var column in orderColumns)
            {
                ViewModelPropertyInfo vmProperty;
                if (column.Searchable && ViewModelProperties.TryGetValue(column.Data, out vmProperty))
                {
                    orderQuery = column.SortDirection == Column.OrderDirection.Ascendant
                        ? (orderQuery == null
                            ? query.OrderBy(vmProperty.MapUnderlyingProperty)
                            : orderQuery.ThenBy(vmProperty.MapUnderlyingProperty))
                        : (orderQuery == null
                            ? query.OrderByDescending(vmProperty.MapUnderlyingProperty)
                            : orderQuery.ThenByDescending(vmProperty.MapUnderlyingProperty));
                }
            }
            return(orderQuery ?? query); //.OrderBy("Id");
        }
コード例 #8
0
 /// <summary>
 /// The function used to convert string value from DataTables to appropriate value for property or field
 /// </summary>
 public abstract void Parse(string inValue, FilterHelper.ColumnFilterInfo info);