feat: ✨ add unscribeNewsletter method in HomeController Fo
This commit is contained in:
parent
e35c25813b
commit
cfb98ced39
1 changed files with 61 additions and 0 deletions
|
|
@ -17,10 +17,14 @@ use App\Models\Recipe;
|
|||
use App\Models\StaticPage;
|
||||
use App\Models\Video;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Validation\ValidationException as IlluminateValidationException;
|
||||
use LDC\LDCCRM\Enums\ApiError;
|
||||
use LDC\LDCCRM\Exceptions\ApiErrorException;
|
||||
use LDC\LDCCRM\Exceptions\CrmException;
|
||||
use LDC\LDCCRM\Exceptions\ValidationException;
|
||||
use LDC\LDCCRM\Models\SingleOptin;
|
||||
use LDC\LDCCRM\Models\Customer;
|
||||
|
||||
class HomeController extends Controller
|
||||
{
|
||||
|
|
@ -81,6 +85,63 @@ class HomeController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unsubscribe from newsletter
|
||||
*
|
||||
* @param App\Http\Requests\Fo\SingleOptinRequest $request
|
||||
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory
|
||||
*/
|
||||
public function unscribeNewsletter(SingleOptinRequest $request)
|
||||
{
|
||||
// TODO: handle single optin avec hashcode.
|
||||
$message = null;
|
||||
|
||||
try {
|
||||
// ? Is hashcode valid ?
|
||||
Validator::validate([
|
||||
'hashcode' => $request->hashcode
|
||||
], [
|
||||
'hashcode' => 'required|uuid'
|
||||
]);
|
||||
if ($customer = Customer::find($request->hashcode)) {
|
||||
$customer->opt_in = false;
|
||||
// ! Les données peuvent être parsés en retour de la crm et inconsitantes (Héritage vielle crm).
|
||||
try {
|
||||
$customer->save();
|
||||
} catch (ValidationException $e) {
|
||||
$message = null;
|
||||
}
|
||||
$message = trans('Votre désinscription à la newsletter a été prise en compte');
|
||||
}
|
||||
} catch (IlluminateValidationException $e) {
|
||||
// Les données peuvent être parsés en retour de la crm et sont inconsitantes.
|
||||
$message = null;
|
||||
} catch (ApiErrorException $e) {
|
||||
if (!$e->getApiError()->equals(ApiError::singleOptinCustomerExists)) {
|
||||
if (app()->bound('sentry')) {
|
||||
app('sentry')->captureException($e);
|
||||
}
|
||||
if ($request->hashcode) {
|
||||
SingleOptin::setStatus($request->email, true);
|
||||
$message = trans('Votre désinscription à la newsletter a été prise en compte');
|
||||
} else {
|
||||
$message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
|
||||
}
|
||||
}
|
||||
} catch (CrmException $e) {
|
||||
if (app()->bound('sentry')) {
|
||||
app('sentry')->captureException($e);
|
||||
}
|
||||
$message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
|
||||
}//end try
|
||||
|
||||
if (!$message) {
|
||||
$message = trans('Le lien de désinscription est invalide');
|
||||
}
|
||||
|
||||
return view('front.singleoptin-unsubscribe', compact('message'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display a listing of the resource.
|
||||
*
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue