netgescon-master/app/Console/Seeders/AllegatiSeeder.php
Pikappa2 1b884feda5 v0.7 - UI Universale e Sistema Database Modernizzato
 Completato:
- Database modernizzato con chiavi id standard Laravel
- Relazioni corrette Amministratore→Stabili→Movimenti
- UI universale responsive con sidebar permission-based
- Codici alfanumerici 8 caratteri implementati
- Seeders con dati di test funzionanti
- Documentazione tecnica completa (INSTALL_LINUX, TECHNICAL_SPECS, UPDATE_SYSTEM)

🔧 Miglioramenti:
- Helper userSetting() funzionante
- Sistema multi-database preparato
- .gitignore aggiornato per sicurezza
- Migration cleanup e ottimizzazione

📚 Documentazione:
- Guida installazione Linux completa
- Specifiche tecniche dettagliate
- Sistema aggiornamenti progettato
- Progress log aggiornato
2025-07-07 17:24:30 +02:00

83 lines
3.8 KiB
PHP

<?php
namespace App\Console\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Allegato;
use App\Models\Stabile;
use App\Models\User;
use App\Models\MovimentoContabile;
class AllegatiSeeder extends Seeder
{
/**
* Seeder per la tabella allegati con dati di test realistici.
* Segue le best practice Laravel con chiavi primarie 'id' standard.
*/
public function run(): void
{
// Recupera alcuni stabili e utenti esistenti per le relazioni
$stabili = Stabile::limit(3)->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!');
}
}