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. *