vita_app/app/models/product_customer.rb
Nicolas Bally d52c017848 suite
2016-04-28 22:41:58 +02:00

215 lines
4.4 KiB
Ruby
Executable File

class ProductCustomer < ActiveRecord::Base
acts_as_tree
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
has_many :product_orders
has_many :commissions
has_many :account_ribs
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
def mlm_detail_ids
i = 0
parents_id = [self.id]
mlm_children_ids = []
mlm_children_id_by_levels = []
while i != 14 do
i += 1
parents_id = ProductCustomer.where(:parent_id => parents_id).select(:id).map{ |v| v.id}
mlm_children_id_by_levels[i] = parents_id
mlm_children_ids.concat parents_id
end
{
:mlm_children_id_by_levels => mlm_children_id_by_levels,
:mlm_children_ids => mlm_children_ids
}
end
def mlm_children_id_by_levels
self.mlm_detail_ids[:mlm_children_id_by_levels]
end
def mlm_children_ids
self.mlm_detail_ids[:mlm_children_ids]
end
def solde_commissions(devise_id=1)
self.commissions.where(:devise_id => devise_id).sum(:amount)
end
def max_virement(devise_id=1)
self.solde_commissions(1).floor - 5.0
end
def mlm_small_percents
[0,10,6,4,0,0,0,0,0,0,0,0]
end
def callif_now
{:percents => self.mlm_small_percents}
end
def mlm_nbr_niveaux
if self.callif_now
3
else
0
end
end
COUNTRY = [
"Suisse",
"France",
"Allemagne",
"Autriche",
"Belgique",
"Espagne",
"Estonie",
"Finlande",
"Grèce",
"Irlande",
"Italie",
"Luxembourg",
"Malte",
"Pays-Bas",
"Portugal",
"Slovaquie",
"Slovénie",
"Croatie",
"Bulgarie",
"Danemark",
"Hongrie",
"Lettonie",
"Lituanie",
"Pologne",
"République Tchèque",
"Roumanie",
"Royaume Uni",
"Suède",
"Islande",
"Norvège",
"Liechtenstein",
"Monaco",
"Guadeloupe",
"Guyane",
"Martinique",
"La Réunion",
"Mayotte",
"Polynésie française",
"Saint-Barthélemy",
#"Saint-Martin",
#"Saint-Pierre-et-Miquelon",
"Wallis-et-Futuna",
"Nouvelle-Calédonie"
]
end