option('stabile_id'); // Verifica che lo stabile esista $stabile = Stabile::find($stabileId); if (!$stabile) { $this->error("Stabile con ID {$stabileId} non trovato!"); return 1; } $this->info("🏢 Generazione palazzine demo per stabile: {$stabile->denominazione}"); DB::beginTransaction(); try { // Elimina eventuali palazzine esistenti per questo stabile $this->info("🗑️ Rimozione palazzine esistenti..."); Palazzina::where('stabile_id', $stabileId)->delete(); $palazzineCreate = []; // Genera 3 palazzine demo $configPalazzine = [ [ 'codice' => 'A', 'denominazione' => 'Palazzina A - Principale', 'scale' => 2, 'piani_fuori_terra' => 4, 'piani_interrati' => 1, 'appartamenti_per_piano' => 2, 'anno_costruzione' => 1985, 'ha_ascensore' => true, 'numero_ascensori' => 2, 'ha_videocitofono' => true, 'accessibile_disabili' => true, 'ha_giardino_comune' => true, 'mq_giardino_comune' => 150.50, ], [ 'codice' => 'B', 'denominazione' => 'Palazzina B - Residenziale', 'scale' => 1, 'piani_fuori_terra' => 3, 'piani_interrati' => 0, 'appartamenti_per_piano' => 3, 'anno_costruzione' => 1992, 'ha_ascensore' => true, 'numero_ascensori' => 1, 'ha_videocitofono' => true, 'accessibile_disabili' => false, 'ha_terrazza_comune' => true, 'mq_terrazza_comune' => 75.25, ], [ 'codice' => 'C', 'denominazione' => 'Palazzina C - Commerciale/Residenziale', 'scale' => 1, 'piani_fuori_terra' => 2, 'piani_interrati' => 0, 'appartamenti_per_piano' => 4, 'anno_costruzione' => 2005, 'ha_ascensore' => false, 'ha_videocitofono' => true, 'accessibile_disabili' => true, 'posti_auto_coperti' => 8, 'ha_locale_caldaia' => true, 'ha_locale_contatori' => true, ] ]; foreach ($configPalazzine as $config) { $this->info("🏗️ Creazione Palazzina {$config['codice']}..."); $palazzina = Palazzina::create([ 'stabile_id' => $stabileId, 'codice_palazzina' => $config['codice'], 'denominazione' => $config['denominazione'], 'descrizione' => "Palazzina {$config['codice']} - Generata automaticamente per demo", 'numero_scale' => $config['scale'], 'numero_piani_fuori_terra' => $config['piani_fuori_terra'], 'numero_piani_interrati' => $config['piani_interrati'], 'ha_piano_terra' => true, 'appartamenti_per_piano' => $config['appartamenti_per_piano'], 'superficie_totale' => rand(500, 1500), 'anno_costruzione' => $config['anno_costruzione'], 'stato_conservazione' => ['ottimo', 'buono', 'discreto'][array_rand(['ottimo', 'buono', 'discreto'])], 'tipo_riscaldamento' => 'centralizzato', 'ha_ascensore' => $config['ha_ascensore'] ?? false, 'numero_ascensori' => $config['numero_ascensori'] ?? 0, 'ha_videocitofono' => $config['ha_videocitofono'] ?? false, 'ha_impianto_allarme' => rand(0, 1), 'accessibile_disabili' => $config['accessibile_disabili'] ?? false, 'posti_auto_coperti' => $config['posti_auto_coperti'] ?? rand(0, 5), 'posti_auto_scoperti' => rand(0, 10), 'ha_giardino_comune' => $config['ha_giardino_comune'] ?? false, 'mq_giardino_comune' => $config['mq_giardino_comune'] ?? null, 'ha_terrazza_comune' => $config['ha_terrazza_comune'] ?? false, 'mq_terrazza_comune' => $config['mq_terrazza_comune'] ?? null, 'ha_locale_caldaia' => $config['ha_locale_caldaia'] ?? false, 'ha_locale_contatori' => $config['ha_locale_contatori'] ?? true, 'ha_locale_bici' => rand(0, 1), 'ha_lavanderia' => rand(0, 1), 'note' => "Palazzina demo creata il " . now()->format('d/m/Y H:i'), 'attiva' => true, ]); $palazzineCreate[] = $palazzina; $this->info(" ✅ Palazzina {$config['codice']} creata (ID: {$palazzina->id})"); $this->info(" 📊 Unità teoriche: {$palazzina->numero_teorico_unita}"); } // Opzione per generare anche le unità immobiliari if ($this->confirm('Vuoi generare automaticamente anche le unità immobiliari?', true)) { $this->info("🏠 Generazione unità immobiliari..."); $totaleUnita = 0; foreach ($palazzineCreate as $palazzina) { $this->info(" 🔨 Generazione unità per Palazzina {$palazzina->codice_palazzina}..."); $numeroUnita = $palazzina->eseguiGenerazioneUnita(); $totaleUnita += $numeroUnita; $this->info(" ✅ Generate {$numeroUnita} unità per Palazzina {$palazzina->codice_palazzina}"); } $this->info("🎉 Totale unità generate: {$totaleUnita}"); } DB::commit(); $this->info("✨ Generazione completata con successo!"); $this->table( ['Palazzina', 'Scale', 'Piani', 'App/Piano', 'Unità Teoriche', 'Anno'], collect($palazzineCreate)->map(function ($p) { return [ $p->codice_palazzina, $p->numero_scale, $p->numero_totale_piani, $p->appartamenti_per_piano, $p->numero_teorico_unita, $p->anno_costruzione, ]; })->toArray() ); return 0; } catch (\Exception $e) { DB::rollback(); $this->error("❌ Errore durante la generazione: " . $e->getMessage()); $this->error("Stack trace: " . $e->getTraceAsString()); return 1; } } }