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
}
}