vita_app/app/models/product_customer.rb
Nicolas Bally 489b53d885 mlm
2016-04-28 12:04:43 +02:00

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