ldc-doux/app/Http/Controllers/HomeController.php

60 lines
2 KiB
PHP
Raw Normal View History

2021-11-18 14:36:06 +01:00
<?php
namespace App\Http\Controllers;
2022-05-12 16:03:40 +02:00
use App\Enums\Page;
2022-05-13 13:19:40 +02:00
use App\Models\Encart;
use App\Models\Post;
use App\Models\Product;
2022-05-12 16:03:40 +02:00
use App\Models\SeoDatum;
2021-12-17 17:27:25 +01:00
use App\Models\Slide;
2021-12-08 17:32:31 +01:00
use App\Models\Slider;
2021-12-17 17:27:25 +01:00
use Illuminate\Support\Carbon;
2021-11-18 14:36:06 +01:00
class HomeController extends Controller
{
2022-08-29 17:23:10 +02:00
/**
* Show the Homepage view.
*
* @return \Illuminate\Contracts\View\View
*/
2021-11-18 14:36:06 +01:00
public function index()
{
2022-05-12 16:03:40 +02:00
2022-08-11 12:34:27 +02:00
$page = Page::home();
2022-07-27 14:33:56 +02:00
$seoDatum = SeoDatum::where('page', $page)->first();
2022-05-12 16:03:40 +02:00
2021-12-08 17:32:31 +01:00
$slider = Slider::where('published', 1)->first();
2021-12-17 17:27:25 +01:00
if ($slider) {
2026-10-27 09:12:51 +01:00
$slides = Slide::whereHas('slider', function (\Illuminate\Contracts\Database\Query\Builder $q) use ($slider): void {
2021-12-17 17:27:25 +01:00
$q->whereId($slider->id);
2026-10-27 09:12:51 +01:00
})->where(function ($q): void {
2021-12-17 17:27:25 +01:00
$q->where(
2026-10-27 09:12:51 +01:00
function ($q): void {
$q->where('date_start', '<=', \Illuminate\Support\Facades\Date::now()->format('Y-m-d H:i:s'))
->where('date_end', '>', \Illuminate\Support\Facades\Date::now()->format('Y-m-d H:i:s'));
2021-12-17 17:27:25 +01:00
}
2026-10-27 09:12:51 +01:00
)->orWhere(function ($q): void {
2021-12-17 17:27:25 +01:00
$q->whereNull('date_start')
->whereNull('date_end');
});
})->orderBy('order', 'ASC')
->get();
} else {
2022-05-13 13:19:40 +02:00
$slides = null;
2021-12-17 17:27:25 +01:00
}
2022-05-13 13:19:40 +02:00
$encart_home = Encart::where('page', Page::homeHeader()->value)->first();
$post_home = Post::where([
2026-10-27 09:12:51 +01:00
['date_start', '<=', \Illuminate\Support\Facades\Date::now()->format('Y-m-d H:i:s')],
['date_end', '>', \Illuminate\Support\Facades\Date::now()->format('Y-m-d H:i:s')],
2022-05-13 13:19:40 +02:00
['on_top', true]
])->first();
2022-08-29 17:23:10 +02:00
// Limitation à 3 produits affichés sur la homepage.
2022-05-13 13:19:40 +02:00
$products_home = Product::where('is_on_top', true)->take(3)->get();
return view('front.home', compact('slider', 'slides', 'seoDatum', 'encart_home', 'post_home', 'products_home'));
2021-11-18 14:36:06 +01:00
}
}