<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::table('restaurants', function (Blueprint $table) {
            // إضافة حقول المحافظة والمدينة كـ string إذا لم تكن موجودة
            if (!Schema::hasColumn('restaurants', 'governorate')) {
                $table->string('governorate')->nullable()->after('address');
            }
            
            if (!Schema::hasColumn('restaurants', 'city')) {
                $table->string('city')->nullable()->after('governorate');
            }
            
            // التحقق من وجود الأعمدة قبل إضافتها
            if (!Schema::hasColumn('restaurants', 'governorate_id')) {
                $table->foreignId('governorate_id')->nullable()->constrained()->onDelete('set null');
            }
            
            if (!Schema::hasColumn('restaurants', 'city_id')) {
                $table->foreignId('city_id')->nullable()->constrained()->onDelete('set null');
            }
            
            // إضافة فهارس فقط إذا لم تكن موجودة
            if (!Schema::hasColumn('restaurants', 'governorate_id') || !Schema::hasColumn('restaurants', 'city_id')) {
                $table->index(['governorate_id', 'city_id']);
            }
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('restaurants', function (Blueprint $table) {
            if (Schema::hasColumn('restaurants', 'governorate_id')) {
                $table->dropForeign(['governorate_id']);
                $table->dropColumn('governorate_id');
            }
            
            if (Schema::hasColumn('restaurants', 'city_id')) {
                $table->dropForeign(['city_id']);
                $table->dropColumn('city_id');
            }
            
            if (Schema::hasColumn('restaurants', 'governorate')) {
                $table->dropColumn('governorate');
            }
            
            if (Schema::hasColumn('restaurants', 'city')) {
                $table->dropColumn('city');
            }
        });
    }
};
