ldc-bien-etre-animal/app/Http/Controllers/Front/ContactController.php

66 lines
2 KiB
PHP
Raw Normal View History

2026-08-14 18:19:25 +02:00
<?php
declare(strict_types=1);
namespace App\Http\Controllers\Front;
use App\Events\ContactRequested;
use App\Http\Requests\ContactRequest;
2026-08-14 18:19:25 +02:00
use Illuminate\Http\RedirectResponse;
use Inertia\Inertia;
use Inertia\Response;
use Uwil\LaravelCommon\Controllers\CommonController;
class ContactController extends CommonController
{
public function index(): Response
{
return Inertia::render('front/Pages/Contact', [
'profiles' => [
['label' => 'Consommateur', 'value' => 'consommateur'],
['label' => 'Éleveur', 'value' => 'eleveur'],
],
'countries' => [
['label' => 'France', 'value' => 'fr'],
['label' => 'Belgique', 'value' => 'be'],
],
2026-08-14 18:19:25 +02:00
'communities' => [
['label' => 'La Communauté Amont', 'value' => 'amont'],
['label' => 'La Communauté Aval', 'value' => 'aval'],
['label' => 'La Communauté Transformateurs', 'value' => 'transformateurs'],
['label' => 'La Communauté Scientifique', 'value' => 'scientifique'],
['label' => 'La Communauté Autres Parties Prenantes', 'value' => 'autres'],
],
]);
}
public function store(ContactRequest $request): RedirectResponse
2026-08-14 18:19:25 +02:00
{
$attachment = null;
if ($request->hasFile('attachment')) {
$file = $request->file('attachment');
2026-08-31 12:40:30 +02:00
$fileContents = file_get_contents($file->getRealPath());
if ($fileContents === false) {
abort(500, "Impossible de lire le fichier joint.");
}
$attachment = [
'name' => $file->getClientOriginalName(),
'mime' => $file->getMimeType(),
2026-08-31 12:40:30 +02:00
'content' => base64_encode($fileContents),
];
}
ContactRequested::dispatch(
$request->safe()->except('attachment'),
$attachment,
);
2026-08-14 18:19:25 +02:00
$request->hitEmailRateLimit();
2026-08-14 18:19:25 +02:00
return back()->with('success', true);
}
}