ldc-legaulois/app/Http/Controllers/CustomerController.php

114 lines
3.9 KiB
PHP
Raw Normal View History

<?php
namespace App\Http\Controllers;
use App\Lib\Utils;
use App\Models\Customers;
use App\Models\Products;
use App\Models\Recipes;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use LDC\LDCCRM\Enums\ApiError;
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
2021-11-30 15:36:43 +01:00
use LDC\LDCCRM\Exceptions\ValidationException;
use LDC\LDCCRM\Models\Customer;
class CustomerController extends Controller
{
2021-06-23 15:16:56 +02:00
public function unscribeNewsletter(Request $request)
{
$message = null;
// TODO: handle single optin avec hashcode
// try {
// if ($request->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())) {
// Utils::sendEmailErrorManually($e);
// $message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
// }
// } catch (CrmException $e) {
// Utils::sendEmailErrorManually($e);
// $message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
// }
try {
if ($request->hashcode and ($customer = Customer::find($request->hashcode))) {
$customer->opt_in = false;
2021-11-30 15:36:43 +01:00
// TODO remove this temps fix because LG crm data is not consistant
// les données sont parsés en retour de la crm et sont inconsitantes
try {
$customer->save();
} catch (ValidationException $e) {
$message = null;
}
$message = trans('Votre désinscription à la newsletter a été prise en compte');
}
} catch (ApiErrorException $e) {
if (!$e->getApiError()->equals(ApiError::singleOptinCustomerExists())) {
Utils::sendEmailErrorManually($e);
$message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
}
} catch (CrmException $e) {
Utils::sendEmailErrorManually($e);
$message = trans('Une erreur est survenue, merci de réessayer ultérieurement');
}
2021-03-05 15:55:22 +01:00
if (!$message) {
$message = trans('Le lien de déinscription est invalide');
2021-03-05 15:55:22 +01:00
}
return view('front.singleoptin-unsubscribe', compact('message'));
}
2021-03-05 09:53:08 +01:00
public function setFavoriteRecipe(Recipes $recipe, bool $status)
2021-03-05 15:55:22 +01:00
{
/** @var \App\Models\Customer */
2021-02-24 16:04:53 +01:00
$customer = Auth::guard('customer')->user();
2021-03-05 09:53:08 +01:00
if ($status) {
$customer->recipes()->attach($recipe);
} else {
$customer->recipes()->detach($recipe);
}
return response()->json();
}
2021-03-05 12:47:02 +01:00
public function setItemInCart(Products $product, bool $status)
2021-03-05 15:55:22 +01:00
{
2021-03-05 12:47:02 +01:00
/** @var \App\Models\Customer */
2021-02-24 16:04:53 +01:00
$customer = Auth::guard('customer')->user();
2021-03-08 15:56:47 +01:00
if ($status) {
2021-03-05 12:47:02 +01:00
$customer->products()->attach($product);
} else {
$customer->products()->detach($product);
}
}
2021-03-05 15:55:22 +01:00
public function delete($id)
{
// TODO : Implémenter la suppression lorsque la CRM sera prête pour le faire aussi
2021-06-14 15:15:52 +02:00
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
2021-06-14 15:15:52 +02:00
/** @var \Illuminate\Auth\SessionGuard */
$guard = Auth::guard('customer');
if ($guard->user()->id === $customer->id) {
$guard->logout();
2021-03-20 14:38:15 +01:00
}
$customer->delete();
return redirect()->route('home');
}
}