ldc-groupe/database/factories/DynamicPageFactory.php
2025-10-17 14:52:51 +02:00

54 lines
1.8 KiB
PHP

<?php
namespace Database\Factories;
use App\Enums\DynamicFieldTypes;
use App\Enums\DynamicPages\PageStatusEnum;
use App\Models\PageConfig;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class DynamicPageFactory extends Factory
{
/**
* Define the model's default state.
*
* @return array
*/
public function definition(): array
{
$title = fake()->unique()->word();
$configModel = fake()->randomElement(PageConfig::all());
foreach ($configModel->config as $field) {
switch ($field['type']) {
case DynamicFieldTypes::string->value:
$configValue[$field['key']] = fake()->words(5, true);
break;
case DynamicFieldTypes::text->value:
$configValue[$field['key']] = sprintf("<p>%s</p>", fake()->text(160));
break;
case DynamicFieldTypes::number->value:
$configValue[$field['key']] = fake()->numberBetween(0, 255);
break;
case DynamicFieldTypes::boolean->value:
$configValue[$field['key']] = fake()->boolean(50);
break;
case DynamicFieldTypes::url->value:
$configValue[$field['key']] = fake()->url();
break;
default:
$configValue = [];
break;
}
} //end foreach
return [
'title' => $title,
'slug' => Str::slug($title),
'content' => $configValue,
'config_id' => $configModel->getKey(),
'status' => \collect(PageStatusEnum::cases())->random(),
'isLocked' => fake()->boolean(50),
];
}
}