class DynamicsCRM::XML::ConditionExpression

Loosely based on msdn.microsoft.com/en-us/library/gg334419.aspx Creates a ConditionExpression element to be used in retrieve calls.

Attributes

attr_name[RW]
operator[RW]
type[RW]
value[RW]

Public Class Methods

new(attr_name, operator, value = nil, type: nil) click to toggle source
# File lib/dynamics_crm/xml/condition_expression.rb, line 8
def initialize(attr_name, operator, value = nil, type: nil)
  @attr_name = attr_name
  @operator = operator
  # value can be optional to support Null and NotNull operators
  @value = value
  @values = Array(value)
  @type = type
end

Public Instance Methods

to_xml(options = {}) click to toggle source
# File lib/dynamics_crm/xml/condition_expression.rb, line 30
def to_xml(options = {})
  ns = options[:namespace] ? options[:namespace] : 'a'

  expression = %(<#{ns}:ConditionExpression>
      <#{ns}:AttributeName>#{attr_name}</#{ns}:AttributeName>
      <#{ns}:Operator>#{operator}</#{ns}:Operator>
      <#{ns}:Values xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    )
  @values.each do |v|
    expression << %(<d:anyType i:type="s:#{value_type}" xmlns:s="http://www.w3.org/2001/XMLSchema">#{v}</d:anyType>)
  end

  expression << %(
       </#{ns}:Values>
  </#{ns}:ConditionExpression>)

  expression
end
value_type() click to toggle source
# File lib/dynamics_crm/xml/condition_expression.rb, line 17
def value_type
  return type unless type.nil?

  type = @values.first.class.to_s.downcase
  if type == 'fixnum'
    type = 'int'
  elsif %w(trueclass falseclass).include?(type)
    type = 'boolean'
  end

  type
end