diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index 8e186c0a83..70f96f9b15 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -59,6 +59,10 @@ class LicensesController extends Controller $licenses->where('manufacturer_id','=',$request->input('manufacturer_id')); } + if ($request->has('supplier_id')) { + $licenses->where('supplier_id','=',$request->input('supplier_id')); + } + if ($request->has('depreciation_id')) { $licenses->where('depreciation_id','=',$request->input('depreciation_id')); } @@ -69,22 +73,26 @@ class LicensesController extends Controller $offset = request('offset', 0); $limit = request('limit', 50); - - $allowed_columns = ['id','name','purchase_cost','expiration_date','purchase_order','order_number','notes','purchase_date','serial','manufacturer','company','license_name','license_email']; $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; - $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; - switch ($sort) { + + switch ($request->input('sort')) { case 'manufacturer': $licenses = $licenses->OrderManufacturer($order); break; + case 'supplier': + $licenses = $licenses->OrderSupplier($order); + break; case 'company': $licenses = $licenses->OrderCompany($order); break; default: + $allowed_columns = ['id','name','purchase_cost','expiration_date','purchase_order','order_number','notes','purchase_date','serial','company','license_name','license_email']; + $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; $licenses = $licenses->orderBy($sort, $order); break; } + $total = $licenses->count(); $licenses = $licenses->skip($offset)->take($limit)->get(); diff --git a/app/Models/License.php b/app/Models/License.php index 1d3670653d..ca2c9c7281 100755 --- a/app/Models/License.php +++ b/app/Models/License.php @@ -401,6 +401,20 @@ class License extends Depreciable ->orderBy('manufacturers.name', $order); } + /** + * Query builder scope to order on supplier + * + * @param \Illuminate\Database\Query\Builder $query Query builder instance + * @param text $order Order + * + * @return \Illuminate\Database\Query\Builder Modified query builder + */ + public function scopeOrderSupplier($query, $order) + { + return $query->leftJoin('suppliers', 'licenses.supplier_id', '=', 'suppliers.id')->select('licenses.*') + ->orderBy('suppliers.name', $order); + } + /** * Query builder scope to order on company * diff --git a/app/Presenters/LicensePresenter.php b/app/Presenters/LicensePresenter.php index c5ea1757eb..2a7f8c0526 100644 --- a/app/Presenters/LicensePresenter.php +++ b/app/Presenters/LicensePresenter.php @@ -61,6 +61,14 @@ class LicensePresenter extends Presenter "searchable" => true, "sortable" => true, "title" => trans('admin/licenses/form.to_name'), + ], [ + "field" => "supplier", + "searchable" => true, + "sortable" => true, + "switchable" => true, + "title" => trans('general.supplier'), + "visible" => false, + "formatter" => "suppliersLinkObjFormatter" ], [ "field" => "manufacturer", "searchable" => true,