Class: Contact
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- Contact
- Defined in:
- app/models/entities/contact.rb
Overview
Copyright © 2008-2013 Michael Dvorkin and contributors.
Fat Free CRM is freely distributable under the terms of MIT license. See MIT-LICENSE file or www.opensource.org/licenses/mit-license.php
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
-
.create_for(model, account, opportunity, params) ⇒ Object
Class methods.
- .first_name_position ⇒ Object
-
.per_page ⇒ Object
Default values provided through class methods.
Instance Method Summary collapse
-
#attach!(attachment) ⇒ Object
Attach given attachment to the contact if it hasn’t been attached already.
-
#discard!(attachment) ⇒ Object
Discard given attachment from the contact.
-
#full_name(format = nil) ⇒ Object
(also: #name)
—————————————————————————-.
-
#save_with_account_and_permissions(params) ⇒ Object
Backend handler for [Create New Contact] form (see contact/create).
-
#update_with_account_and_permissions(params) ⇒ Object
Backend handler for [Update Contact] form (see contact/update).
Class Method Details
.create_for(model, account, opportunity, params) ⇒ Object
Class methods.
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 |
# File 'app/models/entities/contact.rb', line 160 def self.create_for(model, account, 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) # Set custom fields. if model.class.respond_to?(:fields) model.class.fields.each do |field| if contact.respond_to?(field.name) contact.send "#{field.name}=", model.send(field.name) end end end 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 account.errors.empty? && opportunity.errors.empty? # Note: contact.account = account doesn't seem to work here. contact.account_contact = AccountContact.new(account: account, contact: contact) unless account.id.blank? if contact.access != "Lead" || model.nil? contact.save else contact.(model) end contact.opportunities << opportunity unless opportunity.id.blank? # must happen after contact is saved end contact end |
.first_name_position ⇒ Object
107 108 109 |
# File 'app/models/entities/contact.rb', line 107 def self.first_name_position "before" end |
.per_page ⇒ Object
Default values provided through class methods.
103 104 105 |
# File 'app/models/entities/contact.rb', line 103 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.
142 143 144 145 146 |
# File 'app/models/entities/contact.rb', line 142 def attach!() unless send("#{.class.name.downcase}_ids").include?(.id) send(.class.name.tableize) << end end |
#discard!(attachment) ⇒ Object
Discard given attachment from the contact.
150 151 152 153 154 155 156 |
# File 'app/models/entities/contact.rb', line 150 def discard!() if .is_a?(Task) .update_attribute(:asset, nil) else # Opportunities send(.class.name.tableize).delete() end end |
#full_name(format = nil) ⇒ Object Also known as: name
112 113 114 115 116 117 118 |
# File 'app/models/entities/contact.rb', line 112 def full_name(format = nil) if format.nil? || format == "before" "#{first_name} #{last_name}" else "#{last_name}, #{first_name}" end end |
#save_with_account_and_permissions(params) ⇒ Object
Backend handler for [Create New Contact] form (see contact/create).
123 124 125 126 127 128 |
# File 'app/models/entities/contact.rb', line 123 def (params) save_account(params) result = save opportunities << Opportunity.find(params[:opportunity]) unless params[:opportunity].blank? result end |
#update_with_account_and_permissions(params) ⇒ Object
Backend handler for [Update Contact] form (see contact/update).
132 133 134 135 136 137 138 |
# File 'app/models/entities/contact.rb', line 132 def (params) save_account(params) # Must set access before user_ids, because user_ids= method depends on access value. self.access = params[:contact][:access] if params[:contact][:access] self.attributes = params[:contact] save end |