✅ 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
83 lines
3.8 KiB
PHP
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!');
|
|
}
|
|
}
|