ldc-boutique-cnc/app/Http/Controllers/HomeController.php

77 lines
2.5 KiB
PHP
Raw Permalink Normal View History

2021-04-06 14:08:57 +02:00
<?php
namespace App\Http\Controllers;
use App\Models\Content;
2021-04-08 18:05:17 +02:00
use App\Models\Product;
2021-04-14 17:33:55 +02:00
use App\Models\Slider;
use App\Models\Range;
2021-04-06 14:08:57 +02:00
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;
2021-04-06 14:08:57 +02:00
class HomeController extends Controller
{
2022-09-03 16:56:16 +02:00
/**
* Display homepage
*
* @param Request $request
* @return \Illuminate\Contracts\View\View
*
* @phpcs:disable Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClass
*/
2021-04-06 14:08:57 +02:00
public function index(Request $request)
{
2022-09-03 16:56:16 +02:00
// @phpcs:enable
2021-04-06 14:08:57 +02:00
$content = Content::where('key', 'accueil')->first();
2022-09-03 16:56:16 +02:00
// Star products.
2021-04-08 18:05:17 +02:00
$products = Product::where('status', 1)->where('star', 1)->get();
$slider = Slider::where('slug', 'home')->first();
2021-04-14 17:33:55 +02:00
$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'));
2021-04-06 14:08:57 +02:00
}
/**
* Call the CRM to add a single optin
2022-09-03 16:56:16 +02:00
*
* @param Request $request
* @return \Illuminate\Contracts\View\View
*
2021-04-06 14:08:57 +02:00
*/
public function addOptIn(Request $request)
{
$validator = Validator::make($request->all(), ['email' => 'required|email']);
if ($validator->fails()) {
return __('L\'adresse email est incorrecte');
2021-04-06 14:08:57 +02:00
}
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');
2021-04-06 14:08:57 +02:00
}
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');
2021-04-06 14:08:57 +02:00
}
return trans('Une erreur est survenue, merci de réessayer ultérieurement ');
2021-04-06 14:08:57 +02:00
}
}