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; } } }
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); } }
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; } } }
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) { } }
/// <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)); }
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"); }
/// <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);