<?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('amministratori', function (Blueprint $table) {
            // Aggiunge campi moderni mancanti solo se non esistono
            if (!Schema::hasColumn('amministratori', 'cellulare')) {
                $table->string('cellulare')->nullable()->after('telefono_studio');
            }
            if (!Schema::hasColumn('amministratori', 'database_attivo')) {
                $table->string('database_attivo')->nullable()->after('pec_studio')->comment('Nome del database dedicato per questo amministratore');
            }
            if (!Schema::hasColumn('amministratori', 'cartella_dati')) {
                $table->string('cartella_dati')->nullable()->after('database_attivo')->comment('Percorso cartella dati amministratore');
            }
            if (!Schema::hasColumn('amministratori', 'impostazioni')) {
                $table->json('impostazioni')->nullable()->after('cartella_dati')->comment('Impostazioni personalizzate amministratore');
            }
            if (!Schema::hasColumn('amministratori', 'attivo')) {
                $table->boolean('attivo')->default(true)->after('impostazioni');
            }
            if (!Schema::hasColumn('amministratori', 'ultimo_accesso')) {
                $table->timestamp('ultimo_accesso')->nullable()->after('attivo');
            }
        });
        
        // Rinomina codice_univoco a codice_amministratore se necessario
        if (Schema::hasColumn('amministratori', 'codice_univoco') && !Schema::hasColumn('amministratori', 'codice_amministratore')) {
            Schema::table('amministratori', function (Blueprint $table) {
                $table->renameColumn('codice_univoco', 'codice_amministratore');
            });
        }
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('amministratori', function (Blueprint $table) {
            $table->dropColumn([
                'cellulare', 'database_attivo', 'cartella_dati', 
                'impostazioni', 'attivo', 'ultimo_accesso'
            ]);
        });
        
        // Ripristina il nome originale della colonna
        if (Schema::hasColumn('amministratori', 'codice_amministratore')) {
            Schema::table('amministratori', function (Blueprint $table) {
                $table->renameColumn('codice_amministratore', 'codice_univoco');
            });
        }
    }
};
