Customer View show Active package

This commit is contained in:
Ibnu Maksum 2023-08-23 15:00:34 +07:00
parent 8e45ac40c4
commit 74ac7f3eb4
No known key found for this signature in database
GPG Key ID: 7FC82848810579E5
8 changed files with 179 additions and 79 deletions

View File

@ -1,9 +1,10 @@
<?php <?php
/** /**
* PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/) * PHP Mikrotik Billing (https://github.com/hotspotbilling/phpnuxbill/)
**/ **/
Class Paginator class Paginator
{ {
public static function bootstrap($table, $w1 = '', $c1 = '', $w2 = '', $c2 = '', $w3 = '', $c3 = '', $w4 = '', $c4 = '', $per_page = '10') public static function bootstrap($table, $w1 = '', $c1 = '', $w2 = '', $c2 = '', $w3 = '', $c3 = '', $w4 = '', $c4 = '', $per_page = '10')
{ {
@ -97,4 +98,91 @@ Class Paginator
return $gen; return $gen;
} }
} }
public static function bootstrapRaw($table, $w1 = '', $c1 = [], $per_page = '10')
{
global $routes;
global $_L;
$url = U . $routes['0'] . '/' . $routes['1'] . '/';
$adjacents = "2";
$page = (int)(!isset($routes['2']) ? 1 : $routes['2']);
$pagination = "";
if ($w1 != '') {
$totalReq = ORM::for_table($table)->where_raw($w1, $c1)->count();
} else {
$totalReq = ORM::for_table($table)->count();
}
$i = 0;
$page = ($page == 0 ? 1 : $page);
$start = ($page - 1) * $per_page;
$prev = $page - 1;
$next = $page + 1;
$lastpage = ceil($totalReq / $per_page);
$lpm1 = $lastpage - 1;
$limit = $per_page;
$startpoint = ($page * $limit) - $limit;
if ($lastpage >= 1) {
$pagination .= '<ul class="pagination pagination-sm">';
if ($lastpage < 7 + ($adjacents * 2)) {
for ($counter = 1; $counter <= $lastpage; $counter++) {
if ($counter == $page)
$pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>";
else
$pagination .= "<li><a href='{$url}$counter'>$counter</a></li>";
}
} elseif ($lastpage > 5 + ($adjacents * 2)) {
if ($page < 1 + ($adjacents * 2)) {
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++) {
if ($counter == $page)
$pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>";
else
$pagination .= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination .= "<li class='disabled'><a href='#'>...</a></li>";
$pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
} elseif ($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2)) {
$pagination .= "<li><a href='{$url}1'>1</a></li>";
$pagination .= "<li><a href='{$url}2'>2</a></li>";
$pagination .= "<li class='disabled'><a href='#'>...</a></li>";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++) {
if ($counter == $page)
$pagination .= "<li class='active'><a href='javascript:void(0);'>$counter</a></li>";
else
$pagination .= "<li><a href='{$url}$counter'>$counter</a></li>";
}
$pagination .= "<li class='disabled'><a href='#'>...</a></li>";
$pagination .= "<li><a href='{$url}$lpm1'>$lpm1</a></li>";
$pagination .= "<li><a href='{$url}$lastpage'>$lastpage</a></li>";
} else {
$pagination .= "<li><a href='{$url}1'>1</a></li>";
$pagination .= "<li><a href='{$url}2'>2</a></li>";
$pagination .= "<li><a href='#'>...</a></li>";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++) {
if ($counter == $page)
$pagination .= "<li class='active'><a class='disabled'>$counter</a></li>";
else
$pagination .= "<li><a href='{$url}$counter'>$counter</a></li>";
}
}
}
if ($page < $counter - 1) {
$pagination .= "<li><a href='{$url}$next'>" . $_L['Next'] . "</a></li>";
$pagination .= "<li><a href='{$url}$lastpage'>" . $_L['Last'] . "</a></li>";
} else {
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Next'] . "</a></li>";
$pagination .= "<li class='disabled'><a class='disabled'>" . $_L['Last'] . "</a></li>";
}
$pagination .= "</ul>";
$gen = array("startpoint" => $startpoint, "limit" => $limit, "found" => $totalReq, "page" => $page, "lastpage" => $lastpage, "contents" => $pagination);
return $gen;
}
}
} }

View File

@ -24,15 +24,11 @@ switch ($action) {
case 'list': case 'list':
$ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/customers.js"></script>'); $ui->assign('xfooter', '<script type="text/javascript" src="ui/lib/c/customers.js"></script>');
$search = _post('search'); $search = _post('search');
$what = _post('what');
if (!in_array($what, ['username', 'fullname', 'phonenumber', 'email'])) {
$what = 'username';
}
run_hook('list_customers'); #HOOK run_hook('list_customers'); #HOOK
if ($search != '') { if ($search != '') {
$paginator = Paginator::bootstrap('tbl_customers', 'username', '%' . $search . '%'); $paginator = Paginator::bootstrapRaw('tbl_customers', "(`username` LIKE '%$search%' OR `fullname` LIKE '%$search%' OR `phonenumber` LIKE '%$search%' OR `email` LIKE '%$search%')", [$search, $search, $search, $search]);
$d = ORM::for_table('tbl_customers') $d = ORM::for_table('tbl_customers')
->where_like($what, '%' . $search . '%') ->where_raw("(`username` LIKE '%$search%' OR `fullname` LIKE '%$search%' OR `phonenumber` LIKE '%$search%' OR `email` LIKE '%$search%')", [$search, $search, $search, $search])
->offset($paginator['startpoint']) ->offset($paginator['startpoint'])
->limit($paginator['limit']) ->limit($paginator['limit'])
->order_by_desc('id')->find_many(); ->order_by_desc('id')->find_many();
@ -42,7 +38,6 @@ switch ($action) {
} }
$ui->assign('search', htmlspecialchars($search)); $ui->assign('search', htmlspecialchars($search));
$ui->assign('what', $what);
$ui->assign('d', $d); $ui->assign('d', $d);
$ui->assign('paginator', $paginator); $ui->assign('paginator', $paginator);
$ui->display('customers.tpl'); $ui->display('customers.tpl');
@ -53,10 +48,14 @@ switch ($action) {
$ui->display('customers-add.tpl'); $ui->display('customers-add.tpl');
break; break;
case 'viewu':
$customer = ORM::for_table('tbl_customers')->where('username', $routes['2'])->find_one();
case 'view': case 'view':
$id = $routes['2']; $id = $routes['2'];
run_hook('view_customer'); #HOOK run_hook('view_customer'); #HOOK
if(!$customer){
$customer = ORM::for_table('tbl_customers')->find_one($id); $customer = ORM::for_table('tbl_customers')->find_one($id);
}
if ($customer) { if ($customer) {
$v = $routes['3']; $v = $routes['3'];
if (empty($v) || $v == 'order') { if (empty($v) || $v == 'order') {
@ -82,6 +81,8 @@ switch ($action) {
// $ui->assign('paginator', $paginator); // $ui->assign('paginator', $paginator);
$ui->assign('activation', $activation); $ui->assign('activation', $activation);
} }
$package = ORM::for_table('tbl_user_recharges')->where('username',$customer['username'])->find_one();
$ui->assign('package', $package);
$ui->assign('v', $v); $ui->assign('v', $v);
$ui->assign('d', $customer); $ui->assign('d', $customer);
$ui->display('customers-view.tpl'); $ui->display('customers-view.tpl');

View File

@ -17,11 +17,12 @@ switch ($action) {
break; break;
case 'history': case 'history':
$ui->assign('_system_menu', 'history'); $ui->assign('_system_menu', 'history');
$paginator = Paginator::bootstrap('tbl_payment_gateway', 'username', $user['username']);
$d = ORM::for_table('tbl_payment_gateway') $d = ORM::for_table('tbl_payment_gateway')
->where('username', $user['username']) ->where('username', $user['username'])
->order_by_desc('id') ->order_by_desc('id')
->offset($paginator['startpoint'])->limit($paginator['limit'])
->find_many(); ->find_many();
$paginator = Paginator::bootstrap('tbl_payment_gateway', 'username', $user['username']);
$ui->assign('paginator', $paginator); $ui->assign('paginator', $paginator);
$ui->assign('d', $d); $ui->assign('d', $d);
$ui->assign('_title', Lang::T('Order History')); $ui->assign('_title', Lang::T('Order History'));

View File

@ -370,7 +370,5 @@ $_L['Pay_this_with_Balance_your_active_package_will_be_overwrite'] = 'Pay this w
$_L['Success_to_buy_package'] = 'Success to buy package'; $_L['Success_to_buy_package'] = 'Success to buy package';
$_L['Auto_Renewal'] = 'Auto Renewal'; $_L['Auto_Renewal'] = 'Auto Renewal';
$_L['View'] = 'View'; $_L['View'] = 'View';
$_L['View'] = 'View'; $_L['Back'] = 'Back';
$_L['View'] = 'View'; $_L['Active'] = 'Active';
$_L['View'] = 'View';
$_L['View'] = 'View';

View File

@ -2,9 +2,6 @@
<div class="row"> <div class="row">
<div class="col-sm-4 col-md-4"> <div class="col-sm-4 col-md-4">
<a href="{$_url}customers/list"
class="btn btn-primary btn-sm btn-block">{Lang::T('Back')}</a>
<br>
<div class="box box-primary"> <div class="box box-primary">
<div class="box-body box-profile"> <div class="box-body box-profile">
<img class="profile-user-img img-responsive img-circle" <img class="profile-user-img img-responsive img-circle"
@ -15,41 +12,42 @@
<ul class="list-group list-group-unbordered"> <ul class="list-group list-group-unbordered">
<li class="list-group-item"> <li class="list-group-item">
<b>{$_L['Username']}</b> <a class="pull-right">{$d['username']}</a> <b>{$_L['Username']}</b> <span class="pull-right">{$d['username']}</span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<b>{$_L['Phone_Number']}</b> <a class="pull-right">{$d['phonenumber']}</a> <b>{$_L['Phone_Number']}</b> <span class="pull-right">{$d['phonenumber']}</span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<b>{$_L['Email']}</b> <a class="pull-right">{$d['email']}</a> <b>{$_L['Email']}</b> <span class="pull-right">{$d['email']}</span>
</li> </li>
</ul> </ul>
<p class="text-muted">{Lang::nl2br($d['address'])}</p> <p class="text-muted">{Lang::nl2br($d['address'])}</p>
<ul class="list-group list-group-unbordered"> <ul class="list-group list-group-unbordered">
<li class="list-group-item"> <li class="list-group-item">
<b>{$_L['Password']}</b> <a class="pull-right" style="background-color: black; color:black;" <b>{$_L['Password']}</b> <span class="pull-right" style="background-color: black; color:black;"
onclick="this.select()">{$d['password']}</a> onclick="this.select()">{$d['password']}</span>
</li> </li>
{if $d['pppoe_password'] != ''} {if $d['pppoe_password'] != ''}
<li class="list-group-item"> <li class="list-group-item">
<b>PPPOE {$_L['Password']}</b> <a class="pull-right" <b>PPPOE {$_L['Password']}</b> <span class="pull-right"
style="background-color: black; color:black;" style="background-color: black; color:black;"
onclick="this.select()">{$d['pppoe_password']}</a> onclick="this.select()">{$d['pppoe_password']}</span>
</li> </li>
{/if} {/if}
<li class="list-group-item"> <li class="list-group-item">
<b>{Lang::T('Balance')}</b> <a class="pull-right">{Lang::moneyFormat($d['balance'])}</a> <b>{Lang::T('Balance')}</b> <span class="pull-right">{Lang::moneyFormat($d['balance'])}</span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<b>{Lang::T('Auto Renewal')}</b> <a <b>{Lang::T('Auto Renewal')}</b> <span
class="pull-right">{if $d['auto_renewal']}yes{else}no{/if}</a> class="pull-right">{if $d['auto_renewal']}yes{else}no{/if}</span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<b>{$_L['Created_On']}</b> <a class="pull-right">{Lang::dateTimeFormat($d['created_at'])}</a> <b>{$_L['Created_On']}</b> <span
class="pull-right">{Lang::dateTimeFormat($d['created_at'])}</span>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<b>{Lang::T('Last Login')}</b> <a <b>{Lang::T('Last Login')}</b> <span
class="pull-right">{Lang::dateTimeFormat($d['last_login'])}</a> class="pull-right">{Lang::dateTimeFormat($d['last_login'])}</span>
</li> </li>
</ul> </ul>
<div class="row"> <div class="row">
@ -64,8 +62,31 @@
</div> </div>
</div> </div>
</div> </div>
<!-- /.box-body -->
</div> </div>
{if $package}
<div class="box box-{if $package['status']=='on'}success{else}danger{/if}">
<div class="box-body box-profile">
<h4 class="text-center">{$package['type']} - {$package['namebp']}</h4>
<ul class="list-group list-group-unbordered">
<li class="list-group-item">
{Lang::T('Active')} <span
class="pull-right">{if $package['status']=='on'}yes{else}no{/if}</span>
</li>
<li class="list-group-item">
{$_L['Created_On']} <span class="pull-right">{Lang::dateFormat($package['recharged_on'])}</span>
</li>
<li class="list-group-item">
{$_L['Expires_On']} <span
class="pull-right">{Lang::dateTimeFormat($package['expiration']+' '+$package['time'])}</span>
</li>
<li class="list-group-item">
{$package['routers']} <span class="pull-right">{$package['method']}</span>
</li>
</ul>
</div>
</div>
{/if}
<a href="{$_url}customers/list" class="btn btn-primary btn-sm btn-block mt-1">{Lang::T('Back')}</a><br>
</div> </div>
<div class="col-sm-8 col-md-8"> <div class="col-sm-8 col-md-8">
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">

View File

@ -9,17 +9,8 @@
<div class="col-md-8"> <div class="col-md-8">
<form id="site-search" method="post" action="{$_url}customers/list/"> <form id="site-search" method="post" action="{$_url}customers/list/">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon no-border">
<select name="what">
<option value="username" {if $what=='username'}selected{/if}>Username</option>
<option value="fullname" {if $what=='fullname'}selected{/if}>Name</option>
<option value="phonenumber" {if $what=='phonenumber'}selected{/if}>Phone
</option>
<option value="email" {if $what=='email'}selected{/if}>Email</option>
</select>
</div>
<input type="text" name="search" value="{$search}" class="form-control" <input type="text" name="search" value="{$search}" class="form-control"
placeholder="{$_L['Search_by_Username']}..."> placeholder="{Lang::T('Search')}...">
<div class="input-group-btn"> <div class="input-group-btn">
<button class="btn btn-success" type="submit"><span <button class="btn btn-success" type="submit"><span
class="fa fa-search"></span></button> class="fa fa-search"></span></button>

View File

@ -107,7 +107,7 @@
{foreach $expire as $expired} {foreach $expire as $expired}
<tr> <tr>
<td>{$no++}</td> <td>{$no++}</td>
<td>{$expired['username']}</td> <td><a href="{$_url}customers/viewu/{$expired['username']}">{$expired['username']}</a></td>
<td>{date($_c['date_format'], strtotime($expired['recharged_on']))} <td>{date($_c['date_format'], strtotime($expired['recharged_on']))}
</td> </td>
<td>{date($_c['date_format'], strtotime($expired['expiration']))} {$expired['time']} <td>{date($_c['date_format'], strtotime($expired['expiration']))} {$expired['time']}