feat: ✨ add unscribeNewsletter method in HomeController Fo

This commit is contained in:
Nicolas Demangeat 2024-10-10 16:14:29 +02:00
parent e35c25813b
commit cfb98ced39

View file

@ -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.
*