ldc-boutique-cnc/app/Http/Controllers/HomeController.php
2022-08-25 12:26:43 +02:00

65 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Content;
use App\Models\Product;
use App\Models\Slider;
use App\Models\Range;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use LDC\LDCCRM\Enums\ApiError;
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
use LDC\LDCCRM\Models\SingleOptin;
class HomeController extends Controller
{
public function index(Request $request)
{
$content = Content::where('key', 'accueil')->first();
// star products
$products = Product::where('status', 1)->where('star', 1)->get();
$slider = Slider::where('slug', 'home')->first();
$slides = $slider->showableSlides;
$quickorder_ranges = Range::with('products')->get();
foreach ($quickorder_ranges as $range) {
foreach ($range->products as $product) {
$product->calculatedPrices = $product->getCalcPrices();
}
}
return view('home', compact('content', 'products', 'slides', 'quickorder_ranges'));
}
/**
* Call the CRM to add a single optin
* @param string $email Email to add as a single optin
* @return string Message to print to the customer
*/
public function addOptIn(Request $request)
{
$validator = Validator::make($request->all(), ['email' => 'required|email']);
if ($validator->fails()) {
return __('L\'adresse email est incorrecte');
}
try {
SingleOptin::setStatus($request->email, true);
return trans('Votre inscription à la newsletter a été prise en compte');
} catch (ApiErrorException $e) {
// * Il y a deja un customerInfo avec optin a true pour ce customer
if ($e->getApiError()->equals(ApiError::singleOptinCustomerExists())) {
return trans('Vous êtes déjà inscrit avec cette adresse email');
}
report($e);
return trans('Une erreur est survenue, merci de réessayer ultérieurement');
} catch (CrmException $e) {
report($e);
return trans('Une erreur est survenue, merci de réessayer ultérieurement');
}
return trans('Une erreur est survenue, merci de réessayer ultérieurement ');
}
}