ldc-legaulois/database/seeders/Mandatory/StaticPageSeeder.php
2024-08-07 14:14:12 +02:00

135 lines
5.2 KiB
PHP

<?php
namespace Database\Seeders\Mandatory;
use App\Enums\InputType;
use App\Enums\StaticPageType;
use App\Lib\Helpers\FileStorageHelper;
use App\Models\StaticPage;
use Illuminate\Database\Seeder;
class StaticPageSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run(): void
{
$this->seedStaticPage(StaticPageType::contact);
$this->seedStaticPage(StaticPageType::legals);
$this->seedStaticPage(StaticPageType::confidentiality);
$this->seedStaticPage(StaticPageType::selling);
$this->seedStaticPage(StaticPageType::recruitment);
$this->seedStaticPage(StaticPageType::story);
$this->seedStaticPage(StaticPageType::saga);
$this->seedStaticPage(StaticPageType::recipes);
$this->seedStaticPage(StaticPageType::recipe, [
'tips_title' => [
'label' => 'Titre de l\'astuce',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'recipes_title' => [
'label' => 'Titre des autres recettes',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'text' => [
'label' => 'Texte des autres recettes',
'inputType' => InputType::text->value,
'value' => fake()->sentence(),
'validate' => 'required|string',
'required' => true
]
]);
$this->seedStaticPage(StaticPageType::products);
$this->seedStaticPage(StaticPageType::product, [
'claim_title' => [
'label' => 'Titre des allégations',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'recipes_title' => [
'label' => 'Titre des recettes',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'recipes_text' => [
'label' => 'Texte des recettes',
'inputType' => InputType::text->value,
'value' => fake()->sentence(),
'validate' => 'required|string',
'required' => true
],
'products_title' => [
'label' => 'Titre des produits',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'products_text' => [
'label' => 'Texte des produits',
'inputType' => InputType::text->value,
'value' => fake()->sentence(),
'validate' => 'required|string',
'required' => true
],
'animation_text_1' => [
'label' => 'Texte de l\'animation 1',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
],
'animation_text_2' => [
'label' => 'Texte de l\'animation 2',
'inputType' => InputType::string->value,
'value' => fake()->sentence(),
'validate' => 'required|string|between:3,255',
'required' => true
]
]);
}
/**
* Seed static page type
*
* @param \App\Enums\StaticPageType $type
* @param array $data
* @return void
*/
private function seedStaticPage(StaticPageType $type, array $data = []): void
{
StaticPage::query()->updateOrCreate(
['type' => $type],
[
'type' => $type,
'seo_title' => sprintf('Seo title pour la page %s', $type->label()),
'seo_description' => sprintf('Seo description pour la page %s', $type->label()),
'title' => $type->label(),
'subtitle' => 'sous-titre' . $type->label(),
'picture_alt' => 'picture alt',
'picture_title' => 'picture title',
'picture' => FileStorageHelper::storeFile(
(new StaticPage()),
new \SplFileInfo(\resource_path(
'../database/factories/assets/static_pages/default-picture-720x405.jpg'
))
),
'content' => \clean(\fake()->randomHtml()),
'data' => $data,
]
);
}
}