From 9c5e3007a252b0a25ef8846f304759f3f192cf1d Mon Sep 17 00:00:00 2001 From: Ibnu Maksum Date: Wed, 15 Nov 2023 11:08:18 +0700 Subject: [PATCH] Fix Change package to another Mikrotik --- system/autoload/Package.php | 69 ++++++++++++++++++++++++---------- system/controllers/prepaid.php | 9 ++++- 2 files changed, 56 insertions(+), 22 deletions(-) diff --git a/system/autoload/Package.php b/system/autoload/Package.php index c4db20fb..694e0350 100644 --- a/system/autoload/Package.php +++ b/system/autoload/Package.php @@ -321,23 +321,64 @@ class Package return true; } - public static function changeTo($username, $plan_id) + public static function changeTo($username, $plan_id, $from_id) { - global $_c; $c = ORM::for_table('tbl_customers')->where('username', $username)->find_one(); $p = ORM::for_table('tbl_plans')->where('id', $plan_id)->where('enabled', '1')->find_one(); - $b = ORM::for_table('tbl_user_recharges')->where('customer_id', $c['id'])->where('routers', $p['routers'])->find_one(); - $mikrotik = Mikrotik::info($p['routers']); + $b = ORM::for_table('tbl_user_recharges')->find_one($from_id); + if($p['routers'] == $b['routers']){ + $mikrotik = Mikrotik::info($p['routers']); + }else{ + $mikrotik = Mikrotik::info($b['routers']); + } + // delete first + if ($p['type'] == 'Hotspot') { + if ($b) { + if (!$p['is_radius']) { + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + Mikrotik::removeHotspotUser($client, $c['username']); + Mikrotik::removePpoeUser($client, $c['username']); + Mikrotik::removeHotspotActiveUser($client, $c['username']); + Mikrotik::removePpoeActive($client, $c['username']); + } + } else { + if (!$p['is_radius']) { + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + Mikrotik::removeHotspotUser($client, $c['username']); + Mikrotik::removePpoeUser($client, $c['username']); + Mikrotik::removeHotspotActiveUser($client, $c['username']); + Mikrotik::removePpoeActive($client, $c['username']); + } + } + } else { + if ($b) { + if (!$p['is_radius']) { + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + Mikrotik::removeHotspotUser($client, $c['username']); + Mikrotik::removePpoeUser($client, $c['username']); + Mikrotik::removeHotspotActiveUser($client, $c['username']); + Mikrotik::removePpoeActive($client, $c['username']); + } + } else { + if (!$p['is_radius']) { + $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); + Mikrotik::removeHotspotUser($client, $c['username']); + Mikrotik::removePpoeUser($client, $c['username']); + Mikrotik::removeHotspotActiveUser($client, $c['username']); + Mikrotik::removePpoeActive($client, $c['username']); + } + } + } + // call the next mikrotik + if($p['routers'] != $b['routers']){ + $mikrotik = Mikrotik::info($p['routers']); + } if ($p['type'] == 'Hotspot') { if ($b) { if ($p['is_radius']) { Radius::customerAddPlan($c, $p, $b['expiration'].''.$b['time']); }else{ $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::removeHotspotActiveUser($client, $c['username']); - Mikrotik::removePpoeActive($client, $c['username']); Mikrotik::addHotspotUser($client, $p, $c); } } else { @@ -345,10 +386,6 @@ class Package Radius::customerAddPlan($c, $p, $b['expiration'].''.$b['time']); }else{ $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::removeHotspotActiveUser($client, $c['username']); - Mikrotik::removePpoeActive($client, $c['username']); Mikrotik::addHotspotUser($client, $p, $c); } } @@ -358,10 +395,6 @@ class Package Radius::customerAddPlan($c, $p); }else{ $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::removeHotspotActiveUser($client, $c['username']); - Mikrotik::removePpoeActive($client, $c['username']); Mikrotik::addPpoeUser($client, $p, $c); } } else { @@ -369,10 +402,6 @@ class Package Radius::customerAddPlan($c, $p); }else{ $client = Mikrotik::getClient($mikrotik['ip_address'], $mikrotik['username'], $mikrotik['password']); - Mikrotik::removeHotspotUser($client, $c['username']); - Mikrotik::removePpoeUser($client, $c['username']); - Mikrotik::removeHotspotActiveUser($client, $c['username']); - Mikrotik::removePpoeActive($client, $c['username']); Mikrotik::addPpoeUser($client, $p, $c); } } diff --git a/system/controllers/prepaid.php b/system/controllers/prepaid.php index d8900129..2700b78f 100644 --- a/system/controllers/prepaid.php +++ b/system/controllers/prepaid.php @@ -219,7 +219,11 @@ switch ($action) { } else { $msg .= $_L['Data_Not_Found'] . '
'; } - + $p = ORM::for_table('tbl_plans')->where('id', $plan_id)->where('enabled', '1')->find_one(); + if ($d) { + } else { + $msg .= ' Plan Not Found
'; + } if ($msg == '') { run_hook('edit_customer_plan'); #HOOK $d->username = $username; @@ -227,8 +231,9 @@ switch ($action) { //$d->recharged_on = $recharged_on; $d->expiration = $expiration; $d->time = $time; + $d->routers = $p['routers']; $d->save(); - Package::changeTo($username, $id_plan); + Package::changeTo($username, $id_plan, $id); _log('[' . $admin['username'] . ']: ' . 'Edit Plan for Customer ' . $d['username'] . ' to [' . $d['plan_name'] . '][' . Lang::moneyFormat($d['price']) . ']', 'Admin', $admin['id']); r2(U . 'prepaid/list', 's', $_L['Updated_Successfully']); } else {