2024-10-17 10:45:49 -07:00
< ? php
namespace App\Http\Controllers\Api ;
2024-10-22 20:33:29 -07:00
use App\Actions\CheckoutRequests\CancelCheckoutRequest ;
2024-10-17 10:45:49 -07:00
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 15:25:58 -07:00
public function store ( Asset $asset ) : JsonResponse
2024-10-17 10:45:49 -07:00
{
2024-10-22 13:09:35 -07:00
try {
2024-10-22 15:25:58 -07:00
CreateCheckoutRequest :: run ( $asset , auth () -> user ());
2024-10-22 13:09:35 -07:00
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
}
2024-10-22 20:33:29 -07:00
public function destroy ( Asset $asset ) : JsonResponse
{
2024-10-22 23:41:27 -07:00
try {
CancelCheckoutRequest :: run ( $asset , auth () -> user ());
return response () -> json ( Helper :: formatStandardApiResponse ( 'success' , null , trans ( 'admin/hardware/message.requests.canceled' )));
} catch ( \Exception $e ) {
report ( $e );
return response () -> json ( Helper :: formatStandardApiResponse ( 'error' , null , $e -> getMessage ()));
}
2024-10-22 20:33:29 -07:00
}
2024-10-17 10:45:49 -07:00
}