<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;

return new class extends Migration
{
    public function up(): void
    {
        // ابتدا بررسی می‌کنیم آیا فیلد image_path وجود دارد یا نه
        if (!Schema::hasColumn('diagnoses', 'image_path')) {
            Schema::table('diagnoses', function (Blueprint $table) {
                $table->string('image_path', 255)->nullable()->after('patient_id');
            });
        }
        
        Schema::table('diagnoses', function (Blueprint $table) {
            // حذف ENUMهای اشتباه و تعریف انواع داده صحیح
            
            // 1. فیلدهای عددی
            $table->integer('age')->nullable()->change();
            $table->decimal('bmi', 5, 2)->nullable()->change();
            $table->integer('fasting_blood_sugar')->nullable()->change();
            
            // 2. فیلدهای با مقادیر خاص
            $table->enum('gender', ['male', 'female'])->nullable()->change();
            $table->enum('eye_side', ['OD', 'OS', 'both'])->nullable()->change();
            
            // 3. فیلدهای متنی
            $table->text('notes')->nullable()->change();
            $table->text('api_response')->nullable()->change();
            $table->string('predicted_class', 50)->nullable()->change();
            $table->decimal('probability_amd', 5, 3)->nullable()->change();
            $table->enum('diagnosis_type', ['clinical', 'image'])->nullable()->change();
            $table->boolean('is_complete')->default(true)->change();
        });
    }

    public function down(): void
    {
        Schema::table('diagnoses', function (Blueprint $table) {
            // برگرداندن تغییرات در صورت rollback
            $table->enum('age', ['very_high', 'high', 'moderate', 'low', 'very_low'])->change();
            $table->enum('bmi', ['very_high', 'high', 'moderate', 'low', 'very_low'])->change();
            $table->enum('fasting_blood_sugar', ['very_high', 'high', 'moderate', 'low', 'very_low'])->change();
            $table->enum('gender', ['very_high', 'high', 'moderate', 'low', 'very_low'])->change();
            
            // فقط اگر در up اضافه کردیم، در down حذف می‌کنیم
            if (Schema::hasColumn('diagnoses', 'eye_side')) {
                $table->dropColumn('eye_side');
            }
        });
    }
};