private bool AddStatement(bool isFirst, FilterStatement filterStatement, List <object> parameterList, StringBuilder whereBuilder, EntitySqlFilterOperationParameters operationParameters) { var currentIndex = parameterList.Count; var value = FilterTypeCorrector.ChangeType <TFilterableEntity>(filterStatement.ParameterName, filterStatement.ParameterValue); if (value == null) { return(false); } parameterList.Add(value); if (!isFirst) { if (filterStatement.LogicalOperator == FilterLogicalOperators.Or) { whereBuilder.Append(" OR "); } else { whereBuilder.Append(" AND "); } } var columnName = CreateColumnName(filterStatement.ParameterName, operationParameters); CreateLogicalOperation(whereBuilder, columnName, currentIndex, filterStatement.ComparisonOperator); return(true); }
private ISpecification <TEntity> Create(FilterStatement filter) { var property = typeof(TEntity).GetPropertyInfoIgnoreCase(filter.ParameterName); if (property == null) { return(null); } var targetType = property.PropertyType; object value = FilterTypeCorrector.ChangeType <TEntity>(filter.ParameterName, filter.ParameterValue); if (value == null) { return(null); } if (filter.ComparisonOperator == FilterComparisonOperators.Equals) { return(new EqualsSpecification <TEntity>(targetType, value, filter.ParameterName)); } if (filter.ComparisonOperator == FilterComparisonOperators.GreaterThan) { return(new GreaterThanSpecification <TEntity>(targetType, value, filter.ParameterName)); } if (filter.ComparisonOperator == FilterComparisonOperators.LessThan) { return(new LessThanSpecification <TEntity>(targetType, value, filter.ParameterName)); } if (filter.ComparisonOperator == FilterComparisonOperators.Contains) { return(new ContainsSpecification <TEntity>(filter.ParameterValue, filter.ParameterName)); } return(null); }