From 88faefe1ed8c7d32abf9aa7d2f67407cfd2d2800 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 24 Jan 2017 18:56:27 -0800 Subject: [PATCH] Licenses listing index API --- .../Controllers/Api/LicensesController.php | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/LicensesController.php b/app/Http/Controllers/Api/LicensesController.php index d34d6fe478..47eaf6c56f 100644 --- a/app/Http/Controllers/Api/LicensesController.php +++ b/app/Http/Controllers/Api/LicensesController.php @@ -4,6 +4,9 @@ namespace App\Http\Controllers\Api; use Illuminate\Http\Request; use App\Http\Controllers\Controller; +use App\Http\Transformers\LicensesTransformer; +use App\Models\License; +use App\Models\Company; class LicensesController extends Controller { @@ -15,12 +18,43 @@ class LicensesController extends Controller * * @return \Illuminate\Http\Response */ - public function index() + public function index(Request $request) { - // + $this->authorize('view', License::class); + $licenses = Company::scopeCompanyables(License::with('company', 'licenseSeatsRelation', 'manufacturer')); + + if ($request->has('search')) { + $licenses = $licenses->TextSearch($request->input('search')); + } + $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']; + $order = $request->input('order') === 'asc' ? 'asc' : 'desc'; + $sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at'; + + switch ($sort) { + case 'manufacturer': + $licenses = $licenses->OrderManufacturer($order); + break; + case 'company': + $licenses = $licenses->OrderCompany($order); + break; + default: + $licenses = $licenses->orderBy($sort, $order); + break; + } + + + $total = $licenses->count(); + $licenses = $licenses->skip($offset)->take($limit)->get(); + return (new LicensesTransformer)->transformLicenses($licenses, $total); + } + + /** * Store a newly created resource in storage. *