Filter in voucher list
This commit is contained in:
parent
d11b2a75ef
commit
894f692012
@ -8,7 +8,7 @@
|
||||
|
||||
class Paginator
|
||||
{
|
||||
public static function findMany($query, $search = [], $per_page = '10')
|
||||
public static function findMany($query, $search = [], $per_page = '10', $append_url = "")
|
||||
{
|
||||
global $routes, $ui;
|
||||
$adjacents = "2";
|
||||
@ -18,7 +18,7 @@ class Paginator
|
||||
if (count($search) > 0) {
|
||||
$url .= '&' . http_build_query($search);
|
||||
}
|
||||
$url .= '&p=';
|
||||
$url .= $append_url.'&p=';
|
||||
$totalReq = $query->count();
|
||||
$lastpage = ceil($totalReq / $per_page);
|
||||
$lpm1 = $lastpage - 1;
|
||||
|
@ -352,12 +352,47 @@ switch ($action) {
|
||||
case 'voucher':
|
||||
$ui->assign('_title', Lang::T('Vouchers'));
|
||||
$search = _req('search');
|
||||
$router = _req('router');
|
||||
$customer = _req('customer');
|
||||
$plan = _req('plan');
|
||||
$status = _req('status');
|
||||
$ui->assign('router', $router);
|
||||
$ui->assign('customer', $customer);
|
||||
$ui->assign('status', $status);
|
||||
$ui->assign('plan', $plan);
|
||||
|
||||
$query = ORM::for_table('tbl_plans')
|
||||
->left_outer_join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'));
|
||||
|
||||
if (!empty($router)) {
|
||||
$query->where('tbl_voucher.routers', $router);
|
||||
}
|
||||
|
||||
if ($status == '1' || $status == '0') {
|
||||
$query->where('tbl_voucher.status', $status);
|
||||
}
|
||||
|
||||
if (!empty($plan)) {
|
||||
$query->where('tbl_voucher.id_plan', $plan);
|
||||
}
|
||||
|
||||
if (!empty($customer)) {
|
||||
$query->where('tbl_voucher.user', $customer);
|
||||
}
|
||||
|
||||
$append_url = "&search=" . urlencode($search) . "&router=" . urlencode($router) . "&customer=" . urlencode($customer) . "&plan=" . urlencode($plan) . "&status=" . urlencode($status);
|
||||
|
||||
// option customers
|
||||
$ui->assign('customers', ORM::for_table('tbl_voucher')->distinct()->select("user")->whereNotEqual("user", '0')->findArray());
|
||||
// option plans
|
||||
$plns = ORM::for_table('tbl_voucher')->distinct()->select("id_plan")->findArray();
|
||||
$ui->assign('plans', ORM::for_table('tbl_plans')->selects(["id", 'name_plan'])->whereIdIn(array_column($plns, 'id_plan'))->findArray());
|
||||
|
||||
$ui->assign('routers', array_column(ORM::for_table('tbl_voucher')->distinct()->select("routers")->findArray(), 'routers'));
|
||||
|
||||
if ($search != '') {
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$query = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->left_outer_join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_like('tbl_voucher.code', '%' . $search . '%');
|
||||
$d = Paginator::findMany($query, ["search" => $search]);
|
||||
$query->where_like('tbl_voucher.code', '%' . $search . '%');
|
||||
} else if ($admin['user_type'] == 'Agent') {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
@ -365,17 +400,11 @@ switch ($action) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$query = ORM::for_table('tbl_plans')
|
||||
->left_outer_join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_in('generated_by', $sales)
|
||||
$query->where_in('generated_by', $sales)
|
||||
->where_like('tbl_voucher.code', '%' . $search . '%');
|
||||
$d = Paginator::findMany($query, ["search" => $search]);
|
||||
}
|
||||
} else {
|
||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||
$query = ORM::for_table('tbl_plans')->where('enabled', '1')
|
||||
->left_outer_join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'));
|
||||
$d = Paginator::findMany($query);
|
||||
} else if ($admin['user_type'] == 'Agent') {
|
||||
$sales = [];
|
||||
$sls = ORM::for_table('tbl_users')->select('id')->where('root', $admin['id'])->findArray();
|
||||
@ -383,12 +412,14 @@ switch ($action) {
|
||||
$sales[] = $s['id'];
|
||||
}
|
||||
$sales[] = $admin['id'];
|
||||
$query = ORM::for_table('tbl_plans')
|
||||
->left_outer_join('tbl_voucher', array('tbl_plans.id', '=', 'tbl_voucher.id_plan'))
|
||||
->where_in('generated_by', $sales);
|
||||
$d = Paginator::findMany($query);
|
||||
$query->where_in('generated_by', $sales);
|
||||
}
|
||||
}
|
||||
if ($search != '') {
|
||||
$d = Paginator::findMany($query, ["search" => $search], 10, $append_url);
|
||||
} else {
|
||||
$d = Paginator::findMany($query, [], 10, $append_url);
|
||||
}
|
||||
// extract admin
|
||||
$admins = [];
|
||||
foreach ($d as $k) {
|
||||
@ -411,6 +442,7 @@ switch ($action) {
|
||||
$admins[$adm['id']] = $adm['fullname'] . $tipe;
|
||||
}
|
||||
}
|
||||
|
||||
$ui->assign('admins', $admins);
|
||||
$ui->assign('d', $d);
|
||||
$ui->assign('search', $search);
|
||||
|
@ -647,4 +647,3 @@
|
||||
"Summary": "Summary",
|
||||
"Devices_Not_Found": "Devices Not Found",
|
||||
"Income_reset_date": "Income reset date"
|
||||
}
|
@ -1,110 +1,144 @@
|
||||
{include file="sections/header.tpl"}
|
||||
<!-- voucher -->
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="panel panel-hovered mb20 panel-primary">
|
||||
<div class="panel-heading">
|
||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-danger btn-xs" title="Remove used Voucher" href="{$_url}plan/remove-voucher"
|
||||
onclick="return confirm('Delete all used voucher code?')"><span
|
||||
class="glyphicon glyphicon-trash" aria-hidden="true"></span> Delete All</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="row" style="padding: 5px">
|
||||
<div class="col-lg-3 col-lg-offset-9">
|
||||
<div class="btn-group btn-group-justified" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{$_url}plan/add-voucher" class="btn btn-primary"><i class="ion ion-android-add"></i>
|
||||
{Lang::T('Vouchers')}</a>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="md-whiteframe-z1 mb20 text-center" style="padding: 15px">
|
||||
<div class="col-md-8">
|
||||
<form id="site-search" method="post" action="{$_url}plan/voucher/">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="search" class="form-control"
|
||||
placeholder="{Lang::T('Search by Code Voucher')}..." value="{$search}">
|
||||
<div class="input-group-btn">
|
||||
<button class="btn btn-success" type="submit">{Lang::T('Search')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="btn-group btn-group-justified" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{$_url}plan/add-voucher" class="btn btn-primary btn-block"><i
|
||||
class="ion ion-android-add"></i> {Lang::T('Add Vouchers')}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group btn-group-justified" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{$_url}plan/print-voucher" target="print_voucher"
|
||||
class="btn btn-info btn-block"><i class="ion ion-android-print"></i> Print</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table id="datatable" class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>{Lang::T('Type')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Code Voucher')}</th>
|
||||
<th>{Lang::T('Status Voucher')}</th>
|
||||
<th>{Lang::T('Customer')}</th>
|
||||
<th>{Lang::T('Generated By')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $d as $ds}
|
||||
<tr {if $ds['status'] eq '1'}class="danger" {/if}>
|
||||
<td>{$ds['id']}</td>
|
||||
<td>{$ds['type']}</td>
|
||||
<td>{$ds['routers']}</td>
|
||||
<td>{$ds['name_plan']}</td>
|
||||
<td style="background-color: black; color: black;"
|
||||
onmouseleave="this.style.backgroundColor = 'black';"
|
||||
onmouseenter="this.style.backgroundColor = 'white';">
|
||||
{$ds['code']}</td>
|
||||
<td>{if $ds['status'] eq '0'} <label class="btn-tag btn-tag-success">Not
|
||||
Use</label> {else} <label class="btn-tag btn-tag-danger">Used</label>
|
||||
{/if}</td>
|
||||
<td>{if $ds['user'] eq '0'} -
|
||||
{else}<a href="{$_url}customers/viewu/{$ds['user']}">{$ds['user']}</a>
|
||||
{/if}</td>
|
||||
<td>{if $ds['generated_by']}
|
||||
<a
|
||||
href="{$_url}settings/users-view/{$ds['generated_by']}">{$admins[$ds['generated_by']]}</a>
|
||||
{else} -
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
{if $ds['status'] neq '1'}
|
||||
<a href="{$_url}plan/voucher-view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-success btn-xs"> {Lang::T('View')} </a>
|
||||
{/if}
|
||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||
<a href="{$_url}plan/voucher-delete/{$ds['id']}" id="{$ds['id']}"
|
||||
class="btn btn-danger btn-xs"
|
||||
onclick="return confirm('{Lang::T('Delete')}?')"><i
|
||||
class="glyphicon glyphicon-trash"></i></a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{include file="pagination.tpl"}
|
||||
<div class="btn-group" role="group">
|
||||
<a href="{$_url}plan/print-voucher" target="print_voucher" class="btn btn-info"><i
|
||||
class="ion ion-android-print"></i> Print</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="panel panel-hovered mb20 panel-primary">
|
||||
<div class="panel-heading">
|
||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||
<div class="btn-group pull-right">
|
||||
<a class="btn btn-danger btn-xs" title="Remove used Voucher" href="{$_url}plan/remove-voucher"
|
||||
onclick="return confirm('Delete all used voucher code?')"><span class="glyphicon glyphicon-trash"
|
||||
aria-hidden="true"></span> Delete All</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<form id="site-search" method="post" action="{$_url}plan/voucher/">
|
||||
<div class="row" style="padding: 5px">
|
||||
<div class="col-lg-2">
|
||||
<div class="input-group">
|
||||
<div class="input-group-addon">
|
||||
<span class="fa fa-search"></span>
|
||||
</div>
|
||||
<input type="text" name="search" class="form-control" placeholder="{Lang::T('Code Voucher')}"
|
||||
value="{$search}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<select class="form-control" id="router" name="router">
|
||||
<option value="">{Lang::T('Routers')}</option>
|
||||
{foreach $routers as $r}
|
||||
<option value="{$r}" {if $router eq $r }selected{/if}>{Lang::T($r)}
|
||||
</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<select class="form-control" id="plan" name="plan">
|
||||
<option value="">{Lang::T('Plan Name')}</option>
|
||||
{foreach $plans as $p}
|
||||
<option value="{$p['id']}" {if $plan eq $p['id'] }selected{/if}>{$p['name_plan']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<select class="form-control" id="status" name="status">
|
||||
<option value="-">{Lang::T('Status')}</option>
|
||||
<option value="1" {if $status eq 1 }selected{/if}>Used</option>
|
||||
<option value="0" {if $status eq 0 }selected{/if}>Not Use</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<select class="form-control" id="customer" name="customer">
|
||||
<option value="">{Lang::T('Customer')}</option>
|
||||
{foreach $customers as $c}
|
||||
<option value="{$c['user']}" {if $customer eq $c['user'] }selected{/if}>{$c['user']}</option>
|
||||
{/foreach}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<div class="btn-group btn-group-justified" role="group">
|
||||
<div class="btn-group" role="group">
|
||||
<button class="btn btn-success btn-block" type="submit"><span
|
||||
class="fa fa-search"></span></button>
|
||||
</div>
|
||||
<div class="btn-group" role="group">
|
||||
<a class="btn btn-warning btn-block" title="Clear Search Query" href="{$_url}plan/voucher/"><span
|
||||
class="glyphicon glyphicon-remove-circle"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table id="datatable" class="table table-bordered table-striped table-condensed">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>{Lang::T('Type')}</th>
|
||||
<th>{Lang::T('Routers')}</th>
|
||||
<th>{Lang::T('Plan Name')}</th>
|
||||
<th>{Lang::T('Code Voucher')}</th>
|
||||
<th>{Lang::T('Status Voucher')}</th>
|
||||
<th>{Lang::T('Customer')}</th>
|
||||
<th>{Lang::T('Generated By')}</th>
|
||||
<th>{Lang::T('Manage')}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{foreach $d as $ds}
|
||||
<tr {if $ds['status'] eq '1'}class="danger" {/if}>
|
||||
<td>{$ds['id']}</td>
|
||||
<td>{$ds['type']}</td>
|
||||
<td>{$ds['routers']}</td>
|
||||
<td>{$ds['name_plan']}</td>
|
||||
<td style="background-color: black; color: black;"
|
||||
onmouseleave="this.style.backgroundColor = 'black';"
|
||||
onmouseenter="this.style.backgroundColor = 'white';">
|
||||
{$ds['code']}</td>
|
||||
<td>{if $ds['status'] eq '0'} <label class="btn-tag btn-tag-success">Not
|
||||
Use</label> {else} <label class="btn-tag btn-tag-danger">Used</label>
|
||||
{/if}</td>
|
||||
<td>{if $ds['user'] eq '0'} -
|
||||
{else}<a href="{$_url}customers/viewu/{$ds['user']}">{$ds['user']}</a>
|
||||
{/if}</td>
|
||||
<td>{if $ds['generated_by']}
|
||||
<a href="{$_url}settings/users-view/{$ds['generated_by']}">{$admins[$ds['generated_by']]}</a>
|
||||
{else} -
|
||||
{/if}
|
||||
</td>
|
||||
<td>
|
||||
{if $ds['status'] neq '1'}
|
||||
<a href="{$_url}plan/voucher-view/{$ds['id']}" id="{$ds['id']}" style="margin: 0px;"
|
||||
class="btn btn-success btn-xs"> {Lang::T('View')} </a>
|
||||
{/if}
|
||||
{if in_array($_admin['user_type'],['SuperAdmin','Admin'])}
|
||||
<a href="{$_url}plan/voucher-delete/{$ds['id']}" id="{$ds['id']}" class="btn btn-danger btn-xs"
|
||||
onclick="return confirm('{Lang::T('Delete')}?')"><i
|
||||
class="glyphicon glyphicon-trash"></i></a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/foreach}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<center>
|
||||
{include file="pagination.tpl"}
|
||||
</center>
|
||||
</div>
|
||||
{include file="sections/footer.tpl"}
|
Loading…
x
Reference in New Issue
Block a user