diff --git a/app/config/version.php b/app/config/version.php index 4a7d3f9a75..4a9397aa2f 100644 --- a/app/config/version.php +++ b/app/config/version.php @@ -1,5 +1,5 @@ 'v2.0.5-pre', - 'hash_version' => 'v2.0.5-pre-155-g4ad241e', + 'hash_version' => 'v2.0.5-pre-156-gf6e2654', ); \ No newline at end of file diff --git a/app/controllers/admin/AccessoriesController.php b/app/controllers/admin/AccessoriesController.php index d4cd7a49a7..b431c7159e 100755 --- a/app/controllers/admin/AccessoriesController.php +++ b/app/controllers/admin/AccessoriesController.php @@ -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 = 'numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').''; + $actions = 'numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').''; $company = $accessory->company; $rows[] = array( diff --git a/app/models/Accessory.php b/app/models/Accessory.php index d9ed52608a..a8f7e78c97 100755 --- a/app/models/Accessory.php +++ b/app/models/Accessory.php @@ -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.'%'); - }); - } } diff --git a/app/views/backend/accessories/index.blade.php b/app/views/backend/accessories/index.blade.php index 2ef3cbf9f2..4e47ee7bf2 100755 --- a/app/views/backend/accessories/index.blade.php +++ b/app/views/backend/accessories/index.blade.php @@ -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"> - @lang('admin/companies/table.title') - {{Lang::get('admin/accessories/table.title')}} - {{Lang::get('admin/accessories/general.accessory_category')}} + @lang('admin/companies/table.title') + {{Lang::get('admin/accessories/table.title')}} + {{Lang::get('admin/accessories/general.accessory_category')}} {{Lang::get('admin/accessories/general.total')}} {{Lang::get('admin/accessories/general.date')}} {{Lang::get('admin/accessories/general.cost')}}