Changeset View
Changeset View
Standalone View
Standalone View
src/app/Http/Controllers/API/V4/Admin/SkusController.php
<?php | <?php | ||||
namespace App\Http\Controllers\API\V4\Admin; | namespace App\Http\Controllers\API\V4\Admin; | ||||
use App\Sku; | |||||
use Illuminate\Support\Facades\Auth; | |||||
class SkusController extends \App\Http\Controllers\API\V4\SkusController | class SkusController extends \App\Http\Controllers\API\V4\SkusController | ||||
{ | { | ||||
/** | |||||
* Get a list of SKUs available to the user. | |||||
* | |||||
* @param int $id User identifier | |||||
* | |||||
* @return \Illuminate\Http\JsonResponse | |||||
*/ | |||||
public function userSkus($id) | |||||
{ | |||||
$user = \App\User::find($id); | |||||
if (empty($user)) { | |||||
return $this->errorResponse(404); | |||||
} | |||||
if (!Auth::guard()->user()->canRead($user)) { | |||||
return $this->errorResponse(403); | |||||
} | |||||
$type = request()->input('type'); | |||||
$response = []; | |||||
// Note: Order by title for consistent ordering in tests | |||||
$skus = Sku::withObjectTenantContext($user)->orderBy('title')->get(); | |||||
foreach ($skus as $sku) { | |||||
if (!class_exists($sku->handler_class)) { | |||||
continue; | |||||
} | |||||
if (!$sku->handler_class::isAvailable($sku, $user)) { | |||||
continue; | |||||
} | |||||
if ($data = $this->skuElement($sku)) { | |||||
if ($type && $type != $data['type']) { | |||||
continue; | |||||
} | |||||
$response[] = $data; | |||||
} | |||||
} | |||||
usort($response, function ($a, $b) { | |||||
return ($b['prio'] <=> $a['prio']); | |||||
}); | |||||
return response()->json($response); | |||||
} | |||||
} | } |