Files
sam-manage/database/seeders/VehicleMaintenanceMenuMoveSeeder.php

73 lines
2.5 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Commons\Menu;
use Illuminate\Database\Seeder;
/**
* 차량정비이력 메뉴를 법인차량관리 하위로 이동
*/
class VehicleMaintenanceMenuMoveSeeder extends Seeder
{
public function run(): void
{
$tenantId = 1;
// 법인차량관리 부모 메뉴 찾기
$parentMenu = Menu::where('tenant_id', $tenantId)
->where('name', '법인차량관리')
->first();
if (!$parentMenu) {
$this->command->error('법인차량관리 메뉴를 찾을 수 없습니다.');
return;
}
// 차량정비이력 메뉴 찾기
$maintenanceMenu = Menu::where('tenant_id', $tenantId)
->where(function ($q) {
$q->where('name', '차량정비이력')
->orWhere('name', '차량정비');
})
->first();
if (!$maintenanceMenu) {
$this->command->error('차량정비이력 메뉴를 찾을 수 없습니다.');
Menu::where('tenant_id', $tenantId)
->whereNull('parent_id')
->orderBy('sort_order')
->get(['id', 'name', 'url'])
->each(fn ($m) => $this->command->line(" - [{$m->id}] {$m->name} ({$m->url})"));
return;
}
// 이미 법인차량관리 하위에 있는지 확인
if ($maintenanceMenu->parent_id == $parentMenu->id) {
$this->command->info('차량정비이력은 이미 법인차량관리 하위에 있습니다.');
return;
}
$oldParentId = $maintenanceMenu->parent_id;
// 법인차량관리 하위 메뉴 중 최대 sort_order 확인
$maxSortOrder = Menu::where('parent_id', $parentMenu->id)
->max('sort_order') ?? 0;
// 차량정비이력을 법인차량관리 하위로 이동
$maintenanceMenu->parent_id = $parentMenu->id;
$maintenanceMenu->sort_order = $maxSortOrder + 1;
$maintenanceMenu->save();
$this->command->info("차량정비이력 메뉴 이동 완료: parent_id {$oldParentId}{$parentMenu->id}");
// 결과 출력
$this->command->info('');
$this->command->info('=== 법인차량관리 하위 메뉴 ===');
Menu::where('parent_id', $parentMenu->id)
->orderBy('sort_order')
->get(['name', 'url', 'sort_order'])
->each(fn ($m) => $this->command->info(" {$m->sort_order}. {$m->name} ({$m->url})"));
}
}