hashcode) { SingleOptin::setStatus($request->email, true); $message = trans('Votre désinscription à la newsletter a été prise en compte'); } } catch (ApiErrorException $e) { if (!$e->getApiError()->equals(ApiError::singleOptinCustomerExists())) { if (app()->bound('sentry')) { app('sentry')->captureException($e); } $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'); } */ 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); } $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')); } /** * setFavoriteRecipe * @param \App\Models\Recipes $recipe * @param boolean $status * @return \Illuminate\Http\JsonResponse * @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException. */ public function setFavoriteRecipe(Recipes $recipe, bool $status) { /** @var \App\Models\Customer */ $customer = Auth::guard('customer')->user(); if ($status) { $customer->recipes()->attach($recipe); } else { $customer->recipes()->detach($recipe); } return response()->json(); } /** * Add item in customer shopping list * * @param \App\Models\Products $publishedProduct * @param boolean $status * @return void */ public function setItemInCart(Products $publishedProduct, bool $status): void { /** @var \App\Models\Customer */ $customer = Auth::guard('customer')->user(); if ($status) { $customer->products()->attach($publishedProduct); } else { $customer->products()->detach($publishedProduct); } } /** * delete * * @param integer $id * @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse */ public function delete(int $id) { // TODO : Implémenter la suppression lorsque la CRM sera prête pour le faire aussi. dd('Not implemented yet'); // Suppression d'un compte client. $customer = Customers::findOrFail($id); $customer->recipes()->delete(); $customer->products()->delete(); $customer->answers()->delete(); // TODO : Suppression via la CRM. /** @var \Illuminate\Auth\SessionGuard */ $guard = Auth::guard('customer'); if ($guard->user()->id === $customer->id) { $guard->logout(); } $customer->delete(); return redirect()->route('home'); } }