Sha256: 34aaac932aa7f976f259160c469ef97c6cb2764b5ea530440fa3d06d1d612cf6

Contents?: true

Size: 1.83 KB

Versions: 5

Compression:

Stored size: 1.83 KB

Contents

module Cloudsponge
  
  class Contact
    attr_accessor :first_name, :last_name, :emails, :phones, :addresses

    def self.from_array(list)
      list.map { |contact_data| Contact.new(contact_data) }.compact
    end

    def initialize(contact_data)
      super()
      # get the basic data
      self.first_name = contact_data['first_name']
      self.last_name = contact_data['last_name']

      # get the phone numbers
      self.phones = []
      contact_data['phone'] && contact_data['phone'].each do |phone|
        self.add_array_value(self.phones, phone['number'], phone['type'])
      end

      self.emails = []
      contact_data['email'] && contact_data['email'].each do |email|
        self.add_array_value(self.emails, email['address'], email['type'])
      end

      @addresses = contact_data['address'] && contact_data['address'].inject([]) do |memo, address|
        memo << {
          :type => address['type'], 
          :street => address["street"], 
          :city => address["city"], 
          :region => address["region"], 
          :country => address["country"], 
          :postal_code => address["postal_code"], 
          :formatted => address["formatted"]}
      end || []
      
      self
    end

    def name
      "#{self.first_name} #{self.last_name}"
    end

    def email
      Contact.get_first_value(self.emails)
    end

    def phone
      Contact.get_first_value(self.phones)
    end
    
    def address
      self.addresses && self.addresses.first && "#{self.addresses.first[:street]} #{self.addresses.first[:city]} #{self.addresses.first[:region]}".strip
    end

    def add_array_value(collection, value, type = nil)
      collection << {:value => value, :type => type}
    end

  private

    def self.get_first_value(from_array)
      from_array && from_array.first && from_array.first[:value]
    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
cloudsponge-0.9.13 lib/cloudsponge/contact.rb
cloudsponge-0.9.12 lib/cloudsponge/contact.rb
cloudsponge-0.9.11 lib/cloudsponge/contact.rb
cloudsponge-0.9.10 lib/cloudsponge/contact.rb
cloudsponge-0.9.9a lib/cloudsponge/contact.rb