AutotaskApi

Short description and motivation.

Usage

How to use my plugin.

Installation

Add this line to your application's Gemfile:

gem 'autotask_api'

And then execute:

$ bundle

Or install it yourself as:

$ gem install autotask_api

Query

See the "Query XML elements and attributes" section of the Autotask API Users Guide for more information.

Simple field test

SQL:

firstname = 'Joe'

Objects:

e1 = AutotaskApi::Expression.new('firstname', 'equals', 'Joe')
c = AutotaskApi::Condition.new(e1)

AutotaskApi::Contact.where(c)

Hash:

AutotaskApi::Condition.from_hash(
    expressions: [
        { field: 'firstname', operator: 'equals', value: 'Joe' }
    ]
)

Multiple Field Test

SQL:

firstname = ‘Joe’ AND lastname = ‘Smith’

Objects:

e1 = AutotaskApi::Expression.new('firstname', 'equals', 'Joe')
e2 = AutotaskApi::Expression.new('lastname', 'equals', 'Smith')
c = AutotaskApi::Condition.new([e1, e2])

AutotaskApi::Contact.where(c)

Hash:

c = AutotaskApi::Condition.from_hash(
    expressions: [
      { field: 'firstname', operator: 'equals', value: 'Joe' },
      { field: 'lastname', operator: 'equals', value: 'Smith' }
    ]
)

AutotaskApi::Contact.where(c)

Multiple Fields combined with OR

SQL:

firstname = ‘Joe’ OR lastname = ‘Brown’

Objects:

e1 = AutotaskApi::Expression.new('firstname', 'equals', 'Joe')
e2 = AutotaskApi::Expression.new('lastname', 'equals', 'Brown')
c = AutotaskApi::Condition.new([e1, e2], 'OR')

AutotaskApi::Contact.where(c)

Hash:

c = AutotaskApi::Condition.from_hash(
    expressions: [
        { field: 'firstname', operator: 'equals', value: 'Joe' },
        { field: 'lastname', operator: 'equals', value: 'Brown' }
    ],
    operator: 'OR'
)

AutotaskApi::Contact.where(c)

Nested Conditions

SQL:

(
  firstname = ‘Joe’
  OR
  (
    (firstname = ‘Larry’ and lastname = ‘Brown’)
    OR
    (firstname = ‘Mary’ and lastname = ‘Smith’)
  )
)
# AND city != 'Albany'

Objects:

e1 = AutotaskApi::Expression.new('firstname', 'equals', 'Larry')
e2 = AutotaskApi::Expression.new('lastname', 'equals', 'Brown')
c1 = AutotaskApi::Condition.new([e1, e2])

e3 = AutotaskApi::Expression.new('firstname', 'equals', 'Mary')
e4 = AutotaskApi::Expression.new('lastname', 'equals', 'Smith')
c2 = AutotaskApi::Condition.new([e3, e4])

c3 = AutotaskApi::Condition.new([c1, c2], 'OR')

e5 = AutotaskApi::Expression.new('firstname', 'equals', 'Joe')
c4 = AutotaskApi::Condition.new([e5, c3], 'OR')

e6 = AutotaskApi::Expression.new('city', 'notequal', 'Albany')
c5 = AutotaskApi::Condition.new([c4, e6])

AutotaskApi::Query.new('contact', c5).fetch

Hash:

c = AutotaskApi::Condition.from_hash(
    expressions: [
        {
            expressions: [
                { field: 'firstname', operator: 'equals', value: 'Joe' },
                {
                    expressions: [
                        {
                            expressions: [
                                { field: 'firstname', operator: 'equals', value: 'Larry' },
                                { field: 'lastname', operator: 'equals', value: 'Brown' }
                            ]
                        },
                        {
                            expressions: [
                                { field: 'firstname', operator: 'equals', value: 'Marry' },
                                { field: 'lastname', operator: 'equals', value: 'Smith' }
                            ]
                        }
                    ],
                    operator: 'OR'
                }
            ],
            operator: 'OR'
        },
        { field: 'city', operator: 'notequal', value: 'Albany' }
    ]
)

AutotaskApi::Contact.where(c)

Contributing

Contribution directions go here.

License

The gem is available as open source under the terms of the MIT License.