75 lines
2.8 KiB
PHP
75 lines
2.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Http\Middlewares;
|
|
|
|
use App\Enums\Contact\ActivitySectorEnum;
|
|
use App\Enums\Contact\ObjectEnum;
|
|
use Domain\Models\ValueObjects\Products\BreedingMethod;
|
|
use Domain\Models\ValueObjects\Products\Business;
|
|
use Domain\Models\ValueObjects\Products\ProductCategory;
|
|
use Domain\Models\ValueObjects\Products\ProductFormat;
|
|
use Domain\Models\ValueObjects\Products\Technology;
|
|
use Domain\Models\ValueObjects\Recipes\ConsumptionTime;
|
|
use Domain\Models\ValueObjects\Recipes\Inspiration;
|
|
use Domain\Models\ValueObjects\Recipes\Season;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Config;
|
|
use Inertia\Middleware;
|
|
use Uwil\LaravelCommon\Helpers\InertiaHelper;
|
|
use Uwil\LaravelCommon\Support\InertiaSharedRegistry;
|
|
use Uwil\LaravelDynamicPages\Enums\PageStatusEnum;
|
|
use Uwil\LaravelDynamicPages\Models\DynamicPage;
|
|
|
|
class HandleInertiaRequests extends Middleware
|
|
{
|
|
/**
|
|
* Define the props that are shared by default.
|
|
*
|
|
* @return array<array-key,mixed>
|
|
*/
|
|
public function share(Request $request): array
|
|
{
|
|
|
|
// Load all published dynamic pages with each parent page relationship.
|
|
$dynamicPageModels = DynamicPage::getModelsCached()
|
|
->where('status', PageStatusEnum::published);
|
|
|
|
$dynamicPages = [];
|
|
|
|
foreach ($dynamicPageModels as $dynamicPageModel) {
|
|
$pascalCase =
|
|
str_replace(' ', '', ucwords(str_replace('-', ' ', $dynamicPageModel->id_key)));
|
|
$dynamicPages["page{$pascalCase}"] = $dynamicPageModel;
|
|
}
|
|
|
|
$props = [
|
|
...InertiaHelper::errorProps(parent::share($request)),
|
|
'dynamicPages' => $dynamicPages,
|
|
// More props here.
|
|
];
|
|
|
|
return array_replace_recursive(
|
|
$props,
|
|
InertiaSharedRegistry::resolve($request)
|
|
);
|
|
}
|
|
|
|
public function shareOnce(Request $request): array
|
|
{
|
|
return array_merge(parent::shareOnce($request), [
|
|
'recaptchaKey' => fn () => Config::string('services.google.recaptcha.public'),
|
|
'activitySectorEnum' => fn () => ActivitySectorEnum::toArray(),
|
|
'objectEnum' => fn () => ObjectEnum::toArray(),
|
|
'breedingMethodEnum' => fn () => BreedingMethod::toArray(),
|
|
'businessEnum' => fn () => Business::toArray(),
|
|
'productCategoryEnum' => fn () => ProductCategory::toArray(),
|
|
'productFormatEnum' => fn () => ProductFormat::toArray(),
|
|
'technologyEnum' => fn () => Technology::toArray(),
|
|
'consumptionTimeEnum' => fn () => ConsumptionTime::toArray(),
|
|
'inspirationEnum' => fn () => Inspiration::toArray(),
|
|
'seasonEnum' => fn () => Season::toArray(),
|
|
]);
|
|
}
|
|
}
|