class DynamicsCRM::XML::FilterExpression

Represents FilterExpression XML fragment.

Attributes

conditions[RW]
filter_operator[RW]
filters[RW]

Public Class Methods

new(operator = 'And') click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 7
def initialize(operator = 'And')
  @filter_operator = operator
  @conditions = []
  @filters = []
end

Public Instance Methods

add_condition(field, operator, value=nil) click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 13
def add_condition(field, operator, value=nil)
  conditions << ConditionExpression.new(field, operator, value)
end
add_filter(filter) click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 17
def add_filter(filter)
  filters << filter
end
to_xml(options = {}) click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 21
def to_xml(options = {})
  ns = options[:namespace] ? options[:namespace] : 'b'

  query_xml = %(
    <#{ns}:FilterExpression>
      #{conditions_xml(options)}
      <#{ns}:FilterOperator>#{@filter_operator}</#{ns}:FilterOperator>
      #{filters_xml(options)}
    </#{ns}:FilterExpression>
  )

  query_xml
end

Protected Instance Methods

conditions_xml(options) click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 37
def conditions_xml(options)
  ns = options[:namespace] ? options[:namespace] : 'b'

  if conditions.empty?
    "<#{ns}:Conditions />"
  else
    xml = conditions.map { |c| c.to_xml(options) }.join('')
    %(<#{ns}:Conditions>
        #{xml}
      </#{ns}:Conditions>)
  end
end
filters_xml(options) click to toggle source
# File lib/dynamics_crm/xml/filter_expression.rb, line 50
def filters_xml(options)
  ns = options[:namespace] ? options[:namespace] : 'b'

  if filters.empty?
    "<#{ns}:Filters />"
  else
    sub_filters = filters.map { |f| f.to_xml(options) }.join('')
    %(<#{ns}:Filters>
        #{sub_filters}
      </#{ns}:Filters>)
  end
end