ldc-groupe/database/seeders/DynamicPageSeeder.php
2026-01-19 09:41:05 +01:00

76 lines
2.9 KiB
PHP

<?php
namespace Database\Seeders;
use App\Enums\DynamicPages\PageStatusEnum;
use App\Enums\DynamicFieldTypes;
use App\Models\DynamicPage;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;
use Uwil\LaravelCommon\Helpers\FileHelper;
class DynamicPageSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
// 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'
))
);
}
}
$model->content = $content;
$model->saveOrFail();
});
}
}