private function distributeCommission($user, $amount, $operator) { // 1. මේ ගනුදෙනුවට අදාළ සම්පූර්ණ ලාභය (Profit Margin) ගමු // උදා: API එකෙන් 10% ලැබෙනවා, Retailer ට 6% දෙනවා නම්, Margin එක 4% යි. $totalMargin = 4.0; $currentUser = $user; // 2. යූසර්ගේ සිට ඉහළට (Parent ID) දිගේ ඇඩ්මින් දක්වා යනවා while ($currentUser->parent_id != null) { $parent = User::find($currentUser->parent_id); if (!$parent) break; $commissionToPay = 0; // ඒ ඒ මට්ටමට හිමි පංගුව (Settings වලින් ගන්න පුළුවන්) switch ($parent->level) { case 'master': $commissionToPay = 1.0; // 1% break; case 'manager': $commissionToPay = 0.5; // 0.5% break; case 'distributor': $commissionToPay = 1.0; // 1% break; case 'admin': // ඇඩ්මින්ට ලැබෙන්නේ ඉතිරි වෙන මුළු ලාභයමයි $commissionToPay = $totalMargin; break; } if ($commissionToPay > 0) { $profit = ($amount * $commissionToPay) / 100; $parent->increment('wallet_balance', $profit); // ඉතිරි වන මාර්ජින් එක අඩු කරනවා (ඇඩ්මින්ට ඉතිරි ටික යන්න) if ($parent->level != 'admin') { $totalMargin -= $commissionToPay; } // Transaction History එකට ඇතුළත් කිරීම Transaction::create([ 'user_id' => $parent->id, 'amount' => $profit, 'type' => 'commission', 'description' => "Commission from {$user->username} for {$operator} reload" ]); } // ඊළඟ ඉහළ මට්ටමට (Parent) යනවා $currentUser = $parent; } }