where('codice_stabile', 'DEMO001')->value('id') ?: DB::table('stabili')->orderBy('id')->value('id'); if (! $stabileId) { $this->command?->warn('Nessuno stabile disponibile per i ticket demo.'); return; } $unitaCondomino = DB::table('unita_immobiliari') ->where('stabile_id', $stabileId) ->where('interno', '1') ->value('id'); $unitaInquilino = DB::table('unita_immobiliari') ->where('stabile_id', $stabileId) ->where('interno', '2') ->value('id'); $adminUserId = User::query()->where('email', 'amministratore@demo.netgescon.it')->value('id'); $condominoUserId = User::query()->where('email', 'condomino@demo.netgescon.it')->value('id'); $inquilinoUserId = User::query()->where('email', 'inquilino@demo.netgescon.it')->value('id'); $condominoSoggettoId = Soggetto::query()->where('email', 'condomino@demo.netgescon.it')->value('id'); $inquilinoSoggettoId = Soggetto::query()->where('email', 'inquilino@demo.netgescon.it')->value('id'); $guastiId = CategoriaTicket::query()->firstOrCreate( ['nome' => 'Guasti'], ['descrizione' => 'Guasti e manutenzioni ordinarie'] )->id; $acquaId = CategoriaTicket::query()->firstOrCreate( ['nome' => 'Acqua'], ['descrizione' => 'Segnalazioni acqua e letture contatori'] )->id; $documentiId = CategoriaTicket::query()->firstOrCreate( ['nome' => 'Documentazione'], ['descrizione' => 'Richieste e verifiche documentali'] )->id; $tickets = [ [ 'lookup' => 'DEMO-GUASTO-ASCENSORE', 'stabile_id' => $stabileId, 'unita_immobiliare_id' => $unitaCondomino, 'soggetto_richiedente_id' => $condominoSoggettoId, 'aperto_da_user_id' => $condominoUserId, 'categoria_ticket_id' => $guastiId, 'assegnato_a_user_id' => $adminUserId, 'titolo' => 'Ascensore fermo al piano terra', 'descrizione' => 'Segnalazione demo: ascensore fermo al piano terra con apertura porte intermittente.', 'luogo_intervento' => 'Scala A - Ascensore principale', 'stato' => 'Aperto', 'priorita' => 'Alta', 'data_apertura' => now()->subDays(2), 'data_scadenza_prevista' => now()->addDay(), ], [ 'lookup' => 'DEMO-ACQUA-PERDITA', 'stabile_id' => $stabileId, 'unita_immobiliare_id' => $unitaInquilino, 'soggetto_richiedente_id' => $inquilinoSoggettoId, 'aperto_da_user_id' => $inquilinoUserId, 'categoria_ticket_id' => $acquaId, 'assegnato_a_user_id' => $adminUserId, 'titolo' => 'Perdita acqua nel vano contatori', 'descrizione' => 'Segnalazione demo: perdita leggera nel vano contatori con lettura acqua anomala.', 'luogo_intervento' => 'Piano terra - vano tecnico acqua', 'stato' => 'In Lavorazione', 'priorita' => 'Urgente', 'data_apertura' => now()->subDay(), 'data_scadenza_prevista' => now()->addDay(), ], [ 'lookup' => 'DEMO-DOC-VERBALE', 'stabile_id' => $stabileId, 'unita_immobiliare_id' => $unitaCondomino, 'soggetto_richiedente_id' => $condominoSoggettoId, 'aperto_da_user_id' => $condominoUserId, 'categoria_ticket_id' => $documentiId, 'assegnato_a_user_id' => $adminUserId, 'titolo' => 'Richiesta copia verbale assemblea', 'descrizione' => 'Segnalazione demo: richiesta invio verbale assemblea straordinaria di luglio.', 'luogo_intervento' => 'Area documentale', 'stato' => 'Chiuso', 'priorita' => 'Media', 'data_apertura' => now()->subDays(8), 'data_scadenza_prevista' => now()->subDays(6), 'data_chiusura_effettiva' => now()->subDays(5), 'data_risoluzione_effettiva' => now()->subDays(5), ], ]; foreach ($tickets as $ticket) { unset($ticket['lookup']); Ticket::query()->updateOrCreate( ['titolo' => $ticket['titolo']], $ticket ); } $this->command?->info('Ticket demo sincronizzati: ' . count($tickets)); } }