83 lines
2.8 KiB
PHP
83 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Enums\Days;
|
|
use App\Http\Requests\SingleOptinRequest;
|
|
use App\Models\HomeSliderPictures;
|
|
use App\Models\NewsSliderPictures;
|
|
use App\Models\OCBBreeder;
|
|
use App\Models\PageJoinus;
|
|
use App\Models\Products;
|
|
use App\Models\Reductions;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
class HomeController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$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 = OCBBreeder::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(SingleOptinRequest $request)
|
|
{
|
|
$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");
|
|
case 121:
|
|
return __("Vous êtes déjà inscrit avec cette adresse email");
|
|
default:
|
|
Log::alert('Failed to add a single opt-in : ' . $result->message);
|
|
return __("Une erreur est survenue, merci de réessayer ultérieurement");
|
|
}
|
|
}
|
|
}
|
|
|
|
public function joinUs()
|
|
{
|
|
return view('front.joinus', ['joinus' => PageJoinus::firstOrFail()]);
|
|
}
|
|
}
|