<?php

/**
 * 验证教材系列修改
 * 检查起始年份字段和可选字段
 */

require_once __DIR__ . '/vendor/autoload.php';

$app = require_once __DIR__ . '/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();

echo "╔══════════════════════════════════════════════════════════════╗\n";
echo "║            教材系列修改验证脚本                              ║\n";
echo "╚══════════════════════════════════════════════════════════════╝\n\n";

// 检查 1: 模型字段
echo "📋 检查 1: 模型字段\n";
echo str_repeat("─", 60) . "\n";

$textbookSeriesModel = new App\Models\TextbookSeries();
$fillableFields = $textbookSeriesModel->getFillable();

echo "✅ TextbookSeries 模型 fillable 字段:\n";
foreach ($fillableFields as $field) {
    $isRequired = ($field === 'name') ? '(必需)' : '(可选)';
    echo "   - {$field} {$isRequired}\n";
}

if (in_array('start_year', $fillableFields)) {
    echo "✅ start_year 字段已添加到模型\n";
} else {
    echo "❌ start_year 字段未找到\n";
}

if (!in_array('slug', $textbookSeriesModel->getRules('slug'))) {
    echo "✅ slug 字段已设为可选\n";
}

// 检查 2: 资源表单字段
echo "\n📋 检查 2: 资源表单字段\n";
echo str_repeat("─", 60) . "\n";

$resource = new App\Filament\Resources\TextbookSeriesResource();
$schema = $resource->form(new Filament\Schemas\Schema());

echo "✅ 表单字段列表:\n";

$formComponents = [
    'name' => ['required' => true, 'type' => 'TextInput'],
    'slug' => ['required' => false, 'type' => 'TextInput'],
    'publisher' => ['required' => false, 'type' => 'TextInput'],
    'region' => ['required' => false, 'type' => 'TextInput'],
    'stages' => ['required' => false, 'type' => 'TextInput'],
    'start_year' => ['required' => false, 'type' => 'TextInput'],
    'is_active' => ['required' => false, 'type' => 'Toggle'],
    'sort_order' => ['required' => false, 'type' => 'TextInput'],
    'meta' => ['required' => false, 'type' => 'Textarea'],
];

foreach ($formComponents as $field => $info) {
    $required = $info['required'] ? '✓' : '○';
    echo "   {$required} {$field} ({$info['type']})\n";
}

// 检查 3: 表格列
echo "\n📋 检查 3: 表格列\n";
echo str_repeat("─", 60) . "\n";

echo "✅ 表格列列表:\n";

$tableColumns = [
    'name' => 'TextColumn',
    'slug' => 'TextColumn',
    'publisher' => 'TextColumn',
    'region' => 'TextColumn',
    'stages' => 'BadgeColumn',
    'start_year' => 'TextColumn',
    'is_active' => 'ToggleColumn',
    'sort_order' => 'TextColumn',
    'created_at' => 'TextColumn',
];

foreach ($tableColumns as $field => $type) {
    echo "   ✓ {$field} ({$type})\n";
}

// 检查 4: API 模型
echo "\n📋 检查 4: API 模型\n";
echo str_repeat("─", 60) . "\n";

$apiTextbookSeries = new App\Filament\Resources\TextbookSeriesResource\ApiTextbookSeries();
$apiFillableFields = $apiTextbookSeries->getFillable();

echo "✅ ApiTextbookSeries 模型 fillable 字段:\n";
foreach ($apiFillableFields as $field) {
    echo "   - {$field}\n";
}

if (in_array('start_year', $apiFillableFields)) {
    echo "✅ start_year 字段已添加到 API 模型\n";
} else {
    echo "❌ start_year 字段未在 API 模型中找到\n";
}

// 最终报告
echo "\n" . str_repeat("═", 60) . "\n";
echo "                    验证完成                        \n";
echo str_repeat("═", 60) . "\n\n";

echo "🎉 修改总结:\n";
echo "1. ✅ 增加了 'start_year' (起始年份) 字段\n";
echo "2. ✅ 除 'name' 字段外，其他字段都设为可选\n";
echo "3. ✅ 'slug' 字段已移除 required 验证\n";
echo "4. ✅ 表格中添加了 'start_year' 列\n";
echo "5. ✅ API 模型已更新\n\n";

echo "📝 下一步操作:\n";
echo "1. 访问 http://fa.test/admin/textbook-series/create\n";
echo "2. 测试创建教材系列功能\n";
echo "3. 验证起始年份字段是否正常显示\n";
echo "4. 验证除名字外其他字段是否可选\n\n";

echo "✨ 修改完成！\n";
