<?php

namespace Database\Seeders;

use App\Models\Commons\Menu;
use Illuminate\Database\Seeder;

/**
 * 차량일지 메뉴 시더
 * - 재무관리 > 법인차량관리 하위에 차량일지 메뉴 추가
 */
class VehicleLogMenuSeeder extends Seeder
{
    public function run(): void
    {
        $tenantId = 1;

        // 법인차량관리 메뉴 찾기
        $vehicleMenu = Menu::where('tenant_id', $tenantId)
            ->where('name', '법인차량관리')
            ->first();

        if (! $vehicleMenu) {
            $this->command->error('법인차량관리 메뉴를 찾을 수 없습니다.');

            return;
        }

        // 차량일지 메뉴가 이미 있는지 확인
        $existingMenu = Menu::where('tenant_id', $tenantId)
            ->where('name', '차량일지')
            ->where('parent_id', $vehicleMenu->id)
            ->first();

        if ($existingMenu) {
            $this->command->info('차량일지 메뉴가 이미 존재합니다.');

            return;
        }

        // 법인차량관리가 그룹 메뉴인지 확인
        // 그룹 메뉴가 아니면 그룹으로 변경
        if ($vehicleMenu->url) {
            // 기존 URL을 차량목록으로 변경
            $vehicleListMenu = Menu::create([
                'tenant_id' => $tenantId,
                'parent_id' => $vehicleMenu->id,
                'name' => '차량목록',
                'url' => $vehicleMenu->url,
                'icon' => 'car',
                'sort_order' => 1,
                'is_active' => true,
            ]);
            $this->command->info("차량목록 하위 메뉴 생성: {$vehicleListMenu->url}");

            // 법인차량관리를 그룹 메뉴로 변경
            $vehicleMenu->url = null;
            $vehicleMenu->save();
            $this->command->info('법인차량관리를 그룹 메뉴로 변경');

            // 차량일지 메뉴 생성
            $vehicleLogMenu = Menu::create([
                'tenant_id' => $tenantId,
                'parent_id' => $vehicleMenu->id,
                'name' => '차량일지',
                'url' => '/finance/vehicle-logs',
                'icon' => 'file-text',
                'sort_order' => 2,
                'is_active' => true,
            ]);
            $this->command->info("차량일지 메뉴 생성: {$vehicleLogMenu->url}");

            // 차량정비 메뉴가 있으면 순서 조정
            $maintenanceMenu = Menu::where('tenant_id', $tenantId)
                ->where('name', '차량정비')
                ->where('parent_id', $vehicleMenu->id)
                ->first();

            if ($maintenanceMenu) {
                $maintenanceMenu->sort_order = 3;
                $maintenanceMenu->save();
            }
        } else {
            // 이미 그룹 메뉴인 경우 차량일지만 추가
            // 기존 하위 메뉴 순서 확인
            $maxSortOrder = Menu::where('parent_id', $vehicleMenu->id)
                ->max('sort_order') ?? 0;

            $vehicleLogMenu = Menu::create([
                'tenant_id' => $tenantId,
                'parent_id' => $vehicleMenu->id,
                'name' => '차량일지',
                'url' => '/finance/vehicle-logs',
                'icon' => 'file-text',
                'sort_order' => $maxSortOrder + 1,
                'is_active' => true,
            ]);
            $this->command->info("차량일지 메뉴 생성: {$vehicleLogMenu->url}");
        }

        // 결과 출력
        $this->command->info('');
        $this->command->info('=== 법인차량관리 하위 메뉴 ===');
        $children = Menu::where('parent_id', $vehicleMenu->id)
            ->orderBy('sort_order')
            ->get(['name', 'url', 'sort_order']);

        foreach ($children as $child) {
            $this->command->info("{$child->sort_order}. {$child->name} ({$child->url})");
        }
    }
}
