Sha256: b08fe7ab44a23e511d572bca5a713f0199cd92d8f834ea23a9e987c968e377eb

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

class Address < ActiveRecord::Base
  attr_accessible :address1, :address2, :city, :state, :zip, :country
  belongs_to :person

  validates :person_id, :presence => true

  def address
    "#{address1} #{address2}"
  end
  
  def to_s
    "#{address1} #{address2} #{city} #{state} #{zip} #{country}"
  end

  def is_same_as(addr)
    return address1.eql?(addr.address1) &&
           address2.eql?(addr.address2) &&
           city.eql?(addr.city) &&
           state.eql?(addr.state) &&
           zip.eql?(addr.zip) &&
           country.eql?(addr.country)
  end

  def self.from_payment(payment)
    if payment.respond_to? "billing_address"
      billing_address = payment.billing_address

      new({
        :address1 => billing_address.street_address1,
        :address2 => billing_address.street_address2,
        :city     => billing_address.city,
        :state    => billing_address.state,
        :zip      => billing_address.postal_code,
        :country  => billing_address.country
      })
    else
      nil
    end
  end
  
  def self.unhash(address)
    (address.is_a? Hash) ? Address.new(address)  : address
  end

  def self.find_or_create(pers_id)
    #refactor to first_or_initialize when Rails 3.2
    where(:person_id => pers_id).first || Address.create(:person_id => pers_id)
  end

  def update_with_note(person, user, address, time_zone, updated_by)
    old_addr = to_s()

    unless is_same_as(address)
      ["address1", "address2", "city", "state", "zip", "country"].each do |field|
        self.send("#{field}=", address.send(field))
      end
      
      if save 
        extra = updated_by.nil? ? "" : " from #{updated_by}"
        note = person.notes.create({
          :occurred_at  => DateTime.now.in_time_zone(time_zone),
          :text         => "address updated#{extra}, old address was: (#{old_addr})" })
        note.user = user
      else
        return false
      end      
    end

    true
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
artfully_ose-1.0.0.rc4 app/models/address.rb
artfully_ose-1.0.0.rc3 app/models/address.rb