ldc-le-gaulois-pro/app/Http/Controllers/Fo/ContactController.php

66 lines
2.2 KiB
PHP

<?php
namespace App\Http\Controllers\Fo;
use App\Enums\StaticPageType;
use App\Http\Controllers\Controller;
use App\Http\Requests\Fo\Contact\ContactRequest;
use App\Mail\ContactFormMail;
use App\Models\StaticPage;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Session;
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
use LDC\LDCCRM\Models\SingleOptin;
class ContactController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Contracts\View\View
*/
public function index(): \Illuminate\Contracts\View\View
{
/** @var \App\Models\StaticPage */
$staticPageModel = StaticPage::query()->where('type', StaticPageType::contact)->firstOrFail();
return view('fo.pages.contact', compact('staticPageModel'));
}
/**
* Send mail when submit the form.
*
* @param ContactRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function contactSubmit(ContactRequest $request): \Illuminate\Http\RedirectResponse
{
if ($request->opt_in) {
try {
SingleOptin::setStatus($request->email, true);
} catch (ApiErrorException $e) {
\report($e);
return back()
->withErrors(['opt_in' => trans('Une erreur est survenue, merci de réessayer ultérieurement')])
->withInput();
} catch (CrmException $e) {
\report($e);
return back()
->withErrors(['opt_in' => trans('Une erreur est survenue, merci de réessayer ultérieurement')])
->withInput();
}
} //end if
foreach (config('mail.contactsList.contactform') as $recipient) {
Mail::to($recipient)->send(new ContactFormMail($request));
}
Session::forget('saveProductInBasket');
Session::flash('matomo_generate_lead');
return back()->with('success', trans(
'Votre message a bien été envoyé, merci de votre intérêt, nous répondrons dans les meilleurs délais.'
));
}
}