get(); $users = User::limit(2)->get(); $movimenti = MovimentoContabile::limit(5)->get(); $this->command->info("Trovati: {$stabili->count()} stabili, {$users->count()} utenti, {$movimenti->count()} movimenti"); if ($stabili->isEmpty() || $users->isEmpty()) { $this->command->warn('Assicurati che esistano stabili e utenti prima di eseguire questo seeder.'); $this->command->info('Creazione dati di esempio senza relazioni...'); } $allegatiData = [ [ 'stabile_id' => $stabili->first()?->id, 'nome_file_originale' => 'Fattura_Energia_Gennaio_2025.pdf', 'nome_file_storage' => 'fattura_energia_jan_2025_' . uniqid() . '.pdf', 'percorso_file_storage' => 'allegati/fatture/2025/01/', 'tipo_mime' => 'application/pdf', 'dimensione_byte' => 245760, // ~240KB 'descrizione' => 'Fattura energia elettrica gennaio 2025', 'allegabile_type' => MovimentoContabile::class, 'allegabile_id' => $movimenti->first()?->id, 'user_id' => $users->first()?->id, 'tags' => json_encode(['fattura', 'energia', 'utilities']), ], [ 'stabile_id' => $stabili->first()?->id, 'nome_file_originale' => 'Preventivo_Manutenzione_Ascensore.docx', 'nome_file_storage' => 'preventivo_ascensore_' . uniqid() . '.docx', 'percorso_file_storage' => 'allegati/preventivi/2025/', 'tipo_mime' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'dimensione_byte' => 89120, // ~87KB 'descrizione' => 'Preventivo per manutenzione straordinaria ascensore', 'allegabile_type' => MovimentoContabile::class, 'allegabile_id' => $movimenti->skip(1)->first()?->id, 'user_id' => $users->first()?->id, 'tags' => json_encode(['preventivo', 'ascensore', 'manutenzione']), ], [ 'stabile_id' => $stabili->get(1)?->id ?? $stabili->first()?->id, 'nome_file_originale' => 'Foto_Danni_Facciata.jpg', 'nome_file_storage' => 'foto_danni_facciata_' . uniqid() . '.jpg', 'percorso_file_storage' => 'allegati/foto/danni/2025/', 'tipo_mime' => 'image/jpeg', 'dimensione_byte' => 2097152, // ~2MB 'descrizione' => 'Fotografia dei danni alla facciata ovest', 'allegabile_type' => MovimentoContabile::class, 'allegabile_id' => $movimenti->skip(2)->first()?->id, 'user_id' => $users->last()?->id, 'tags' => json_encode(['foto', 'danni', 'facciata']), ], ]; foreach ($allegatiData as $data) { // Crea l'allegato sempre, anche se alcune relazioni sono null $allegato = Allegato::create($data); $this->command->info("Creato allegato: {$data['nome_file_originale']} (ID: {$allegato->id}, Codice: {$allegato->codice_allegato})"); } $this->command->info('Seeder AllegatiSeeder completato con successo!'); } }