ldc-legaulois/app/Http/Controllers/HomeController.php
2021-03-20 14:38:15 +01:00

84 lines
2.9 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Enums\Days;
use App\Enums\EleveurOcbStatus;
use App\Models\Breeders;
use App\Models\HomeSliderPictures;
use App\Models\NewsSliderPictures;
use App\Models\Products;
use App\Models\Reductions;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
class HomeController extends Controller
{
public function index(Request $request)
{
$slides = HomeSliderPictures::where([
['days', '&', Days::make(strtolower(date('D')))->value],
['status', 1]
])->orderBy('order', 'ASC')->get();
$newsSlides = NewsSliderPictures::where('status', 1)->orderBy('order', 'ASC')->get();
// Images d'éleveur
$breeder = Breeders::ocbValidated()->select('picture', 'first_name', 'last_name')
->inRandomOrder()->first();
// Les produits star
$starProducts = Products::select('picture', 'name', 'slug')->where([['star', 1], ['status', 1]])->inRandomOrder()->limit(3)->get();
if ($starProducts->count() < 3) {
$starProducts = $starProducts->concat(Products::select('picture', 'name', 'slug')->where([['star', 0], ['status', 1]])->inRandomOrder()->limit(3 - $starProducts->count())->get());
}
// Montant réductions
$reductions = Reductions::where([
['end_date_broadcast', '>', now()],
['status', 1]
])->get();
$montantReductions = 0.0;
foreach ($reductions as $reduc) {
$montantReductions += $reduc->face_value;
}
return view('home', compact('slides', 'newsSlides', 'breeder', 'starProducts', 'montantReductions'));
}
/**
* 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 incorrect");
}
$email = $request->email;
/** @var \App\Lib\LDCCRM\ApiV1 */
$crm = app('crmApi');
$result = $crm->createSingleOptin($email);
if ($result->status === "OK") {
return __("Votre inscription à la newsletter a été prise en compte");
} else {
switch ($result->code) {
case 120:
return __("L'adresse email est incorrect");
break;
case 121:
return __("Vous êtes déjà inscrit avec cette adresse email");
break;
default:
Log::alert('Failed to add a single opt-in : ' . $result->message);
return __("Une erreur est survenue, merci de réessayer ultérieurement");
}
}
}
}