57 lines
2.3 KiB
PHP
57 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Repositories\Fo;
|
|
|
|
use App\Models\Customer;
|
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
|
use Illuminate\Support\Facades\Log;
|
|
use LDC\LDCCRM\Enums\ApiError;
|
|
use LDC\LDCCRM\Exceptions\ApiErrorException;
|
|
use LDC\LDCCRM\Exceptions\CrmException;
|
|
|
|
class CrmRepository
|
|
{
|
|
/**
|
|
* Fetch Crm Customer
|
|
*
|
|
* @param \App\Models\Customer $customer
|
|
* @return \LDC\LDCCRM\Models\Customer|\Illuminate\Http\RedirectResponse
|
|
* @throws \Illuminate\Http\Exceptions\HttpResponseException In case of failure or customer not activated.
|
|
*/
|
|
public function fetchCrmCustomer(Customer $customer): \LDC\LDCCRM\Models\Customer|\Illuminate\Http\RedirectResponse
|
|
{
|
|
try {
|
|
$crmUser = $customer->api_data;
|
|
|
|
// ? Le compte du joueur est vérifié ?
|
|
if (!$crmUser->status) {
|
|
// * Le joueur doit avoir un compte vérifié pour participer.
|
|
response()->redirectToRoute('fo.verification.notice')
|
|
->with('error', trans('Pour participer votre compte doit être activé'))
|
|
->throwResponse();
|
|
}
|
|
return $crmUser;
|
|
} catch (ApiErrorException $e) {
|
|
// * Customer is not found.
|
|
if ($e->getApiError()->equals(ApiError::modelNotFound)) {
|
|
// * Déconnexion immédiate et retour maison.
|
|
auth('frontend')->logout();
|
|
response()->redirectToRoute('fo.homepage')
|
|
->with('error', trans('Une erreur est survenue, compte introuvable.'))
|
|
->throwResponse();
|
|
}
|
|
report($e);
|
|
Log::error('Unhandled response ' . $e->getApiError()->label());
|
|
// * Retenter ?
|
|
back()->with('error', trans('Une erreur est survenue, veuillez réssayer.'))->throwResponse();
|
|
} catch (HttpResponseException $e) {
|
|
// * continue this
|
|
throw $e;
|
|
} catch (CrmException | \Exception $e) {
|
|
report($e);
|
|
// * Retenter ?
|
|
back()->with('error', trans('Une erreur est survenue, veuillez réssayer.'))->throwResponse();
|
|
} //end try
|
|
return back()->withErrors(trans('Une erreur est survenue, merci de réessayer ultérieurement.'));
|
|
}
|
|
}
|