<?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('stabili', function (Blueprint $table) {
            // Struttura fisica stabile
            $table->json('struttura_fisica_json')->nullable()->after('note');
            $table->integer('numero_palazzine')->default(1)->after('struttura_fisica_json');
            $table->integer('numero_scale_per_palazzina')->default(1)->after('numero_palazzine');
            $table->integer('numero_piani')->default(3)->after('numero_scale_per_palazzina');
            $table->boolean('piano_seminterrato')->default(false)->after('numero_piani');
            $table->boolean('piano_sottotetto')->default(false)->after('piano_seminterrato');
            $table->boolean('presenza_ascensore')->default(false)->after('piano_sottotetto');
            $table->boolean('cortile_giardino')->default(false)->after('presenza_ascensore');
            $table->decimal('superficie_cortile', 8, 2)->nullable()->after('cortile_giardino');
            
            // Servizi e utilities
            $table->boolean('riscaldamento_centralizzato')->default(false)->after('superficie_cortile');
            $table->boolean('acqua_centralizzata')->default(false)->after('riscaldamento_centralizzato');
            $table->boolean('gas_centralizzato')->default(false)->after('acqua_centralizzata');
            $table->boolean('servizio_portineria')->default(false)->after('gas_centralizzato');
            $table->string('orari_portineria')->nullable()->after('servizio_portineria');
            $table->boolean('videocitofono')->default(false)->after('orari_portineria');
            $table->boolean('antenna_tv_centralizzata')->default(false)->after('videocitofono');
            $table->boolean('internet_condominiale')->default(false)->after('antenna_tv_centralizzata');
            
            // Dati economici
            $table->decimal('fondo_riserva_minimo', 12, 2)->default(0.00)->after('internet_condominiale');
            $table->decimal('importo_rata_standard', 8, 2)->default(0.00)->after('fondo_riserva_minimo');
            $table->enum('frequenza_rate', ['mensile', 'bimestrale', 'trimestrale', 'quadrimestrale', 'semestrale', 'annuale'])
                  ->default('trimestrale')->after('importo_rata_standard');
            $table->integer('giorno_scadenza_rate')->default(15)->after('frequenza_rate');
            $table->string('iban_condominio')->nullable()->after('giorno_scadenza_rate');
            
            // Millesimi
            $table->boolean('millesimi_generali_calcolati')->default(false)->after('iban_condominio');
            $table->boolean('millesimi_riscaldamento_separati')->default(false)->after('millesimi_generali_calcolati');
            $table->boolean('millesimi_acqua_separati')->default(false)->after('millesimi_riscaldamento_separati');
            $table->boolean('millesimi_ascensore_separati')->default(false)->after('millesimi_acqua_separati');
            
            // Metadati avanzati
            $table->json('configurazione_avanzata')->nullable()->after('millesimi_ascensore_separati');
            $table->timestamp('ultima_generazione_unita')->nullable()->after('configurazione_avanzata');
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('stabili', function (Blueprint $table) {
            $table->dropColumn([
                'struttura_fisica_json',
                'numero_palazzine',
                'numero_scale_per_palazzina', 
                'numero_piani',
                'piano_seminterrato',
                'piano_sottotetto',
                'presenza_ascensore',
                'cortile_giardino',
                'superficie_cortile',
                'riscaldamento_centralizzato',
                'acqua_centralizzata',
                'gas_centralizzato',
                'servizio_portineria',
                'orari_portineria',
                'videocitofono',
                'antenna_tv_centralizzata',
                'internet_condominiale',
                'fondo_riserva_minimo',
                'importo_rata_standard',
                'frequenza_rate',
                'giorno_scadenza_rate',
                'iban_condominio',
                'millesimi_generali_calcolati',
                'millesimi_riscaldamento_separati',
                'millesimi_acqua_separati',
                'millesimi_ascensore_separati',
                'configurazione_avanzata',
                'ultima_generazione_unita'
            ]);
        });
    }
};
