ldc-legaulois/database/seeders/Mandatory/MenuNodeDataSeeder.php

50 lines
1.8 KiB
PHP
Raw Normal View History

2024-04-12 10:18:11 +02:00
<?php
namespace Database\Seeders\Mandatory;
use App\Enums\Settings\MenuNodeType;
use App\Lib\Helpers\FileStorageHelper;
use App\Models\MenuNodeData;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class MenuNodeDataSeeder extends Seeder
{
use WithoutModelEvents;
/**
* Run the database seeds.
*
* @return void
* @throws \ErrorException If a setting seeding case is missing.
*/
public function run(): void
{
FileStorageHelper::removeModelFiles(new MenuNodeData());
DB::table((new MenuNodeData())->getTable())->truncate();
/** @var \Illuminate\Support\Collection<array-key,\App\Enums\Settings\MenuNodeType> */
$typeToFilterFor = collect(MenuNodeType::all())
2024-04-18 12:05:10 +02:00
->filter(fn (MenuNodeType $type) =>
!$type->equals(MenuNodeType::link) && !$type->equals(MenuNodeType::siteLogo));
2024-04-12 10:18:11 +02:00
MenuNodeData::factory($typeToFilterFor->count())->make()->each(function ($menuNodeData) use ($typeToFilterFor) {
/** @var \App\Models\MenuNodeData $menuNodeData */
$menuNodeData->picture = FileStorageHelper::storeFile(
new MenuNodeData(),
new \SplFileInfo(\resource_path(
'../database/factories/assets/menu_node_data/default-background-180x228.jpg'
))
);
$menuNodeData->background_picture = FileStorageHelper::storeFile(
new MenuNodeData(),
new \SplFileInfo(\resource_path(
'../database/factories/assets/menu_node_data/default-background-500x231.jpg'
))
);
$menuNodeData->setAttribute('type', $typeToFilterFor->pop()->value);
$menuNodeData->save();
});
}
}