54 lines
1.8 KiB
PHP
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),
|
|
];
|
|
}
|
|
}
|