feat(Contact & membership forms update with their notification)
All checks were successful
Deploy Roxane to Preprod / deploy (push) Successful in 26h10m46s

This commit is contained in:
2026-04-07 18:06:20 +02:00
parent ca464e8e06
commit c848a8b47f
16 changed files with 602 additions and 517 deletions

View File

@@ -7,32 +7,33 @@ use App\Http\Requests\Forms\ContactRequest;
use App\Services\ContactService;
use Illuminate\Http\RedirectResponse;
use Inertia\Inertia;
use Inertia\Response;
class ContactFormController extends Controller
{
public function __construct(protected ContactService $contactService) {}
/**
* Show the contact form page.
*/
public function create()
public function create(): Response
{
return Inertia::render('forms/contact');
return Inertia::render('forms/contact', [
'captcha_question' => $this->generateCaptcha(),
]);
}
/**
* Handle an incoming contact form submission.
* @throws \Illuminate\Validation\ValidationException
*/
public function store(ContactRequest $request): RedirectResponse
{
$validated = $request->validated();
try {
$this->contactService->registerNewContactRequest($validated);
} catch (\Throwable $e) {
\Log::error('Erreur lors de la création d\'un contact', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
'data' => $validated,
'data' => $validated,
]);
return to_route('contact')->with('error', __('contacts.responses.error'));
@@ -41,4 +42,13 @@ class ContactFormController extends Controller
return to_route('contact')->with('success', __('contacts.responses.success'));
}
private function generateCaptcha(): string
{
$a = random_int(1, 9);
$b = random_int(1, 9);
session(['captcha_contact' => (string) ($a + $b)]);
return "Combien font {$a} + {$b} ?";
}
}

View File

@@ -4,55 +4,69 @@ namespace App\Http\Controllers\Forms;
use App\Http\Controllers\Controller;
use App\Http\Requests\Forms\MembershipRequest;
use App\Models\Membership;
use App\Models\Package;
use App\Models\Service;
use App\Services\MemberService;
use Carbon\Carbon;
use Illuminate\Http\RedirectResponse;
use Inertia\Inertia;
use Inertia\Response;
class MembershipFormController extends Controller
{
public function __construct(protected MemberService $memberService) {}
/**
* Show the contact form page.
*/
public function create()
public function create(): Response
{
$remainingMonths = 13 - now()->month;
$plans = Package::query()
->where('is_active', true)
->select('id', 'identifier', 'name', 'price', 'description')
->get()
->map(fn (Package $p) => [
'id' => $p->id,
'identifier' => $p->identifier,
'name' => $p->name,
'description' => $p->description,
'price' => $p->identifier === 'custom' ? $remainingMonths : (float) $p->price,
'months' => $p->identifier === 'custom' ? $remainingMonths : null,
]);
return Inertia::render('forms/membership', [
'plans' => Package::query()
->where('is_active', true)
->select('id', 'identifier', 'name', 'price', 'description')
->get()
'plans' => $plans,
'services' => Service::query()->select('name', 'description')->get(),
'captcha_question' => $this->generateCaptcha(),
]);
}
/**
* Handle an incoming membership form request.
*
*/
public function store(MembershipRequest $request): RedirectResponse
{
dd($request->validated());
$validated = $request->validated();
try {
$this->memberService->registerNewMember($validated);
} catch (\Throwable $e) {
\Log::error('Erreur lors de la création dun membre', [
\Log::error('Erreur lors de la création d\'un membre', [
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
'data' => $validated,
'data' => $validated,
]);
return redirect()
->route('membership')
->with('error', Membership::getAttributeLabel('memberships.subscription.error'));
return to_route('membership')
->with('error', __('memberships.fields.subscription.error'));
}
return redirect()
->route('membership')
->with('success', Membership::getAttributeLabel('memberships.subscription.success'));
return to_route('membership')
->with('success', __('memberships.fields.subscription.success'));
}
private function generateCaptcha(): string
{
$a = random_int(1, 9);
$b = random_int(1, 9);
session(['captcha_membership' => (string) ($a + $b)]);
return "Combien font {$a} + {$b} ?";
}
}