class DynamicsCRM::Metadata::FilterExpression

Attributes

conditions[RW]
operator[RW]

Public Class Methods

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

Public Instance Methods

add_condition(condition) click to toggle source
# File lib/dynamics_crm/metadata/filter_expression.rb, line 12
def add_condition(condition)
  @conditions << condition
end
get_type(value) click to toggle source
# File lib/dynamics_crm/metadata/filter_expression.rb, line 16
def get_type(value)
    type = value.class.to_s.downcase
    type = "int" if type == "fixnum"
    type = "boolean" if ["trueclass", "falseclass"].include?(type)
    type
end
to_xml(options={}) click to toggle source
# File lib/dynamics_crm/metadata/filter_expression.rb, line 23
def to_xml(options={})
  ns = options[:namespace] ? options[:namespace] : "a"

  expressions = ""
  @conditions.each do |condition|
    attr_name, op, value = condition

    expressions << %Q{
      <#{ns}:MetadataConditionExpression>
        <#{ns}:PropertyName>#{attr_name}</#{ns}:PropertyName>
        <#{ns}:ConditionOperator>#{op}</#{ns}:ConditionOperator>
        <#{ns}:Value i:type='e:#{get_type(value)}' xmlns:e='http://www.w3.org/2001/XMLSchema'>#{value}</#{ns}:Value>
     </#{ns}:MetadataConditionExpression>}
  end

  %Q{<#{ns}:Criteria>
      <#{ns}:Conditions>
        #{expressions}
      </#{ns}:Conditions>
      <#{ns}:FilterOperator>#{@operator}</#{ns}:FilterOperator>
  </#{ns}:Criteria>}
end