ldc-tregalette/app/Http/Controllers/Fo/HomeController.php

89 lines
3 KiB
PHP
Raw Permalink Normal View History

2023-12-15 15:53:55 +00:00
<?php
namespace App\Http\Controllers\Fo;
use App\Enums\StaticPageType;
use App\Http\Controllers\Controller;
use App\Http\Requests\Fo\UnsubscribeNewsletterRequest;
2023-12-15 15:53:55 +00:00
use App\Models\KlubBloc;
use App\Models\News;
use App\Models\Range;
use App\Models\StaticPage;
use Illuminate\Support\Facades\Log;
use LDC\LDCCRM\Enums\ApiError;
use LDC\LDCCRM\Exceptions\ApiErrorException;
use LDC\LDCCRM\Exceptions\CrmException;
use LDC\LDCCRM\Exceptions\ValidationException;
use LDC\LDCCRM\Models\Customer;
use LDC\LDCCRM\Models\SingleOptin;
2023-12-15 15:53:55 +00:00
class HomeController extends Controller
{
/**
* Display the homepage.
*
* @return \Illuminate\Contracts\View\View
*/
public function index(): \Illuminate\Contracts\View\View
{
2023-12-18 11:51:19 +01:00
$rangeModels = Range::query()->limit(3)->inRandomOrder()->get();
2023-12-15 15:53:55 +00:00
$newsModels = News::query()->where('published', true)->orderBy('created_at', 'desc')->limit(6)->get();
2023-12-15 17:11:06 +01:00
$staticPageModel = StaticPage::query()->where('type', StaticPageType::home)->firstOrFail();
2023-12-19 08:32:01 +01:00
$klubBloc = KlubBloc::query()->first();
2023-12-15 17:11:06 +01:00
\throw_if(empty($klubBloc), 'empty klubBloc');
2023-12-15 15:53:55 +00:00
return view('fo.pages.home', compact('staticPageModel', 'rangeModels', 'klubBloc', 'newsModels'));
}
/**
* unsubscribeNewsletter method
*
* @param \App\Http\Requests\Fo\UnsubscribeNewsletterRequest $request
* @return \Illuminate\Contracts\View\View
*/
public function unsubscribeNewsletter(UnsubscribeNewsletterRequest $request): \Illuminate\Contracts\View\View
{
$error = null;
$hashcode = $request->hashcode;
try {
SingleOptin::unsetStatusWithHashcode($hashcode);
} catch (ApiErrorException $e) {
Log::debug($e->getMessage());
if ($e->getApiError()->equals(ApiError::modelNotFound)) {
if ($customer = Customer::find($hashcode)) {
$customer->opt_in = false;
// ! Les données peuvent être parsés en retour de la crm et inconsitantes (Héritage vielle crm).
try {
$customer->save();
} catch (ValidationException $e) {
$error = null;
}
} else {
abort(404);
}
} else {
if (app()->bound('sentry')) {
app('sentry')->captureException($e);
}
$error = true;
}
} catch (CrmException $e) {
Log::debug($e->getMessage());
$error = true;
if (app()->bound('sentry')) {
app('sentry')->captureException($e);
}
} //end try
if (!is_null($error)) {
return view('fo.pages.newsletter-unsubscribe')->with(
'error',
trans('Une erreur est survenue, merci de réessayer ultérieurement')
);
}
return view('fo.pages.newsletter-unsubscribe');
}
2023-12-15 15:53:55 +00:00
}