From 4c26d1e5058935e9fccc85abf36491bda4a100cc Mon Sep 17 00:00:00 2001 From: System User Date: Fri, 6 Mar 2026 16:19:46 +0100 Subject: [PATCH 1/3] feat :sparkles: : save draft contact form --- app/Http/Controllers/Fo/ContactController.php | 30 ++++++++++- config/mail.php | 2 +- resources/views/fo/pages/contact.blade.php | 53 ++++++++++++++----- routes/web-fo.php | 1 + 4 files changed, 71 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Fo/ContactController.php b/app/Http/Controllers/Fo/ContactController.php index bef8f54..3aa7dbb 100644 --- a/app/Http/Controllers/Fo/ContactController.php +++ b/app/Http/Controllers/Fo/ContactController.php @@ -7,6 +7,8 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Fo\Contact\ContactRequest; use App\Mail\ContactFormMail; use App\Models\StaticPage; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Session; use LDC\LDCCRM\Exceptions\ApiErrorException; @@ -35,6 +37,14 @@ class ContactController extends Controller */ public function contactSubmit(ContactRequest $request): \Illuminate\Http\RedirectResponse { + $recipients = config('mail.contactsList.contactform'); + + if (empty($recipients)) { + Log::warning('Aucun destinataire configuré pour le formulaire de contact.'); + return back() + ->withErrors(['global' => __('Une erreur est survenue, veuillez réessayer plus tard.')]) + ->withInput(); + } $redirection = back()->with('success', trans( 'Votre message a bien été envoyé, merci de votre intérêt, nous répondrons dans les meilleurs délais.' )); @@ -57,14 +67,32 @@ class ContactController extends Controller } } //end if - foreach (config('mail.contactsList.contactform') as $recipient) { + foreach ($recipients as $recipient) { Mail::to($recipient)->send(new ContactFormMail($request)); } Session::forget('saveProductInBasket'); + Session::forget('contact_draft'); + Session::flash('matomo_generate_lead'); return $redirection; } + + /** + * Save data form as draft + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\JsonResponse + */ + public function saveDraft(Request $request): \Illuminate\Http\JsonResponse + { + $request->session()->put('contact_draft', $request->only([ + 'firstname', 'lastname', 'email', 'phone', + 'activity', 'society', 'postcode', 'city', + 'message', 'callTime', 'opt_in', + ])); + + return response()->json(['success' => true]); + } } diff --git a/config/mail.php b/config/mail.php index 69e1837..74ebf44 100644 --- a/config/mail.php +++ b/config/mail.php @@ -120,6 +120,6 @@ return [ */ 'contactsList' => [ - 'contactform' => explode(',', env('MAIL_LIST_CONTACTFORM') ?? ''), + 'contactform' => array_filter(explode(',', env('MAIL_LIST_CONTACTFORM', '') ?? '')), ] ]; diff --git a/resources/views/fo/pages/contact.blade.php b/resources/views/fo/pages/contact.blade.php index babf29e..3ecea8f 100644 --- a/resources/views/fo/pages/contact.blade.php +++ b/resources/views/fo/pages/contact.blade.php @@ -1,3 +1,7 @@ +@php + $draft = Session::get('contact_draft', []); + $val = fn(string $key) => old($key, $draft[$key] ?? ''); +@endphp @extends('fo.layout', ['page' => 'contact']) @section('title', $staticPageModel->seo_title) @@ -34,22 +38,22 @@
+ value="{{ $val('firstname') }}" placeholder="{{ __('Prénom') }}"> @include('fo.modules.input-error', ['inputName' => 'firstname'])
+ value="{{ $val('lastname') }}" placeholder="{{ __('Nom *') }}" required> @include('fo.modules.input-error', ['inputName' => 'lastname'])
+ value="{{ $val('email') }}" placeholder="{{ __('Adresse e-mail *') }}" required> @include('fo.modules.input-error', ['inputName' => 'email'])
+ value="{{ $val('phone') }}" placeholder="{{ __('N° de téléphone *') }}" required> @include('fo.modules.input-error', ['inputName' => 'phone'])
@@ -57,28 +61,28 @@ name="activity" role="button"> {{ __('Votre activité') }} * @foreach (\App\Enums\Contact\ContactActivityEnum::toArray() as $key => $activity) + @if (old('activity',$draft['activity'] ?? '') == $activity->value) selected @endif>{{ $activity->label }} @endforeach @include('fo.modules.input-error', ['inputName' => 'activity'])
+ value="{{ $val('society') }}" placeholder="{{ __('Société') }}"> @include('fo.modules.input-error', ['inputName' => 'society'])
+ value="{{ $val('postcode') }}" placeholder="{{ __('Code postal') }}"> @include('fo.modules.input-error', ['inputName' => 'postcode'])
+ value="{{ $val('city') }}" placeholder="{{ __('Ville') }}"> @include('fo.modules.input-error', ['inputName' => 'city'])
@@ -87,7 +91,7 @@
@include('fo.modules.input-error', ['inputName' => 'message']) + placeholder="{{ __('Votre message') }} ({{ __('min. 20 caractères.') }}) *" required>{{ $val('message') }}
@@ -115,7 +119,7 @@
value) checked @endif> + @if (old('callTime', $draft['callTime'] ?? '') == $contactTime->value) checked @endif>