65 lines
2 KiB
PHP
65 lines
2 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Controllers\Front;
|
|
|
|
use App\Services\NewsRepository;
|
|
use Inertia\Inertia;
|
|
use Inertia\Response;
|
|
use Uwil\LaravelCommon\Controllers\CommonController;
|
|
|
|
class HomeController extends CommonController
|
|
{
|
|
public function index(): Response
|
|
{
|
|
$trans = trans('home_page');
|
|
|
|
return Inertia::render('front/Pages/HomePage', [
|
|
'metaTitle' => $trans['meta']['title'],
|
|
'metaDescription' => $trans['meta']['description'],
|
|
'heroVideoSrc' => $trans['hero']['video_src'],
|
|
'stats' => $trans['chiffres_cles']['stats'],
|
|
'brands' => $trans['marques']['brands'],
|
|
'testimonials' => $this->getTestimonials($trans),
|
|
'featuredArticles' => $this->getFeaturedArticles(),
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @param array<string, mixed> $trans
|
|
* @return array<int, array<string, mixed>>
|
|
*/
|
|
private function getTestimonials(array $trans): array
|
|
{
|
|
/** @var array<int, array<string, mixed>> $testimonials */
|
|
$testimonials = $trans['rejoindre']['testimonials'] ?? [];
|
|
|
|
return collect($testimonials)
|
|
->map(fn ($t) => [
|
|
'quote' => $t['quote'],
|
|
'authorName' => $t['author_name'],
|
|
'authorRole' => $t['author_role'],
|
|
'authorPhoto' => $t['author_photo'],
|
|
'logo' => $t['logo'],
|
|
])->all();
|
|
}
|
|
|
|
/**
|
|
* @return array<int, array<string, mixed>>
|
|
*/
|
|
private function getFeaturedArticles(): array
|
|
{
|
|
return collect(NewsRepository::all())
|
|
->take(3)
|
|
->map(fn ($a) => [
|
|
'slug' => $a['slug'],
|
|
'title' => $a['title'],
|
|
'excerpt' => $a['excerpt'],
|
|
'date' => $a['date'],
|
|
'rotation' => $a['rotation'],
|
|
])
|
|
->values()
|
|
->all();
|
|
}
|
|
}
|