<?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
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::create('tipi_utilizzo', function (Blueprint $table) {
            $table->id();
            $table->string('codice', 10)->unique()->comment('Codice tipo utilizzo (es: ABT, NEG, CAN)');
            $table->string('descrizione')->comment('Descrizione tipo utilizzo');
            $table->text('note')->nullable()->comment('Note aggiuntive');
            $table->boolean('attivo')->default(true)->comment('Se il tipo è utilizzabile');
            $table->json('configurazioni_default')->nullable()->comment('Configurazioni default per questo tipo');
            $table->timestamps();
            $table->softDeletes();
            
            $table->index('codice');
            $table->index('attivo');
        });
        
        // Inserisci i tipi di utilizzo standard
        DB::table('tipi_utilizzo')->insert([
            [
                'codice' => 'ABT',
                'descrizione' => 'Abitazione',
                'note' => 'Unità immobiliare ad uso abitativo',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => true,
                    'spese_condominiali' => true,
                    'millesimi_default' => null
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'NEG',
                'descrizione' => 'Negozio',
                'note' => 'Unità immobiliare ad uso commerciale',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => true,
                    'millesimi_default' => null
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'CAN',
                'descrizione' => 'Cantina',
                'note' => 'Cantina o deposito',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => true,
                    'millesimi_default' => 5.0
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'BOX',
                'descrizione' => 'Box auto',
                'note' => 'Posto auto o garage',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => true,
                    'millesimi_default' => 10.0
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'SOF',
                'descrizione' => 'Soffitta',
                'note' => 'Soffitta o sottotetto',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => true,
                    'millesimi_default' => 3.0
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'TER',
                'descrizione' => 'Terrazza',
                'note' => 'Terrazza di proprietà esclusiva',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => true,
                    'millesimi_default' => 2.0
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ],
            [
                'codice' => 'COND',
                'descrizione' => 'Proprietà condominiale',
                'note' => 'Unità di proprietà del condominio',
                'attivo' => true,
                'configurazioni_default' => json_encode([
                    'gestione_riscaldamento' => false,
                    'spese_condominiali' => false,
                    'millesimi_default' => 0.0
                ]),
                'created_at' => now(),
                'updated_at' => now()
            ]
        ]);
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::dropIfExists('tipi_utilizzo');
    }
};
