<?php

declare(strict_types=1);

namespace Database\Seeders;

use App\Models\Resource;
use App\Models\Tenant;
use Illuminate\Database\Seeder;
use Illuminate\Support\Str;

class DefaultResourcesSeeder extends Seeder
{
    public function run(): void
    {
        $tenant = Tenant::withoutGlobalScopes()
            ->firstOrCreate(
                ['domain' => 'easybox.w-websoftsrv.kr'],
                [
                    'id' => (string) Str::uuid(),
                    'name' => 'EasyBox Demo',
                    'status' => Tenant::STATUS_ACTIVE,
                    'plan' => Tenant::PLAN_FREE,
                ]
            );

        app()->instance('currentTenant', $tenant);

        $items = [
            // ---------- Themes (5) ----------
            ['category' => 'theme', 'slug' => 'theme-default-light',  'title' => 'W·Dot Default Light Theme',  'tags' => ['light', 'minimal'], 'desc' => '깔끔하고 미니멀한 기본 라이트 테마. 5 테마 패키지의 기본 컬러 셋.'],
            ['category' => 'theme', 'slug' => 'theme-default-dark',   'title' => 'W·Dot Default Dark Theme',   'tags' => ['dark', 'minimal'],  'desc' => '눈에 편한 다크 모드 기본 테마. OLED 친화 컬러.'],
            ['category' => 'theme', 'slug' => 'theme-corporate',      'title' => '기업용 코퍼레이트 테마',         'tags' => ['business', 'blue'], 'desc' => 'B2B 사이트에 적합한 절제된 비즈니스 테마.'],
            ['category' => 'theme', 'slug' => 'theme-magazine',       'title' => '매거진 / 블로그 테마',           'tags' => ['blog', 'magazine'], 'desc' => '콘텐츠 중심 매거진 / 블로그 사이트용 타이포 테마.'],
            ['category' => 'theme', 'slug' => 'theme-portfolio',      'title' => '포트폴리오 / 에이전시 테마',      'tags' => ['portfolio', 'agency'], 'desc' => '디자이너·에이전시용 비주얼 강조 테마. 풀스크린 히어로 + 갤러리.'],

            // ---------- Skins (5) ----------
            ['category' => 'skin', 'slug' => 'skin-board-classic',   'title' => '게시판 클래식 스킨',           'tags' => ['board', 'list'],   'desc' => '그누보드 스타일 클래식 리스트 + 페이징 게시판 스킨.'],
            ['category' => 'skin', 'slug' => 'skin-board-card',      'title' => '게시판 카드 스킨',             'tags' => ['board', 'card'],   'desc' => '카드형 그리드로 글을 표시하는 모던 스킨.'],
            ['category' => 'skin', 'slug' => 'skin-board-gallery',   'title' => '갤러리 스킨',                  'tags' => ['gallery', 'photo'], 'desc' => '이미지 중심 갤러리 게시판 스킨.'],
            ['category' => 'skin', 'slug' => 'skin-board-webzine',   'title' => '웹진 스킨',                    'tags' => ['magazine', 'feature'], 'desc' => '대형 썸네일 + 요약문이 노출되는 웹진형 스킨.'],
            ['category' => 'skin', 'slug' => 'skin-board-qa',        'title' => 'Q&A 스킨',                     'tags' => ['qa', 'thread'],    'desc' => '답변 채택 + 추천 기능을 강조한 Q&A 게시판 스킨.'],

            // ---------- Plugins (4) ----------
            ['category' => 'plugin', 'slug' => 'plugin-seo-pack',     'title' => 'SEO 메타 패키지',              'tags' => ['seo', 'meta'],     'desc' => 'OG 태그 / 트위터 카드 / sitemap.xml 자동 생성 플러그인.'],
            ['category' => 'plugin', 'slug' => 'plugin-naver-pay',    'title' => '네이버페이 결제 모듈',          'tags' => ['payment', 'naver'], 'desc' => '네이버페이 PG 연동 — 일반 결제 / 정기결제 모두 지원.'],
            ['category' => 'plugin', 'slug' => 'plugin-kakao-login',  'title' => '카카오 로그인',                'tags' => ['oauth', 'kakao'],  'desc' => '카카오 OAuth 2.0 소셜 로그인 통합 플러그인.'],
            ['category' => 'plugin', 'slug' => 'plugin-ai-writer',    'title' => 'AI 글쓰기 도우미',             'tags' => ['ai', 'gpt'],       'desc' => 'GPT 기반 글쓰기 / 요약 / 번역 위젯 (관리자 페이지 통합).'],

            // ---------- Tips (3) ----------
            ['category' => 'tip', 'slug' => 'tip-nginx-tuning',     'title' => 'Nginx 튜닝 가이드',            'tags' => ['nginx', 'perf'],   'desc' => 'EasyBox 환경에서 Nginx worker / keepalive / cache 최적화.'],
            ['category' => 'tip', 'slug' => 'tip-mariadb-backup',   'title' => 'MariaDB 자동 백업 스크립트',     'tags' => ['db', 'backup'],    'desc' => 'mysqldump + 로테이션 + S3 업로드 자동화 스크립트.'],
            ['category' => 'tip', 'slug' => 'tip-redis-cache',      'title' => 'Redis 캐시 활용 팁',           'tags' => ['redis', 'cache'],  'desc' => 'Laravel + Redis Tag 캐시 전략 — TTL / 무효화.'],

            // ---------- Manual PDFs (3) ----------
            ['category' => 'manual_pdf', 'slug' => 'manual-pdf-quickstart',  'title' => '빠른 시작 매뉴얼 (PDF)', 'tags' => ['manual', 'pdf'], 'desc' => '5분 만에 EasyBox 설치 + 첫 페이지 발행 PDF.'],
            ['category' => 'manual_pdf', 'slug' => 'manual-pdf-admin',       'title' => '관리자 매뉴얼 (PDF)',    'tags' => ['manual', 'pdf', 'admin'], 'desc' => '관리자 기능 전체 가이드 PDF — 멤버 / 권한 / ISMS.'],
            ['category' => 'manual_pdf', 'slug' => 'manual-pdf-api',         'title' => 'API 레퍼런스 PDF',       'tags' => ['manual', 'pdf', 'api'], 'desc' => '43 endpoint 전체 OpenAPI 스펙 PDF 익스포트.'],
        ];

        foreach ($items as $row) {
            Resource::withoutGlobalScopes()->updateOrCreate(
                ['tenant_id' => $tenant->id, 'slug' => $row['slug']],
                [
                    'id' => (string) Str::uuid(),
                    'tenant_id' => $tenant->id,
                    'title' => $row['title'],
                    'description' => $row['desc'],
                    'category' => $row['category'],
                    'tags' => $row['tags'],
                    'file_path' => 'resources/'.$row['slug'].($row['category'] === 'manual_pdf' ? '.pdf' : '.zip'),
                    'file_size' => random_int(50_000, 5_000_000),
                    'mime' => $row['category'] === 'manual_pdf' ? 'application/pdf' : 'application/zip',
                    'is_free' => true,
                    'download_count' => random_int(5, 500),
                    'view_count' => random_int(50, 3000),
                    'rating_avg' => round(3 + (random_int(0, 200) / 100), 2),
                    'rating_count' => random_int(0, 30),
                    'status' => 'published',
                    'published_at' => now()->subDays(random_int(1, 90)),
                ]
            );
        }

        $this->command?->info('Seeded '.count($items).' resources.');
    }
}
