From 89088e5517235055c39207da46278b07ec247797 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Tue, 18 Oct 2016 21:15:08 +0300 Subject: [PATCH] Fix product list filter --- app/Http/Controllers/ProductController.php | 2 +- app/Ninja/Repositories/ProductRepository.php | 9 ++++++++- app/Services/ProductService.php | 4 ++-- resources/views/datatable.blade.php | 4 ++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/app/Http/Controllers/ProductController.php b/app/Http/Controllers/ProductController.php index b34c9df39247..9c7269494907 100644 --- a/app/Http/Controllers/ProductController.php +++ b/app/Http/Controllers/ProductController.php @@ -71,7 +71,7 @@ class ProductController extends BaseController */ public function getDatatable() { - return $this->productService->getDatatable(Auth::user()->account_id); + return $this->productService->getDatatable(Auth::user()->account_id, Input::get('sSearch')); } /** diff --git a/app/Ninja/Repositories/ProductRepository.php b/app/Ninja/Repositories/ProductRepository.php index bcf2dfa56f2b..7371581df207 100644 --- a/app/Ninja/Repositories/ProductRepository.php +++ b/app/Ninja/Repositories/ProductRepository.php @@ -17,7 +17,7 @@ class ProductRepository extends BaseRepository ->get(); } - public function find($accountId) + public function find($accountId, $filter = null) { $query = DB::table('products') ->leftJoin('tax_rates', function($join) { @@ -35,6 +35,13 @@ class ProductRepository extends BaseRepository 'products.deleted_at' ); + if ($filter) { + $query->where(function ($query) use ($filter) { + $query->where('products.product_key', 'like', '%'.$filter.'%') + ->orWhere('products.notes', 'like', '%'.$filter.'%'); + }); + } + if (!\Session::get('show_trash:product')) { $query->where('products.deleted_at', '=', null); } diff --git a/app/Services/ProductService.php b/app/Services/ProductService.php index d5a23a57caee..3fcab2fb3580 100644 --- a/app/Services/ProductService.php +++ b/app/Services/ProductService.php @@ -41,10 +41,10 @@ class ProductService extends BaseService * @param $accountId * @return \Illuminate\Http\JsonResponse */ - public function getDatatable($accountId) + public function getDatatable($accountId, $search) { $datatable = new ProductDatatable(true); - $query = $this->productRepo->find($accountId); + $query = $this->productRepo->find($accountId, $search); if(!Utils::hasPermission('view_all')){ $query->where('products.user_id', '=', Auth::user()->id); diff --git a/resources/views/datatable.blade.php b/resources/views/datatable.blade.php index 2b0e2a1a0576..1c60abffe5c2 100644 --- a/resources/views/datatable.blade.php +++ b/resources/views/datatable.blade.php @@ -83,6 +83,10 @@ if (window.onDatatableReady) { window.onDatatableReady(); } + }, + "stateLoadParams": function (settings, data) { + // don't save filter to local storage + data.search.search = ""; } }); }