class DynamicsCRM::XML::Criteria
Constants
- SUPPORTED_OPERATORS
Attributes
filter_operator[RW]
Public Class Methods
new(tuples = [], filter_operator: nil)
click to toggle source
Calls superclass method
# File lib/dynamics_crm/xml/criteria.rb, line 7 def initialize(tuples = [], filter_operator: nil) filter_operator ||= 'And' raise "Supported operators: #{SUPPORTED_OPERATORS.join(',')}" if !SUPPORTED_OPERATORS.include?(filter_operator) super(tuples) @filter_operator = filter_operator # Convert to ConditionExpression @expressions = self.map do |tuple| attr_name, operator, value, data_type = *tuple ConditionExpression.new(attr_name, operator, value, type: data_type) end @filters = [] end
Public Instance Methods
add_condition(attr_name, operator, value = nil, type: nil)
click to toggle source
# File lib/dynamics_crm/xml/criteria.rb, line 23 def add_condition(attr_name, operator, value = nil, type: nil) @expressions << ConditionExpression.new(attr_name, operator, value, type: type) end
add_filter(filter)
click to toggle source
# File lib/dynamics_crm/xml/criteria.rb, line 27 def add_filter(filter) @filters << filter end
conditions_xml(options)
click to toggle source
# File lib/dynamics_crm/xml/criteria.rb, line 47 def conditions_xml(options) ns = options[:namespace] ? options[:namespace] : 'a' if @expressions.empty? "<#{ns}:Conditions />" else xml_expression = @expressions.map do |conditional| conditional.to_xml(options) end.join('') %(<#{ns}:Conditions> #{xml_expression} </#{ns}:Conditions>) end end
filters_xml(options)
click to toggle source
# File lib/dynamics_crm/xml/criteria.rb, line 63 def filters_xml(options) ns = options[:namespace] ? options[:namespace] : 'a' if @filters.empty? "<#{ns}:Filters />" else fx = @filters.map { |f| f.to_xml(options) }.join('') %(<#{ns}:Filters>#{fx}</#{ns}:Filters>) end end
to_xml(options = {})
click to toggle source
ConditionExpression
can be repeated multiple times Operator: can be lots of values such as: eq (Equals), neq (Not Equals), gt (Greater Than)
get the values from a fetch xml query
Values -> Value can be repeated multiple times FilterOperator: and OR or depending on the filter requirements Filters: can contain FilterExpressions to support complex logical statements.
# File lib/dynamics_crm/xml/criteria.rb, line 37 def to_xml(options = {}) ns = options[:namespace] ? options[:namespace] : 'a' %(<#{ns}:Criteria> #{conditions_xml(options)} <#{ns}:FilterOperator>#{@filter_operator}</#{ns}:FilterOperator> #{filters_xml(options)} </#{ns}:Criteria>) end