command->info('🏗️ Creazione dati di test realistici...'); // 1. Crea stabili di test $stabili = $this->creaStabili(); // 2. Crea unità immobiliari $this->creaUnitaImmobiliari($stabili); // 3. Crea condomini di test $this->creaCondomini(); // 4. Crea tickets di test $this->creaTickets(); $this->command->info('✅ Dati di test creati con successo!'); $this->command->info('📊 Statistiche:'); $this->command->info(' - Stabili: ' . Stabile::count()); $this->command->info(' - Unità: ' . UnitaImmobiliare::count()); $this->command->info(' - Condomini: ' . Condomino::count()); $this->command->info(' - Tickets: ' . Ticket::count()); } private function creaStabili() { $stabiliData = [ [ 'denominazione' => 'Condominio Milano Centro', 'indirizzo' => 'Via Brera, 15', 'citta' => 'Milano', 'cap' => '20121', 'codice_fiscale' => '80012345678', 'amministratore_nome' => 'Avv. Mario Rossi', 'amministratore_email' => 'admin@netgescon.local', 'telefono' => '+39 02 123456', 'num_palazzine' => 1, 'num_scale' => 4, 'num_piani' => 6, 'num_unita' => 24, 'banca_principale' => 'Intesa Sanpaolo', 'iban_principale' => 'IT60 X054 2811 1010 0000 0123 456', 'saldo_iniziale_principale' => 15000.00, 'data_saldo_iniziale' => '2025-01-01' ], [ 'denominazione' => 'Residenza Porta Nuova', 'indirizzo' => 'Corso Garibaldi, 82', 'citta' => 'Milano', 'cap' => '20121', 'codice_fiscale' => '80012345679', 'amministratore_nome' => 'Dott.ssa Laura Bianchi', 'amministratore_email' => 'admin@netgescon.local', 'telefono' => '+39 02 234567', 'num_palazzine' => 2, 'num_scale' => 6, 'num_piani' => 8, 'num_unita' => 48, 'banca_principale' => 'UniCredit', 'iban_principale' => 'IT60 X020 0811 1010 0000 0234 567', 'saldo_iniziale_principale' => 28000.00, 'data_saldo_iniziale' => '2025-01-01' ], [ 'denominazione' => 'Villaggio Verde', 'indirizzo' => 'Via dei Tigli, 33', 'citta' => 'Milano', 'cap' => '20137', 'codice_fiscale' => '80012345680', 'amministratore_nome' => 'Geom. Franco Verdi', 'amministratore_email' => 'admin@netgescon.local', 'telefono' => '+39 02 345678', 'num_palazzine' => 5, 'num_scale' => 2, 'num_piani' => 3, 'num_unita' => 30, 'banca_principale' => 'Banco BPM', 'iban_principale' => 'IT60 X056 9611 1010 0000 0345 678', 'saldo_iniziale_principale' => 8500.00, 'data_saldo_iniziale' => '2025-01-01' ] ]; $stabili = []; foreach ($stabiliData as $data) { $stabili[] = Stabile::create($data); } return $stabili; } private function creaUnitaImmobiliari($stabili) { foreach ($stabili as $stabile) { $numUnita = $stabile->num_unita; $scale = $stabile->num_scale; $piani = $stabile->num_piani; $unitaPerScala = intval($numUnita / $scale); $unitaPerPiano = 2; // Media 2 unità per piano for ($scala = 1; $scala <= $scale; $scala++) { for ($piano = 1; $piano <= $piani; $piano++) { for ($unita = 1; $unita <= $unitaPerPiano; $unita++) { if (($scala - 1) * ($piani * $unitaPerPiano) + ($piano - 1) * $unitaPerPiano + $unita <= $numUnita) { UnitaImmobiliare::create([ 'stabile_id' => $stabile->id, 'interno' => $scala . '0' . $piano . '0' . $unita, 'scala' => 'Scala ' . chr(64 + $scala), // A, B, C... 'piano' => $piano, 'superficie' => rand(60, 120), 'vani' => rand(2, 5), 'categoria_catastale' => 'A/' . rand(2, 4), 'classe_energetica' => ['A', 'B', 'C', 'D'][rand(0, 3)], 'millesimi_proprieta' => rand(15, 35), 'millesimi_riscaldamento' => rand(12, 30), 'millesimi_ascensore' => rand(10, 25), 'note' => 'Unità di test - ' . $stabile->denominazione ]); } } } } } } private function creaCondomini() { $condominiData = [ ['nome' => 'Giuseppe', 'cognome' => 'Verdi', 'email' => 'g.verdi@email.com', 'telefono' => '+39 335 1234567'], ['nome' => 'Maria', 'cognome' => 'Rossi', 'email' => 'm.rossi@email.com', 'telefono' => '+39 338 2345678'], ['nome' => 'Francesco', 'cognome' => 'Bianchi', 'email' => 'f.bianchi@email.com', 'telefono' => '+39 340 3456789'], ['nome' => 'Anna', 'cognome' => 'Neri', 'email' => 'a.neri@email.com', 'telefono' => '+39 347 4567890'], ['nome' => 'Luigi', 'cognome' => 'Ferrari', 'email' => 'l.ferrari@email.com', 'telefono' => '+39 349 5678901'], ['nome' => 'Giulia', 'cognome' => 'Romano', 'email' => 'g.romano@email.com', 'telefono' => '+39 351 6789012'], ['nome' => 'Marco', 'cognome' => 'Gallo', 'email' => 'm.gallo@email.com', 'telefono' => '+39 333 7890123'], ['nome' => 'Elena', 'cognome' => 'Costa', 'email' => 'e.costa@email.com', 'telefono' => '+39 345 8901234'], ['nome' => 'Roberto', 'cognome' => 'Ricci', 'email' => 'r.ricci@email.com', 'telefono' => '+39 366 9012345'], ['nome' => 'Francesca', 'cognome' => 'Lombardi', 'email' => 'f.lombardi@email.com', 'telefono' => '+39 392 0123456'] ]; foreach ($condominiData as $data) { // Nota: qui dovresti creare il model Condomino se esiste // Al momento lo skippiamo se la tabella non esiste try { DB::table('condomini')->insert(array_merge($data, [ 'created_at' => now(), 'updated_at' => now() ])); } catch (\Exception $e) { $this->command->warn('Tabella condomini non trovata, skip creazione condomini'); break; } } } private function creaTickets() { $ticketsData = [ [ 'titolo' => 'Problema ascensore Piano 3', 'descrizione' => 'L\'ascensore si blocca al terzo piano da questa mattina', 'priorita' => 'alta', 'stato' => 'aperto', 'categoria' => 'manutenzione' ], [ 'titolo' => 'Richiesta pulizia scale', 'descrizione' => 'Le scale necessitano di una pulizia straordinaria', 'priorita' => 'media', 'stato' => 'in_lavorazione', 'categoria' => 'pulizie' ], [ 'titolo' => 'Sostituzione lampadina cortile', 'descrizione' => 'La lampadina del cortile interno è bruciata', 'priorita' => 'bassa', 'stato' => 'aperto', 'categoria' => 'elettrico' ], [ 'titolo' => 'Perdita acqua garage', 'descrizione' => 'Segnalata perdita d\'acqua nel garage al piano -1', 'priorita' => 'alta', 'stato' => 'aperto', 'categoria' => 'idraulico' ], [ 'titolo' => 'Verifica riscaldamento', 'descrizione' => 'Alcuni appartamenti lamentano scarso riscaldamento', 'priorita' => 'media', 'stato' => 'chiuso', 'categoria' => 'riscaldamento' ] ]; foreach ($ticketsData as $data) { try { DB::table('tickets')->insert(array_merge($data, [ 'created_at' => now(), 'updated_at' => now() ])); } catch (\Exception $e) { $this->command->warn('Tabella tickets non trovata, skip creazione tickets'); break; } } } }