diff --git a/app/controllers/admin/LicensesController.php b/app/controllers/admin/LicensesController.php index 1ad87cde1e..a93c0185cd 100755 --- a/app/controllers/admin/LicensesController.php +++ b/app/controllers/admin/LicensesController.php @@ -887,32 +887,39 @@ class LicensesController extends AdminController } public function getDatatable() { - $licenses = License::orderBy('created_at', 'DESC')->get(); + $licenses = License::select('id','name','serial','purchase_date','seats'); - $actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function($licenses) { - return 'remaincount() > 0) ? '' : 'disabled').'>'.Lang::get('general.checkout').' '; - }); + if (Input::has('search')) { + $licenses = $licenses->TextSearch(Input::get('search')); + } - return Datatable::collection($licenses) - ->addColumn('name', function($licenses) { - return link_to('/admin/licenses/'.$licenses->id.'/view', $licenses->name); - }) - ->addColumn('serial', function($licenses) { - return link_to('/admin/licenses/'.$licenses->id.'/view', mb_strimwidth($licenses->serial, 0, 50, "...")); - }) - ->addColumn('totalSeats', function($licenses) { - return $licenses->totalSeatsByLicenseID(); - }) - ->addColumn('remaining', function($licenses) { - return $licenses->remaincount(); - }) - ->addColumn('purchase_date', function($licenses) { - return $licenses->purchase_date; - }) - ->addColumn($actions) - ->searchColumns('name','serial','totalSeats','remaining','purchase_date','actions') - ->orderColumns('name','serial','totalSeats','remaining','purchase_date','actions') - ->make(); + $allowed_columns = ['name']; + $order = Input::get('order') === 'asc' ? 'asc' : 'desc'; + $sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at'; + + $licenses = $licenses->orderBy($sort, $order); + + $licenseCount = $licenses->count(); + $licenses = $licenses->skip(Input::get('offset'))->take(Input::get('limit'))->get(); + + $rows = array(); + + foreach ($licenses as $license) { + $actions = 'remaincount() > 0) ? '' : 'disabled').'>'.Lang::get('general.checkout').' '; + + $rows[] = array( + 'name' => link_to('/admin/licenses/'.$license->id.'/view', $license->name), + 'serial' => link_to('/admin/licenses/'.$license->id.'/view', mb_strimwidth($license->serial, 0, 50, "...")), + 'totalSeats' => $license->totalSeatsByLicenseID(), + 'remaining' => $license->remaincount(), + 'purchase_date' => ($license->purchase_date) ? $license->purchase_date : '', + 'actions' => $actions + ); + } + + $data = array('total' => $licenseCount, 'rows' => $rows); + + return $data; } public function getFreeLicense($licenseId) { diff --git a/app/models/License.php b/app/models/License.php index 3a55253d66..d2be54b610 100755 --- a/app/models/License.php +++ b/app/models/License.php @@ -176,4 +176,21 @@ public function freeSeat() ->get(); } + + /** + * Query builder scope to search on text + * + * @param Illuminate\Database\Query\Builder $query Query builder instance + * @param text $search Search term + * + * @return Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeTextSearch($query, $search) + { + + return $query->where(function($query) use ($search) + { + $query->where('name', 'LIKE', '%'.$search.'%'); + }); + } } diff --git a/app/views/backend/licenses/index.blade.php b/app/views/backend/licenses/index.blade.php index f49bfe3969..c2c899b702 100755 --- a/app/views/backend/licenses/index.blade.php +++ b/app/views/backend/licenses/index.blade.php @@ -17,39 +17,46 @@
- {{ Datatable::table() - ->addColumn(Lang::get('admin/licenses/table.title'), - Lang::get('admin/licenses/table.serial'), - Lang::get('admin/licenses/form.seats'), - Lang::get('admin/licenses/form.remaining_seats'), - Lang::get('admin/licenses/table.purchase_date'), - Lang::get('table.actions')) - ->setOptions( - array( - 'language' => array( - 'search' => Lang::get('general.search'), - 'lengthMenu' => Lang::get('general.page_menu'), - 'loadingRecords' => Lang::get('general.loading'), - 'zeroRecords' => Lang::get('general.no_results'), - 'info' => Lang::get('general.pagination_info'), - 'processing' => Lang::get('general.processing'), - 'paginate'=> array( - 'first'=>Lang::get('general.first'), - 'previous'=>Lang::get('general.previous'), - 'next'=>Lang::get('general.next'), - 'last'=>Lang::get('general.last'), - ), - ), - 'sAjaxSource'=>route('api.licenses.list'), - 'dom' =>'CT<"clear">lfrtip', - 'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(5),'activate'=>'mouseover'), - 'columnDefs'=> array( - array('bSortable'=>false,'targets'=>array(5)), - array('width'=>'20%','targets'=>array(5)), - ), - 'order'=>array(array(0,'asc')), - ) - ) - ->render() }} + + + + + + + + + + + +
{{Lang::get('admin/licenses/table.title')}}{{Lang::get('admin/licenses/table.serial')}}{{Lang::get('admin/licenses/form.seats')}}{{Lang::get('admin/licenses/form.remaining_seats')}}{{Lang::get('admin/licenses/table.purchase_date')}}{{Lang::get('table.actions')}}
+ + @stop