2023-12-15 15:53:55 +00:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Fo;
|
|
|
|
|
|
|
|
|
|
|
|
use App\Enums\Contact\ObjectEnum;
|
|
|
|
|
|
use App\Enums\StaticPageType;
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
|
|
use App\Http\Requests\Fo\ContactFormRequest;
|
|
|
|
|
|
use App\Mail\SendContactMail;
|
|
|
|
|
|
use App\Models\Product;
|
|
|
|
|
|
use App\Models\StaticPage;
|
|
|
|
|
|
use Illuminate\Contracts\View\View;
|
|
|
|
|
|
use Illuminate\Http\RedirectResponse;
|
|
|
|
|
|
use Illuminate\Support\Arr;
|
|
|
|
|
|
use Illuminate\Support\Carbon;
|
|
|
|
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
|
|
|
|
|
|
|
|
class ContactController extends Controller
|
|
|
|
|
|
{
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Display contact from
|
|
|
|
|
|
*
|
|
|
|
|
|
* @return \Illuminate\Contracts\View\View
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function contact(): View
|
|
|
|
|
|
{
|
2024-01-26 16:24:14 +01:00
|
|
|
|
/** @var \App\Models\Product $productModels */
|
|
|
|
|
|
$productModels = Product::all();
|
2023-12-15 15:53:55 +00:00
|
|
|
|
|
2024-01-26 16:24:14 +01:00
|
|
|
|
/** @var \App\Models\StaticPage $staticPageModel */
|
2023-12-19 08:32:01 +01:00
|
|
|
|
$staticPageModel = StaticPage::query()->where('type', StaticPageType::contact)->firstOrFail();
|
2023-12-15 15:53:55 +00:00
|
|
|
|
|
2024-01-26 16:24:14 +01:00
|
|
|
|
return view('fo.pages.contact', compact('productModels', 'staticPageModel'));
|
2023-12-15 15:53:55 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Submit contact form
|
|
|
|
|
|
*
|
|
|
|
|
|
* @param \App\Http\Requests\Fo\ContactFormRequest $request
|
|
|
|
|
|
* @return \Illuminate\Http\RedirectResponse
|
|
|
|
|
|
*/
|
|
|
|
|
|
public function contactSubmit(ContactFormRequest $request): RedirectResponse
|
|
|
|
|
|
{
|
|
|
|
|
|
// * Cast expected types
|
|
|
|
|
|
$validated = $request->validated();
|
|
|
|
|
|
Arr::set($validated, 'type', ObjectEnum::make(Arr::get($validated, 'type')));
|
|
|
|
|
|
Arr::set($validated, 'product', Product::query()
|
|
|
|
|
|
->where('id', Arr::get($validated, 'product'))->first());
|
|
|
|
|
|
$expiration_date = Arr::get($validated, 'expiration_date');
|
|
|
|
|
|
Arr::set($validated, 'expiration_date', $expiration_date ?
|
|
|
|
|
|
Carbon::createFromFormat('Y-m-d', $expiration_date) : null);
|
|
|
|
|
|
|
2024-01-05 10:43:50 +01:00
|
|
|
|
$receiver_emails = \explode(",", config(\sprintf("mail.contact.%s", $validated['type']->name)));
|
2023-12-19 16:46:34 +01:00
|
|
|
|
foreach ($receiver_emails as $email) {
|
|
|
|
|
|
Mail::to($email)->send(new SendContactMail((object)$validated));
|
|
|
|
|
|
}
|
2023-12-15 15:53:55 +00:00
|
|
|
|
|
|
|
|
|
|
return redirect()->route('fo.contact')
|
|
|
|
|
|
->with(
|
|
|
|
|
|
'success',
|
|
|
|
|
|
trans(
|
|
|
|
|
|
'Bonjour, votre message a bien été transmis. Cordialement, l’équipe :app_name.',
|
|
|
|
|
|
[
|
|
|
|
|
|
'app_name' => config('app.name')
|
|
|
|
|
|
]
|
|
|
|
|
|
)
|
|
|
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|