intra_app/app/models/p_customer.rb
2019-07-22 17:50:21 +02:00

62 lines
1.4 KiB
Ruby

class PCustomer < ActiveRecord::Base
has_many :particulars, :as => :owner, :dependent => :destroy
has_many :p_contacts, :as => :contactable
accepts_nested_attributes_for :p_contacts
has_many :p_customer_sheets
accepts_nested_attributes_for :particulars
belongs_to :particular
accepts_nested_attributes_for :particular
before_validation do
generate_mlm_token
end
before_save do
self.name = self.show_name
end
def self.for_search(search)
PCustomer.joins(:particular).where("code LIKE ? or particulars.organisation LIKE ? or particulars.name LIKE ? or particulars.firstname LIKE ?","%#{search}%", "%#{search}%", "%#{search}%", "%#{search}%")
end
def generate_mlm_token
if !self.mlm_token?
self.mlm_token = loop do
mlm_token = SecureRandom.hex(3).upcase
break mlm_token unless PCustomer.exists?(mlm_token: mlm_token)
end
end
end
def name
self.show_name
end
def show_name
if self.particular
n = ""
n += self.particular.organisation+" " if self.particular.organisation?
n += self.particular.name+" " if self.particular.name?
n += self.particular.firstname+" " if self.particular.firstname?
return n
end
end
after_create do
if !self.particular and self.particulars.count > 0
self.particular = self.particulars.first
self.save
end
end
end