Sha256: f77e3b7a918b1d117aa5a6c730bfa24d145d8c25842513026f5d1cfb64cc6cf2

Contents?: true

Size: 1.48 KB

Versions: 4

Compression:

Stored size: 1.48 KB

Contents

module Xeroizer
  module Record

    class ContactGroupModel < BaseModel
      set_permissions :read
    end

    class ContactGroup < Base

      guid :contact_group_id
      string :name
      string :status

      set_primary_key :contact_group_id
      list_contains_summary_only true
      has_many :contacts, :list_complete => true

      # Adding Contact uses different API endpoint
      # https://developer.xero.com/documentation/api/contactgroups#PUT
      def add_contact(contact)
        @contacts ||= []
        @contacts <<  contact
      end

      def delete
        status = 'DELETED'
      end

      def name=(value)
        @modified = true unless @attributes[:name].nil? or @attributes[:name] == value
        @attributes[:name] = value
      end

      def status=(value)
        @modified = true unless @attributes[:status].nil? or @attributes[:status] == value
        @attributes[:status] = value
      end

      def save!
        super if new_record? or @modified
        @modified = false
        if @contacts
          req = cg_xml
          app = parent.application
          res = app.http_put(app.client, "#{parent.url}/#{CGI.escape(id)}/Contacts", req)
          parse_save_response(res)
        end
      end

      def cg_xml
        b = Builder::XmlMarkup.new(:indent => 2)
        b.tag!('Contacts') do
          @contacts.each do |c|
            b.tag!('Contact') do
              b.tag!('ContactID', c.id)
            end
          end
        end
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
xeroizer-3.0.1 lib/xeroizer/models/contact_group.rb
xeroizer-3.0.0 lib/xeroizer/models/contact_group.rb
xeroizer-3-pre-beta-3.0.0.pre.beta lib/xeroizer/models/contact_group.rb
xeroizer-2.20.0 lib/xeroizer/models/contact_group.rb