Company/category search on accessories

This commit is contained in:
snipe
2015-11-24 12:08:49 -08:00
parent 59315878c3
commit 256f33e6b4
4 changed files with 70 additions and 15 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
return array (
'app_version' => 'v2.0.5-pre',
'hash_version' => 'v2.0.5-pre-155-g4ad241e',
'hash_version' => 'v2.0.5-pre-156-gf6e2654',
);
@@ -537,7 +537,7 @@ class AccessoriesController extends AdminController
public function getDatatable()
{
$accessories = Accessory::with('category', 'company')
->whereNull('deleted_at');
->whereNull('accessories.deleted_at');
if (Input::has('search')) {
$accessories = $accessories->TextSearch(Input::get('search'));
@@ -556,11 +556,22 @@ class AccessoriesController extends AdminController
}
$allowed_columns = ['name','order_number','purchase_date','purchase_cost'];
$allowed_columns = ['name','order_number','purchase_date','purchase_cost','companyName','category'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
$accessories = $accessories->orderBy($sort, $order);
switch ($sort)
{
case 'category':
$accessories = $accessories->OrderCategory($order);
break;
case 'companyName':
$accessories = $accessories->OrderCompany($order);
break;
default:
$accessories = $accessories->orderBy($sort, $order);
break;
}
$accessCount = $accessories->count();
$accessories = $accessories->skip($offset)->take($limit)->get();
@@ -568,7 +579,7 @@ class AccessoriesController extends AdminController
$rows = array();
foreach ($accessories as $accessory) {
$actions = '<a href="'.route('checkout/accessory', $accessory->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($accessory->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/accessory', $accessory->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/accessory', $accessory->id).'" data-content="'.Lang::get('admin/accessories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($accessory->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$actions = '<nobr><a href="'.route('checkout/accessory', $accessory->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($accessory->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/accessory', $accessory->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/accessory', $accessory->id).'" data-content="'.Lang::get('admin/accessories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($accessory->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
$company = $accessory->company;
$rows[] = array(
+50 -6
View File
@@ -85,12 +85,56 @@ class Accessory extends Elegant
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeTextSearch($query, $search)
{
{
$search = explode('+', $search);
return $query->where(function($query) use ($search)
{
foreach ($search as $search) {
$query->whereHas('category', function($query) use ($search) {
$query->where('categories.name','LIKE','%'.$search.'%');
})->orWhere(function($query) use ($search) {
$query->whereHas('company', function($query) use ($search) {
$query->where('companies.name','LIKE','%'.$search.'%');
});
})->orWhere(function($query) use ($search) {
$query->whereHas('assetlog', function($query) use ($search) {
$query->where('action_type','=','checkout')
->where('created_at','LIKE','%'.$search.'%');
});
})->orWhere('accessories.name','LIKE','%'.$search.'%')
->orWhere('accessories.order_number','LIKE','%'.$search.'%')
->orWhere('accessories.purchase_cost','LIKE','%'.$search.'%')
->orWhere('accessories.purchase_date','LIKE','%'.$search.'%');
}
});
}
/**
* Query builder scope to order on company
*
* @param Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderCompany($query, $order)
{
return $query->leftJoin('companies', 'accessories.company_id', '=', 'companies.id')->orderBy('companies.name', $order);
}
/**
* Query builder scope to order on company
*
* @param Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderCategory($query, $order)
{
return $query->leftJoin('categories', 'accessories.category_id', '=', 'categories.id')->orderBy('categories.name', $order);
}
return $query->where(function($query) use ($search)
{
$query->where('name', 'LIKE', '%'.$search.'%');
});
}
}
@@ -25,12 +25,12 @@
data-url="{{route('api.accessories.list')}}"
data-cookie="true"
data-click-to-select="true"
data-cookie-id-table="accessoriesTable">
data-cookie-id-table="accessoriesTable-v{{ Config::get('version.app_version') }}srytytyu">
<thead>
<tr>
<th data-switchable="true" data-searchable="false" data-sortable="false" data-field="companyName">@lang('admin/companies/table.title')</th>
<th data-sortable="true" data-field="name">{{Lang::get('admin/accessories/table.title')}}</th>
<th data-searchable="false" data-sortable="false" data-field="category">{{Lang::get('admin/accessories/general.accessory_category')}}</th>
<th data-switchable="true" data-searchable="true" data-sortable="true" data-field="companyName">@lang('admin/companies/table.title')</th>
<th data-sortable="true" data-searchable="true" data-field="name">{{Lang::get('admin/accessories/table.title')}}</th>
<th data-searchable="true" data-sortable="true" data-field="category">{{Lang::get('admin/accessories/general.accessory_category')}}</th>
<th data-searchable="false" data-sortable="false" data-field="qty">{{Lang::get('admin/accessories/general.total')}}</th>
<th data-searchable="true" data-sortable="true" data-field="purchase_date">{{Lang::get('admin/accessories/general.date')}}</th>
<th data-searchable="true" data-sortable="true" data-field="purchase_cost">{{Lang::get('admin/accessories/general.cost')}}</th>