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

Popular posts from this blog

rvm setup new ruby install system

masking account number

Ruby install for new system