Sha256: 1c888b6238565c2317de3a1ecf6efddf083fa30551942fbc9a85d5bab5b649d3

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

module Highrise
  class Person < Subject
    require 'highrise/rfc822'
    include Pagination
    include Taggable
    include Searchable
    include SubjectData::Mixin
    
    def initialize(*args)
      super(*args)
      create_subject_fields_accessors
    end 
    
    def company
      Company.find(company_id) if company_id
    end
  
    def name
      "#{first_name rescue ''} #{last_name rescue ''}".strip
    end
    
    def address
      contact_data.addresses.first
    end
    
    def web_address
      contact_data.web_addresses.first
    end
    
    def label
      'Party'
    end
    
    def phone_number
      contact_data.phone_numbers.first.number rescue nil
    end
    
    def email_valid?
      !!(email_address && (email_address =~ RFC822::EmailAddress))
    end
    
    def email_address
      contact_data.email_addresses.first.address rescue nil
    end
    alias :email :email_address
    
    def tagged? name
     tags.any?{ | tag | tag['name'].to_s == name}  
    end
    
    def self.tagged_with_name(tag_name)
      tagged_with_id((Tag.find_by_name(tag_name)).id)
    end
    
    def self.tagged_with_id id
     find_all_across_pages(:from => "/tags/#{id}.xml").select do |obj|
        obj.kind_of?(Person)
      end
    end
    
    def create_subject_fields_accessors  
      subject_data_fields.each do |subject_field_name, value|
        # for this instance only
        singleton_class.instance_eval do
          define_method subject_field_name do
            value 
          end
        end
      end
    end
    
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
peterosullivan-highrise-3.0.6 lib/highrise/person.rb
peterosullivan-highrise-3.0.5 lib/highrise/person.rb