<?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) {
            // Dati catastali del condominio
            if (!Schema::hasColumn('stabili', 'codice_comune_catasto')) {
                $table->string('codice_comune_catasto', 4)->nullable()->after('provincia')->comment('Codice comune catasto (es: H501 per Roma)');
            }
            if (!Schema::hasColumn('stabili', 'foglio_catasto')) {
                $table->string('foglio_catasto', 10)->nullable()->after('codice_comune_catasto')->comment('Foglio del catasto');
            }
            if (!Schema::hasColumn('stabili', 'particella_catasto')) {
                $table->string('particella_catasto', 20)->nullable()->after('foglio_catasto')->comment('Particella catastale');
            }
            if (!Schema::hasColumn('stabili', 'codice_destinatario_sdi')) {
                $table->string('codice_destinatario_sdi', 7)->nullable()->after('particella_catasto')->comment('Codice destinatario per fatturazione elettronica SDI');
            }
            if (!Schema::hasColumn('stabili', 'pec_condominio')) {
                $table->string('pec_condominio')->nullable()->after('codice_destinatario_sdi')->comment('PEC del condominio');
            }
            
            // Configurazioni predefinite per nuove unità
            if (!Schema::hasColumn('stabili', 'configurazione_default_unita')) {
                $table->json('configurazione_default_unita')->nullable()->after('pec_condominio')->comment('Configurazione default per nuove unità immobiliari');
            }
            
            // Configurazioni rate e periodicità
            if (!Schema::hasColumn('stabili', 'modalita_rateizzazione')) {
                $table->enum('modalita_rateizzazione', ['mensile', 'bimestrale', 'trimestrale', 'quadrimestrale', 'semestrale', 'annuale'])
                    ->default('trimestrale')->after('configurazione_default_unita')->comment('Modalità di rateizzazione ordinaria');
            }
            if (!Schema::hasColumn('stabili', 'inizio_esercizio')) {
                $table->date('inizio_esercizio')->nullable()->after('modalita_rateizzazione')->comment('Data inizio esercizio (se diverso da 1 gennaio)');
            }
            if (!Schema::hasColumn('stabili', 'fine_esercizio')) {
                $table->date('fine_esercizio')->nullable()->after('inizio_esercizio')->comment('Data fine esercizio (se diverso da 31 dicembre)');
            }
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('stabili', function (Blueprint $table) {
            $table->dropColumn([
                'codice_comune_catasto', 'foglio_catasto', 'particella_catasto', 
                'codice_destinatario_sdi', 'pec_condominio', 'configurazione_default_unita',
                'modalita_rateizzazione', 'inizio_esercizio', 'fine_esercizio'
            ]);
        });
    }
};
