snipe-it/app/Http/Controllers/Api/CheckoutRequest.php

30 lines
1.3 KiB
PHP
Raw Normal View History

2024-10-17 10:45:49 -07:00
<?php
namespace App\Http\Controllers\Api;
use App\Actions\CheckoutRequests\CreateCheckoutRequest;
2024-10-22 13:09:35 -07:00
use App\Exceptions\AssetNotRequestable;
2024-10-17 10:45:49 -07:00
use App\Helpers\Helper;
use App\Http\Controllers\Controller;
2024-10-22 13:09:35 -07:00
use App\Models\Asset;
use Illuminate\Auth\Access\AuthorizationException;
2024-10-17 10:45:49 -07:00
use Illuminate\Http\JsonResponse;
class CheckoutRequest extends Controller
{
2024-10-22 13:09:35 -07:00
public function store(CheckoutRequestRequest $request, Asset $asset): JsonResponse
2024-10-17 10:45:49 -07:00
{
2024-10-22 13:09:35 -07:00
try {
CreateCheckoutRequest::run($asset, $request->validated()['user_id']);
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/hardware/message.requests.success')));
} catch (AssetNotRequestable $e) {
return response()->json(Helper::formatStandardApiResponse('error', 'Asset is not requestable'));
} catch (AuthorizationException $e) {
return response()->json(Helper::formatStandardApiResponse('error', null, trans('general.insufficient_permissions')));
} catch (\Exception $e) {
report($e);
return response()->json(Helper::formatStandardApiResponse('error', null, 'Something terrible has gone wrong and we\'re not sure if we can help - may god have mercy on your soul. Contact your admin :)'));
}
2024-10-17 10:45:49 -07:00
}
}