Class: Contact

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/entities/contact.rb

Overview

Schema Information

Table name: contacts

id              :integer         not null, primary key
user_id         :integer
lead_id         :integer
assigned_to     :integer
reports_to      :integer
first_name      :string(64)      default(""), not null
last_name       :string(64)      default(""), not null
access          :string(8)       default("Public")
title           :string(64)
department      :string(64)
source          :string(32)
email           :string(64)
alt_email       :string(64)
phone           :string(32)
mobile          :string(32)
fax             :string(32)
blog            :string(128)
linkedin        :string(128)
facebook        :string(128)
twitter         :string(128)
born_on         :date
do_not_call     :boolean         default(FALSE), not null
deleted_at      :datetime
created_at      :datetime
updated_at      :datetime
background_info :string(255)
skype           :string(128)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create_for(model, account, opportunity, params) ⇒ Object

Class methods.




156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'app/models/entities/contact.rb', line 156

def self.create_for(model, , opportunity, params)
  attributes = {
    :lead_id     => model.id,
    :user_id     => params[:account][:user_id],
    :assigned_to => params[:account][:assigned_to],
    :access      => params[:access]
  }
  %w(first_name last_name title source email alt_email phone mobile blog linkedin facebook twitter skype do_not_call background_info).each do |name|
    attributes[name] = model.send(name.intern)
  end

  contact = Contact.new(attributes)
  contact.business_address = Address.new(:street1 => model.business_address.street1, :street2 => model.business_address.street2, :city => model.business_address.city, :state => model.business_address.state, :zipcode => model.business_address.zipcode, :country => model.business_address.country, :full_address => model.business_address.full_address, :address_type => "Business") unless model.business_address.nil?

  # Save the contact only if the account and the opportunity have no errors.
  if .errors.empty? && opportunity.errors.empty?
    # Note: contact.account = account doesn't seem to work here.
    contact. = AccountContact.new(:account => , :contact => contact) unless .id.blank?
    contact.opportunities << opportunity unless opportunity.id.blank?
    if contact.access != "Lead" || model.nil?
      contact.save_with_permissions(params[:users])
    else
      contact.save_with_model_permissions(model)
    end
  end
  contact
end

.first_name_positionObject



100
# File 'app/models/entities/contact.rb', line 100

def self.first_name_position ; "before" ; end

.outlineObject



99
# File 'app/models/entities/contact.rb', line 99

def self.outline  ; "long"              ; end

.per_pageObject

Default values provided through class methods.




98
# File 'app/models/entities/contact.rb', line 98

def self.per_page ; 20                  ; end

Instance Method Details

#attach!(attachment) ⇒ Object

Attach given attachment to the contact if it hasn’t been attached already.




138
139
140
141
142
# File 'app/models/entities/contact.rb', line 138

def attach!(attachment)
  unless self.send("#{attachment.class.name.downcase}_ids").include?(attachment.id)
    self.send(attachment.class.name.tableize) << attachment
  end
end

#discard!(attachment) ⇒ Object

Discard given attachment from the contact.




146
147
148
149
150
151
152
# File 'app/models/entities/contact.rb', line 146

def discard!(attachment)
  if attachment.is_a?(Task)
    attachment.update_attribute(:asset, nil)
  else # Opportunities
    self.send(attachment.class.name.tableize).delete(attachment)
  end
end

#full_name(format = nil) ⇒ Object Also known as: name




103
104
105
106
107
108
109
# File 'app/models/entities/contact.rb', line 103

def full_name(format = nil)
  if format.nil? || format == "before"
    "#{self.first_name} #{self.last_name}"
  else
    "#{self.last_name}, #{self.first_name}"
  end
end

#save_with_account_and_permissions(params) ⇒ Object

Backend handler for [Create New Contact] form (see contact/create).




114
115
116
117
118
119
# File 'app/models/entities/contact.rb', line 114

def (params)
   = Account.create_or_select_for(self, params[:account], params[:users])
  self. = AccountContact.new(:account => , :contact => self) unless .id.blank?
  self.opportunities << Opportunity.find(params[:opportunity]) unless params[:opportunity].blank?
  self.save_with_permissions(params[:users])
end

#update_with_account_and_permissions(params) ⇒ Object

Backend handler for [Update Contact] form (see contact/update).




123
124
125
126
127
128
129
130
131
132
133
134
# File 'app/models/entities/contact.rb', line 123

def (params)
  if params[:account][:id] == "" || params[:account][:name] == ""
    self. = nil # Contact is not associated with the account anymore.
  else
     = Account.create_or_select_for(self, params[:account], params[:users])
    if self. !=  and .id.present?
      self. = AccountContact.new(:account => , :contact => self)
    end
  end
  self.reload
  self.update_with_permissions(params[:contact], params[:users])
end