<?php

namespace Database\Seeders;

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

/**
 * 영업파트너 고객관리 메뉴 추가 시더
 * 관리자/슈퍼관리자 전용 메뉴
 */
class AdminProspectMenuSeeder extends Seeder
{
    public function run(): void
    {
        $tenantId = 1;

        // 영업관리 메뉴 ID 찾기
        $salesParentId = Menu::where('tenant_id', $tenantId)
            ->where('name', '영업관리')
            ->whereNull('parent_id')
            ->value('id');

        if (! $salesParentId) {
            $this->command->error('영업관리 메뉴를 찾을 수 없습니다.');

            return;
        }

        // 고객 관리 메뉴 찾기 (sort_order 확인)
        $prospectMenu = Menu::where('tenant_id', $tenantId)
            ->where('parent_id', $salesParentId)
            ->where('name', '고객 관리')
            ->first();

        $sortOrder = ($prospectMenu?->sort_order ?? 2) + 1;

        // 영업파트너 고객관리 메뉴 존재 여부 확인
        $existingMenu = Menu::where('tenant_id', $tenantId)
            ->where('parent_id', $salesParentId)
            ->where('name', '영업파트너 고객관리')
            ->first();

        if ($existingMenu) {
            $this->command->info('영업파트너 고객관리 메뉴가 이미 존재합니다.');

            return;
        }

        // 메뉴 생성 (권한 체크는 컨트롤러에서 처리)
        Menu::create([
            'tenant_id' => $tenantId,
            'parent_id' => $salesParentId,
            'name' => '영업파트너 고객관리',
            'url' => '/sales/admin-prospects',
            'icon' => 'users',
            'sort_order' => $sortOrder,
            'is_active' => true,
        ]);

        $this->command->info('영업파트너 고객관리 메뉴 생성 완료 (sort_order: '.$sortOrder.')');

        // 결과 출력
        $this->command->info('');
        $this->command->info('=== 영업관리 하위 메뉴 ===');
        $children = Menu::where('parent_id', $salesParentId)
            ->orderBy('sort_order')
            ->get(['name', 'url', 'sort_order']);

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