diff --git a/app/controllers/admin/ModelsController.php b/app/controllers/admin/ModelsController.php
index efc4cc6534..3cc5e3e17d 100755
--- a/app/controllers/admin/ModelsController.php
+++ b/app/controllers/admin/ModelsController.php
@@ -368,40 +368,44 @@ class ModelsController extends AdminController
{
$models = Model::orderBy('created_at', 'DESC')->with('category','assets','depreciation');
($status != 'Deleted') ?: $models->withTrashed()->Deleted();;
- $models = $models->get();
- $actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function($models) {
- if($models->deleted_at=='') {
- return '';
+ if (Input::has('search')) {
+ $models = $models->TextSearch(Input::get('search'));
+ }
+
+ $allowed_columns = ['name'];
+ $order = Input::get('order') === 'asc' ? 'asc' : 'desc';
+ $sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
+
+ $models = $models->orderBy($sort, $order);
+
+ $modelCount = $models->count();
+ $models = $models->skip(Input::get('offset'))->take(Input::get('limit'))->get();
+
+ $rows = array();
+
+ foreach ($models as $model) {
+ if ($model->deleted_at == '') {
+ $actions = '';
} else {
- return '';
+ $actions = '';
}
- });
- return Datatable::collection($models)
- ->addColumn('manufacturer', function($models) {
- return $models->manufacturer->name;
- })
- ->addColumn('name', function ($models) {
- return link_to('/hardware/models/'.$models->id.'/view', $models->name);
- })
- ->showColumns('modelno')
- ->addColumn('asset_count', function($models) {
- return $models->assets->count();
- })
- ->addColumn('depreciation', function($models) {
- return (($models->depreciation)&&($models->depreciation->id > 0)) ? $models->depreciation->name.' ('.$models->depreciation->months.')' : Lang::get('general.no_depreciation');
- })
- ->addColumn('category', function($models) {
- return ($models->category) ? $models->category->name : '';
- })
- ->addColumn('eol', function($models) {
- return ($models->eol) ? $models->eol.' '.Lang::get('general.months') : '';
- })
- ->addColumn($actions)
- ->searchColumns('name','modelno','asset_count','depreciation','category','eol','actions')
- ->orderColumns('name','modelno','asset_count','depreciation','category','eol','actions')
- ->make();
+ $rows[] = array(
+ 'manufacturer' => $model->manufacturer->name,
+ 'name' => link_to('/hardware/models/'.$model->id.'/view', $model->name),
+ 'modelnumber' => $model->modelno,
+ 'numassets' => $model->assets->count(),
+ 'depreciation' => (($model->depreciation)&&($model->depreciation->id > 0)) ? $model->depreciation->name.' ('.$model->depreciation->months.')' : Lang::get('general.no_depreciation'),
+ 'category' => ($model->category) ? $model->category->name : '',
+ 'eol' => ($model->eol) ? $model->eol.' '.Lang::get('general.months') : '',
+ 'actions' => $actions
+ );
+ }
+
+ $data = array('total' => $modelCount, 'rows' => $rows);
+
+ return $data;
}
@@ -410,33 +414,29 @@ class ModelsController extends AdminController
$model = Model::withTrashed()->find($modelID);
$modelassets = $model->assets;
- $actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($modelassets)
- {
- if (($modelassets->assigned_to !='') && ($modelassets->assigned_to > 0)) {
- return ''.Lang::get('general.checkin').'';
- } else {
- return ''.Lang::get('general.checkout').'';
- }
- });
+ $modelassetsCount = $modelassets->Count();
- return Datatable::collection($modelassets)
- ->addColumn('name', function ($modelassets) {
- return link_to('/hardware/'.$modelassets->id.'/view', $modelassets->showAssetName());
- // return $modelassets->name;
- })
- ->addColumn('asset_tag', function ($modelassets) {
- return link_to('/hardware/'.$modelassets->id.'/view', $modelassets->asset_tag);
- })
- ->showColumns('serial')
- ->addColumn('assigned_to', function ($modelassets) {
- if ($modelassets->assigned_to) {
- return link_to('/admin/users/'.$modelassets->assigned_to.'/view', $modelassets->assigneduser->fullName());
+ $rows = array();
+
+ foreach ($modelassets as $asset) {
+ if (($asset->assigned_to !='') && ($asset->assigned_to > 0)) {
+ $actions = ''.Lang::get('general.checkin').'';
+ } else {
+ $actions = ''.Lang::get('general.checkout').'';
}
- })
- ->addColumn($actions)
- ->searchColumns('name','asset_tag','serial','assigned_to','actions')
- ->orderColumns('name','asset_tag','serial','assigned_to','actions')
- ->make();
+
+ $rows[] = array(
+ 'name' => link_to('/hardware/'.$asset->id.'/view', $asset->showAssetName()),
+ 'asset_tag' => link_to('hardware/'.$asset->id.'/view', $asset->asset_tag),
+ 'serial' => $asset->serial,
+ 'assigned_to' => ($asset->assigned_to) ? link_to('/admin/users/'.$asset->assigned_to.'/view', $asset->assigneduser->fullName()) : '',
+ 'actions' => $actions
+ );
+ }
+
+ $data = array('total' => $modelassetsCount, 'rows' => $rows);
+
+ return $data;
}
}
diff --git a/app/models/Category.php b/app/models/Category.php
index 77a59b5c69..6df3fcee5a 100755
--- a/app/models/Category.php
+++ b/app/models/Category.php
@@ -74,5 +74,23 @@ class Category extends Elegant
return $query->where( 'require_acceptance', '=', true );
}
+
+ /**
+ * 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.'%')
+ ->orWhere('category_type', 'LIKE', '%'.$search.'%');
+ });
+ }
}
diff --git a/app/models/Model.php b/app/models/Model.php
index 55a4601c0f..c30a43316c 100755
--- a/app/models/Model.php
+++ b/app/models/Model.php
@@ -75,5 +75,23 @@ class Model extends Elegant
return $query->whereIn( 'category_id', $categoryIdListing );
}
+
+ /**
+ * 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.'%')
+ ->orWhere('modelno', 'LIKE', '%'.$search.'%');
+ });
+ }
}
diff --git a/app/views/backend/models/index.blade.php b/app/views/backend/models/index.blade.php
index 9695b6c0da..7ead7cb695 100755
--- a/app/views/backend/models/index.blade.php
+++ b/app/views/backend/models/index.blade.php
@@ -22,38 +22,56 @@
- {{ Datatable::table()
- ->addColumn(Lang::get('general.manufacturer'),
- Lang::get('admin/models/table.title'),
- Lang::get('admin/models/table.modelnumber'),
- Lang::get('admin/models/table.numassets'),
- Lang::get('general.depreciation'),
- Lang::get('general.category'),
- Lang::get('general.eol'),
- 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.models.list', Input::get('status')),
- 'dom' =>'CT<"clear">lfrtip',
- 'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(6),'activate'=>'mouseover'),
- 'columnDefs'=> array(array('bSortable'=>false,'targets'=>array(6))),
- 'order'=>array(array(0,'asc')),
- )
- )
- ->render() }}
+
+
+
+ | {{Lang::get('general.manufacturer')}} |
+ {{Lang::get('admin/models/table.title')}} |
+ {{Lang::get('admin/models/table.modelnumber')}} |
+ {{Lang::get('admin/models/table.numassets')}} |
+ {{Lang::get('general.depreciation')}} |
+ {{Lang::get('general.category')}} |
+ {{Lang::get('general.eol')}} |
+ {{ Lang::get('table.actions') }} |
+
+
+
+
+@section('moar_scripts')
+
+
+
+
+
+
+
+@stop
@stop
diff --git a/app/views/backend/models/view.blade.php b/app/views/backend/models/view.blade.php
index 215914ba2b..a5bc39fa78 100755
--- a/app/views/backend/models/view.blade.php
+++ b/app/views/backend/models/view.blade.php
@@ -52,25 +52,18 @@
@if (count($model->assets) > 0)
- {{ Datatable::table()
- ->addColumn(Lang::get('general.name'),
- Lang::get('general.asset_tag'),
- Lang::get('admin/hardware/table.serial'),
- Lang::get('general.user'),
- Lang::get('table.actions'))
- ->setOptions(
- array(
- 'sAjaxSource'=>route('api.models.view', $model->id),
- 'dom' =>'CT<"clear">lfrtip',
- 'colVis'=> array('showAll'=>'Show All','restore'=>'Restore','exclude'=>array(4),'activate'=>'mouseover'),
- 'columnDefs'=> array(
- array('bSortable'=>false,'targets'=>array(4)),
- array('width'=>'auto','targets'=>array(4)),
- ),
- 'order'=>array(array(0,'asc')),
- )
- )
- ->render() }}
+
+
+
+
+ | {{Lang::get('general.name')}} |
+ {{Lang::get('general.asset_tag')}} |
+ {{Lang::get('admin/hardware/table.serial')}} |
+ {{Lang::get('general.user')}} |
+ {{ Lang::get('table.actions') }} |
+
+
+
@else
@@ -80,6 +73,7 @@
@endif
+