49 lines
1.8 KiB
PHP
49 lines
1.8 KiB
PHP
<?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())
|
|
->filter(fn (MenuNodeType $type) =>
|
|
!$type->equals(MenuNodeType::link) && !$type->equals(MenuNodeType::siteLogo));
|
|
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();
|
|
});
|
|
}
|
|
}
|