class ConstantContact::Components::AddContacts

Attributes

column_names[RW]
import_data[RW]
lists[RW]

Public Class Methods

new(contacts, lists, column_names = []) click to toggle source

Constructor to create an AddContacts object from the given contacts and contact lists @param [Array<Contact>] contacts - contacts array @param [Array<ContactList>] lists - contact lists array] @param [Array<String>] column_names - array of column names @return [AddContacts]

# File lib/constantcontact/components/activities/add_contacts.rb, line 17
def initialize(contacts, lists, column_names = [])
  if !contacts.empty?
    if contacts[0].instance_of?(Components::AddContactsImportData)
      @import_data = contacts
    else
      raise Exceptions::IllegalArgumentException, sprintf(Util::Config.get('errors.id_or_object'), 'AddContactsImportData')
    end
  end

  @lists = lists
  @column_names = column_names

  # attempt to determine the column names being used if they are not provided
  if column_names.empty?
    used_columns = [Util::Config.get('activities_columns.email')]

    contacts.each do |contact|

      if !contact.first_name.nil?
        used_columns << Util::Config.get('activities_columns.first_name')
      end

      if !contact.middle_name.nil?
        used_columns << Util::Config.get('activities_columns.middle_name')
      end

      if !contact.last_name.nil?
        used_columns << Util::Config.get('activities_columns.last_name')
      end

      if !contact.birthday_day.nil?
        used_columns << Util::Config.get('activities_columns.birthday_day')
      end

      if !contact.birthday_month.nil?
        used_columns << Util::Config.get('activities_columns.birthday_month')
      end

      if !contact.anniversary.nil?
        used_columns << Util::Config.get('activities_columns.anniversary')
      end

      if !contact.job_title.nil?
        used_columns << Util::Config.get('activities_columns.job_title')
      end

      if !contact.company_name.nil?
        used_columns << Util::Config.get('activities_columns.company_name')
      end

      if !contact.work_phone.nil?
        used_columns << Util::Config.get('activities_columns.work_phone')
      end

      if !contact.home_phone.nil?
        used_columns << Util::Config.get('activities_columns.home_phone')
      end

      contact.addresses.each do |address|

        if !address.line1.nil?
          used_columns << Util::Config.get('activities_columns.address1')
        end

        if !address.line2.nil?
          used_columns << Util::Config.get('activities_columns.address2')
        end

        if !address.line3.nil?
          used_columns << Util::Config.get('activities_columns.address3')
        end

        if !address.city.nil?
          used_columns << Util::Config.get('activities_columns.city')
        end

        if !address.state_code.nil? || !address.state.nil?
          used_columns << Util::Config.get('activities_columns.state')
        end

        if !address.country_code.nil?
          used_columns << Util::Config.get('activities_columns.country')
        end

        if !address.postal_code.nil?
          used_columns << Util::Config.get('activities_columns.postal_code')
        end

        if !address.sub_postal_code.nil?
          used_columns << Util::Config.get('activities_columns.sub_postal_code')
        end
      end

      # Custom Fields
      if !contact.custom_fields.nil?
        contact.custom_fields.each do |custom_field|
          if custom_field.name.match('custom_field_')
            custom_field_number = custom_field.name[13, custom_field.name.length]
            used_columns << Util::Config.get('activities_columns.custom_field_' + custom_field_number)
          end
        end
      end
    end

    @column_names = used_columns.uniq
  end
end