mmsc_app/app/models/particular.rb
Nicolas Bally dbcab11c01 suite
2020-07-22 15:50:47 +02:00

128 lines
3.2 KiB
Ruby

class Particular < ApplicationRecord
has_many :p_contacts, :as => :contactable, :dependent => :destroy
accepts_nested_attributes_for :p_contacts, allow_destroy: true
has_many :open_range_elements, :as => :element
has_many :open_ranges, :through => :open_range_elements
belongs_to :owner, :polymorphic => true
#validates :civilite, :presence => true, :if => :force_validate_name
#validates :name, :presence => true, :if => :force_validate_name
validates :firstname, :presence => true, :if => :force_validate_name
validates :email, :presence => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, :if => :force_email_validation
#validates :address_2, :presence => true, :if => :force_validation
#validates :cp, :presence => true, :if => :force_validation
#validates :city, :presence => true, :if => :force_validation
#validates :country, :presence => true, :if => :force_validation
validates :tel, :presence => true, :if => :force_validate_tel
#validates :organisation, :presence => true, :if => :force_organisation_validation
attr_accessor :validate_email, :skip_email, :validate_name, :validate_tel, :skip_organisation
belongs_to :particular_ref, :class_name => "Particular"
def validate_pro
true if self.force_validation and self.pro
end
def force_organisation_validation
if self.force_validation and !self.skip_organisation
true
else
false
end
end
def force_email_validation
if self.validate_email and (!self.skip_email or self.skip_email.to_s == "")
true
else
false
end
end
def force_validate_name
if true #self.validate_name
true
else
false
end
end
def force_validate_tel
if self.validate_tel and self.validate_tel.to_s != ""
true
else
false
end
end
def force_validation
if false #self.skip_validation
false
else
true
end
end
def long_name
r = ""
r+= "#{self.civilite} " if self.civilite
r+= "#{self.firstname} " if self.firstname
r+= "#{self.name} " if self.name
return r
end
def address_longue
address_2.to_s + " " + address_3.to_s
end
def address_line
r = ""
r+= self.organisation+" " if self.organisation?
r+= self.name+" " if self.name?
r+= self.firstname+" " if self.firstname?
r+= self.address_1+" " if self.address_1?
r+= self.address_2+" " if self.address_2?
r+= self.address_3+" " if self.address_3?
r+= self.cp+" " if self.cp?
r+= self.city+" " if self.city?
return r
end
after_save do
self.generate_hist
end
def generate_hist(message = "Changement des coordonnées")
if self.owner_type == "PCustomer"
particular_hist = ParticularHist.new(:p_customer_id => self.owner_id, :particular_id => self.id)
[:civilite, :name, :firstname, :address_2, :address_3, :cp, :city, :country, :tel, :email].each do |att|
eval "particular_hist.#{att.to_s} = self.#{att.to_s}"
end
particular_hist.description = message
particular_hist.email = self.owner.email
particular_hist.npai = self.owner.npai
particular_hist.save
end
end
end