2025-09-16 16:44:49 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Database\Seeders;
|
|
|
|
|
|
2026-01-15 16:55:01 +01:00
|
|
|
use App\Enums\DynamicPages\PageStatusEnum;
|
2025-11-18 13:55:48 +01:00
|
|
|
use App\Enums\DynamicFieldTypes;
|
2025-09-16 16:44:49 +02:00
|
|
|
use App\Models\DynamicPage;
|
|
|
|
|
use Illuminate\Database\Seeder;
|
2025-11-18 13:55:48 +01:00
|
|
|
use Illuminate\Support\Str;
|
|
|
|
|
use Uwil\LaravelCommon\Helpers\FileHelper;
|
2025-09-16 16:44:49 +02:00
|
|
|
|
|
|
|
|
class DynamicPageSeeder extends Seeder
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
* Run the database seeds.
|
|
|
|
|
*
|
|
|
|
|
* @return void
|
|
|
|
|
*/
|
|
|
|
|
public function run(): void
|
|
|
|
|
{
|
2026-01-15 16:55:01 +01:00
|
|
|
// Mandatory dynamic pages.
|
|
|
|
|
$titleHome = "Accueil";
|
|
|
|
|
$dynamicPageModel = new DynamicPage;
|
|
|
|
|
$dynamicPageModel->id_key = Str::slug($titleHome);
|
|
|
|
|
$dynamicPageModel->slug = "";
|
|
|
|
|
$dynamicPageModel->title = $titleHome;
|
|
|
|
|
$dynamicPageModel->content = [];
|
|
|
|
|
$dynamicPageModel->status = PageStatusEnum::published;
|
|
|
|
|
$dynamicPageModel->isLocked = true;
|
|
|
|
|
$dynamicPageModel->isRoot = true;
|
|
|
|
|
$dynamicPageModel->saveOrFail();
|
|
|
|
|
|
|
|
|
|
$titlePrivacyPolicy = "Politique de confidentialité";
|
|
|
|
|
$slugPrivacyPolicy = Str::slug($titlePrivacyPolicy);
|
|
|
|
|
$dynamicPageModel = new DynamicPage;
|
|
|
|
|
$dynamicPageModel->id_key = $slugPrivacyPolicy;
|
|
|
|
|
$dynamicPageModel->slug = $slugPrivacyPolicy;
|
|
|
|
|
$dynamicPageModel->title = $titlePrivacyPolicy;
|
|
|
|
|
$dynamicPageModel->content = [];
|
|
|
|
|
$dynamicPageModel->status = PageStatusEnum::published;
|
|
|
|
|
$dynamicPageModel->isLocked = true;
|
|
|
|
|
$dynamicPageModel->isRoot = false;
|
|
|
|
|
$dynamicPageModel->saveOrFail();
|
|
|
|
|
|
|
|
|
|
$titleLegalNotice = "Mentions légales";
|
|
|
|
|
$slugLegalNotice = Str::slug($titleLegalNotice);
|
|
|
|
|
$dynamicPageModel = new DynamicPage;
|
|
|
|
|
$dynamicPageModel->id_key = $slugLegalNotice;
|
|
|
|
|
$dynamicPageModel->slug = $slugLegalNotice;
|
|
|
|
|
$dynamicPageModel->title = $titleLegalNotice;
|
|
|
|
|
$dynamicPageModel->content = [];
|
|
|
|
|
$dynamicPageModel->status = PageStatusEnum::published;
|
|
|
|
|
$dynamicPageModel->isLocked = true;
|
|
|
|
|
$dynamicPageModel->isRoot = false;
|
|
|
|
|
$dynamicPageModel->saveOrFail();
|
|
|
|
|
|
|
|
|
|
// Fake dynamic pages.
|
|
|
|
|
DynamicPage::factory(20)->make()->each(function ($model) {
|
|
|
|
|
$content = $model->content;
|
|
|
|
|
// Config factories add just one depth of children.
|
|
|
|
|
foreach ($model->content as $key => $value) {
|
|
|
|
|
$prefix = sprintf("%s_", DynamicFieldTypes::image->name);
|
|
|
|
|
if (Str::startsWith($key, $prefix)) {
|
|
|
|
|
$content[$key] = FileHelper::storeFile(
|
|
|
|
|
$model,
|
|
|
|
|
new \SplFileInfo(\resource_path(
|
|
|
|
|
'../database/factories/assets/dynamic-pages/100x100.jpg'
|
|
|
|
|
))
|
|
|
|
|
);
|
2025-11-18 13:55:48 +01:00
|
|
|
}
|
2026-01-15 16:55:01 +01:00
|
|
|
}
|
|
|
|
|
$model->content = $content;
|
|
|
|
|
$model->saveOrFail();
|
|
|
|
|
});
|
2025-09-16 16:44:49 +02:00
|
|
|
}
|
|
|
|
|
}
|