class Ppl::Service::PostalAddress

Public Instance Methods

add(contact, address_id, options) click to toggle source
# File lib/ppl/service/postal_address.rb, line 3
def add(contact, address_id, options)
  address = Ppl::Entity::PostalAddress.new
  address.id = address_id
  update_postal_address(contact, address, options)
  contact.postal_addresses << address
end
move(contact, address_id, new_address_id) click to toggle source
# File lib/ppl/service/postal_address.rb, line 23
def move(contact, address_id, new_address_id)
  address = require_address(contact, address_id)
  id_okay = contact.postal_addresses.select { |pa| pa.id == new_address_id }.empty?
  if id_okay
    address.id = new_address_id
  else
    raise "Address '#{new_address_id}' is already in use"
  end
end
remove(contact, address_id) click to toggle source
# File lib/ppl/service/postal_address.rb, line 18
def remove(contact, address_id)
  require_address(contact, address_id)
  contact.postal_addresses.reject! { |pa| pa.id == address_id }
end
update(contact, address_id, options) click to toggle source
# File lib/ppl/service/postal_address.rb, line 10
def update(contact, address_id, options)
  address = contact.postal_addresses.find { |p| p.id == address_id }
  update_postal_address(contact, address, options)
  if options[:new_id]
    move(contact, address_id, options[:new_id])
  end
end

Private Instance Methods

require_address(contact, address_id) click to toggle source
# File lib/ppl/service/postal_address.rb, line 35
def require_address(contact, address_id)
  address = contact.postal_addresses.find { |p| p.id == address_id }
  if address.nil?
    raise Ppl::Error::PostalAddressNotFound, address_id
  end
  address
end
update_postal_address(contact, address, options) click to toggle source
# File lib/ppl/service/postal_address.rb, line 43
def update_postal_address(contact, address, options)
  [
    :country,
    :locality,
    :po_box,
    :postal_code,
    :region,
    :street,
  ].each do |property|
    unless options[property].nil?
      address.send("#{property.to_s}=", options[property])
    end
  end
  if options[:preferred] == true
    contact.postal_addresses.each { |pa| pa.preferred = (pa.id == address.id) }
  elsif options[:preferred] == false
    address.preferred = false
  end
end