91 lines
2.2 KiB
Ruby
Executable File
91 lines
2.2 KiB
Ruby
Executable File
class ProductCustomer < ActiveRecord::Base
|
|
|
|
has_secure_password
|
|
validates :email, :presence => true, :uniqueness => true, :format => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i
|
|
validates_presence_of :password, :on => :create
|
|
|
|
|
|
belongs_to :particular_bill, :class_name => "Particular"
|
|
|
|
accepts_nested_attributes_for :particular_bill
|
|
|
|
belongs_to :particular_send, :class_name => "Particular"
|
|
|
|
accepts_nested_attributes_for :particular_send
|
|
|
|
|
|
before_create do
|
|
self.generate_token
|
|
self.generate_mlm_token
|
|
|
|
self.particular_bill = Particular.create(:particular_type => "facturation", :skip_validation => true)
|
|
self.particular_idem = true
|
|
self.particular_send = Particular.create(:particular_type => "expedition", :skip_validation => true)
|
|
|
|
|
|
end
|
|
|
|
def pseudo
|
|
self.particular_bill.firstname.to_s+" "+self.particular_bill.name.to_s
|
|
|
|
end
|
|
|
|
def send_password_reset
|
|
|
|
begin
|
|
self[:reset_password_token] = SecureRandom.urlsafe_base64
|
|
end while ProductCustomer.exists?(:reset_password_token => self[:reset_password_token])
|
|
|
|
self.reset_password_sent_at = Time.now
|
|
self.save(:validate => false)
|
|
ProductCustomerMailer.password_reset(self).deliver
|
|
end
|
|
|
|
|
|
def generate_token
|
|
begin
|
|
self.token = SecureRandom.urlsafe_base64
|
|
puts self.token
|
|
end while ProductCustomer.exists?(:token => self.token)
|
|
end
|
|
|
|
|
|
def generate_mlm_token
|
|
self.mlm_token = loop do
|
|
|
|
mlm_token = SecureRandom.hex(3).upcase
|
|
break mlm_token unless ProductCustomer.exists?(mlm_token: mlm_token)
|
|
end
|
|
end
|
|
|
|
|
|
def self.find_parrain(token)
|
|
|
|
|
|
if token.to_s != ""
|
|
ProductCustomer.find_by_mlm_token(token.upcase)
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
before_validation do
|
|
|
|
if !self.id
|
|
if self.parent_code?
|
|
|
|
if mlm_parent = ProductCustomer.find_parrain(self.parent_code)
|
|
self.parent_id = mlm_parent.id
|
|
self.parent_at_create = true
|
|
else
|
|
errors.add(:parent_code, "Ce code de recommandation n'est pas valide, merci de vérifier son exactitude. ")
|
|
end
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|