228 lines
9.2 KiB
PHP
228 lines
9.2 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Illuminate\Database\Seeder;
|
|
use App\Models\Stabile;
|
|
use App\Models\UnitaImmobiliare;
|
|
use App\Models\Condomino;
|
|
use App\Models\Ticket;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class DatiTestRealisticiSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
$this->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;
|
|
}
|
|
}
|
|
}
|
|
}
|