MLM MemberLevel
Add MemberLevel Model
class MemberLevel < ApplicationRecord
belongs_to :user
serialize :members, Array
@@exit_loop = true
def self.last_user(user)
@@last_user = user.uid
@@exit_loop = true
end
def self.mlm(ruid, max_level)
@max_level = max_level
while (@max_level<=5 && @@exit_loop)
if (MemberLevel.find_by(user_uid: ruid.referral_id, level: @max_level))
update_member(ruid, @max_level)
else
add_new_member(ruid, @max_level)
end
end
end
def self.add_new_member(ruid, lev)
n = find_user(ruid.referral_id)
MemberLevel.create(user_id: n.id ,user_uid: ruid.referral_id, level: @max_level, level_count: 1, members: [@@last_user])
if (n.referral_id.nil?)
@@exit_loop = false
else
u1 = n.referral_id
end
if u1.present?
@max_level+=1
mlm(n,@max_level)
end
end
def self.update_member(ruid, lev)
member = MemberLevel.find_by(user_uid: ruid.referral_id, level: lev)
updated_members_array = member.members << @@last_user
n = find_user(ruid.referral_id)
member.update(user_id: n.id,level_count: member.level_count+1, members: updated_members_array)
#m.update(level_count: m.level_count+1, members: "#{m.members}" +","+ "#{@@last_user}")
n = find_user(ruid.referral_id)
if (n.referral_id.nil?)
@@exit_loop = false
else
u1 = n.referral_id
end
if u1.present?
@max_level+=1
mlm(n,@max_level)
end
end
def self.find_user(id)
User.find_by(uid: id)
end
end
User Create
post '/ragister' do
declared_params = declared(params, include_missing: false)
user_params = declared_params.slice('email', 'password', 'data')
user_params[:referral_id] = parse_refid! unless params[:refid].blank?
user = User.new(declared_params)
return error!({ errors: 'Please check your email, password, and try again', status: 422 }, 422) unless user.save
MemberLevel.last_user(user)
MemberLevel.mlm(user, 1)
activity_record(user: user.id, action: 'signup', result: 'succeed', topic: 'account')
publish_confirmation(user, language, Barong::App.config.domain)
present user, with: API::V1::Entities::UserWithFullInfo
status 200
end
Comments
Post a Comment