216 lines
10 KiB
PHP
Executable File
216 lines
10 KiB
PHP
Executable File
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use Illuminate\Database\Seeder;
|
||
use App\Models\Persona;
|
||
use App\Models\PersonaUnitaRelazione;
|
||
use App\Models\UnitaImmobiliare;
|
||
use App\Models\PersonaEmailMultipla;
|
||
|
||
class RubricaUnicaSeeder extends Seeder
|
||
{
|
||
/**
|
||
* Popola la rubrica unica con dati di test realistici
|
||
*/
|
||
public function run()
|
||
{
|
||
// 1️⃣ PERSONE FISICHE
|
||
$personeFisiche = [
|
||
[
|
||
'tipologia' => 'fisica',
|
||
'cognome' => 'Rossi',
|
||
'nome' => 'Mario',
|
||
'codice_fiscale' => 'RSSMRA70A01H501Z',
|
||
'telefono_principale' => '+393331234567',
|
||
'email_principale' => 'mario.rossi@email.it',
|
||
'data_nascita' => '1970-01-01',
|
||
'residenza_via' => 'Via Roma, 123',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'email'
|
||
],
|
||
[
|
||
'tipologia' => 'fisica',
|
||
'cognome' => 'Bianchi',
|
||
'nome' => 'Anna',
|
||
'codice_fiscale' => 'BNCNNA80B15F205Y',
|
||
'telefono_principale' => '+393339876543',
|
||
'email_principale' => 'anna.bianchi@gmail.com',
|
||
'data_nascita' => '1980-02-15',
|
||
'residenza_via' => 'Via Milano, 45',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'whatsapp',
|
||
'whatsapp' => '+393339876543'
|
||
],
|
||
[
|
||
'tipologia' => 'fisica',
|
||
'cognome' => 'Verdi',
|
||
'nome' => 'Giuseppe',
|
||
'codice_fiscale' => 'VRDGPP65C10L736X',
|
||
'telefono_principale' => '+393355678901',
|
||
'email_principale' => 'g.verdi@hotmail.com',
|
||
'data_nascita' => '1965-03-10',
|
||
'residenza_via' => 'Corso Italia, 67',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'telefono'
|
||
],
|
||
[
|
||
'tipologia' => 'fisica',
|
||
'cognome' => 'Ferrari',
|
||
'nome' => 'Laura',
|
||
'codice_fiscale' => 'FRRLRA75D20H501W',
|
||
'telefono_principale' => '+393348765432',
|
||
'email_principale' => 'laura.ferrari@libero.it',
|
||
'data_nascita' => '1975-04-20',
|
||
'residenza_via' => 'Via Garibaldi, 89',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'sms'
|
||
],
|
||
[
|
||
'tipologia' => 'fisica',
|
||
'cognome' => 'Conti',
|
||
'nome' => 'Roberto',
|
||
'codice_fiscale' => 'CNTRBT85E30L219V',
|
||
'telefono_principale' => '+393391234567',
|
||
'email_principale' => 'roberto.conti@yahoo.it',
|
||
'data_nascita' => '1985-05-30',
|
||
'residenza_via' => 'Piazza Duomo, 12',
|
||
'consenso_privacy' => false,
|
||
'modalita_comunicazione_preferita' => 'posta'
|
||
]
|
||
];
|
||
|
||
// 2️⃣ PERSONE GIURIDICHE
|
||
$personeGiuridiche = [
|
||
[
|
||
'tipologia' => 'giuridica',
|
||
'cognome' => 'Immobiliare',
|
||
'nome' => 'Milano',
|
||
'ragione_sociale' => 'Immobiliare Milano S.r.l.',
|
||
'codice_fiscale' => '12345678901',
|
||
'partita_iva' => '12345678901',
|
||
'forma_giuridica' => 'S.r.l.',
|
||
'telefono_principale' => '+390212345678',
|
||
'email_principale' => 'info@immobiliaremilano.it',
|
||
'email_pec' => 'immobiliaremilano@pec.it',
|
||
'residenza_via' => 'Via Montenapoleone, 1',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'email'
|
||
],
|
||
[
|
||
'tipologia' => 'giuridica',
|
||
'cognome' => 'Costruzioni',
|
||
'nome' => 'Roma',
|
||
'ragione_sociale' => 'Costruzioni Roma S.p.A.',
|
||
'codice_fiscale' => '98765432109',
|
||
'partita_iva' => '98765432109',
|
||
'forma_giuridica' => 'S.p.A.',
|
||
'telefono_principale' => '+390687654321',
|
||
'email_principale' => 'amministrazione@costruzioniroma.it',
|
||
'email_pec' => 'costruzioniroma@pec.it',
|
||
'residenza_via' => 'Via del Corso, 234',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'email'
|
||
]
|
||
];
|
||
|
||
// 3️⃣ DITTE INDIVIDUALI
|
||
$ditteIndividuali = [
|
||
[
|
||
'tipologia' => 'ditta_individuale',
|
||
'cognome' => 'Fontana',
|
||
'nome' => 'Marco',
|
||
'ragione_sociale' => 'Ditta Individuale Fontana Marco',
|
||
'codice_fiscale' => 'FNTMRC78F12L736Z',
|
||
'partita_iva' => '11223344556',
|
||
'telefono_principale' => '+393357788990',
|
||
'email_principale' => 'marco.fontana@business.it',
|
||
'data_nascita' => '1978-06-12',
|
||
'residenza_via' => 'Via Venezia, 56',
|
||
'consenso_privacy' => true,
|
||
'modalita_comunicazione_preferita' => 'email'
|
||
]
|
||
];
|
||
|
||
// Crea le persone
|
||
$personeCreate = [];
|
||
|
||
foreach (array_merge($personeFisiche, $personeGiuridiche, $ditteIndividuali) as $datiPersona) {
|
||
$persona = Persona::create($datiPersona);
|
||
$personeCreate[] = $persona;
|
||
|
||
echo "✅ Creata persona: {$persona->nome_completo} ({$persona->codice_interno})\n";
|
||
}
|
||
|
||
// 4️⃣ AGGIUNGI EMAIL MULTIPLE (solo per alcune persone)
|
||
$emailAggiuntive = [
|
||
['persona_id' => $personeCreate[0]->id, 'email' => 'mario.rossi.lavoro@azienda.it', 'tipo_email' => 'lavoro'],
|
||
['persona_id' => $personeCreate[1]->id, 'email' => 'anna.bianchi.personale@outlook.com', 'tipo_email' => 'personale'],
|
||
['persona_id' => $personeCreate[5]->id, 'email' => 'commerciale@immobiliaremilano.it', 'tipo_email' => 'commerciale'],
|
||
['persona_id' => $personeCreate[5]->id, 'email' => 'tecnico@immobiliaremilano.it', 'tipo_email' => 'tecnico'],
|
||
];
|
||
|
||
foreach ($emailAggiuntive as $emailData) {
|
||
PersonaEmailMultipla::create($emailData);
|
||
}
|
||
|
||
// 5️⃣ COLLEGA PERSONE ALLE UNITÀ IMMOBILIARI (se esistono)
|
||
$unita = UnitaImmobiliare::limit(10)->get();
|
||
|
||
// Creo un mapping persona_id => persona per facilitare l'accesso
|
||
$personeMap = [];
|
||
foreach ($personeCreate as $persona) {
|
||
$personeMap[$persona->id] = $persona;
|
||
}
|
||
|
||
if ($unita->count() > 0) {
|
||
$relazioniDaCreare = [
|
||
// Mario Rossi - Proprietario di due unità
|
||
['persona_id' => $personeCreate[0]->id, 'unita_id' => $unita[0]->id ?? null, 'tipo_relazione' => 'proprietario', 'quota_relazione' => 100.00, 'data_inizio' => '2020-01-15'],
|
||
['persona_id' => $personeCreate[0]->id, 'unita_id' => $unita[1]->id ?? null, 'tipo_relazione' => 'proprietario', 'quota_relazione' => 50.00, 'data_inizio' => '2021-03-20'],
|
||
|
||
// Anna Bianchi - Comproprietaria
|
||
['persona_id' => $personeCreate[1]->id, 'unita_id' => $unita[1]->id ?? null, 'tipo_relazione' => 'comproprietario', 'quota_relazione' => 50.00, 'data_inizio' => '2021-03-20'],
|
||
|
||
// Giuseppe Verdi - Inquilino
|
||
['persona_id' => $personeCreate[2]->id, 'unita_id' => $unita[2]->id ?? null, 'tipo_relazione' => 'inquilino', 'quota_relazione' => null, 'data_inizio' => '2023-01-01'],
|
||
|
||
// Laura Ferrari - Usufruttuaria
|
||
['persona_id' => $personeCreate[3]->id, 'unita_id' => $unita[3]->id ?? null, 'tipo_relazione' => 'usufruttuario', 'quota_relazione' => null, 'data_inizio' => '2022-06-01'],
|
||
|
||
// Roberto Conti - Delegato Assemblea
|
||
['persona_id' => $personeCreate[4]->id, 'unita_id' => $unita[0]->id ?? null, 'tipo_relazione' => 'delegato_assemblea', 'quota_relazione' => null, 'data_inizio' => '2023-12-01', 'vota_assemblea' => true],
|
||
|
||
// Immobiliare Milano - Proprietaria di unità commerciale
|
||
['persona_id' => $personeCreate[5]->id, 'unita_id' => $unita[4]->id ?? null, 'tipo_relazione' => 'proprietario', 'quota_relazione' => 100.00, 'data_inizio' => '2019-05-10'],
|
||
|
||
// Marco Fontana - Referente per Costruzioni Roma
|
||
['persona_id' => $personeCreate[7]->id, 'unita_id' => $unita[5]->id ?? null, 'tipo_relazione' => 'referente', 'quota_relazione' => null, 'data_inizio' => '2023-01-01'],
|
||
];
|
||
|
||
foreach ($relazioniDaCreare as $relazione) {
|
||
if ($relazione['unita_id'] && isset($personeMap[$relazione['persona_id']])) {
|
||
PersonaUnitaRelazione::create([
|
||
'persona_id' => $relazione['persona_id'],
|
||
'unita_id' => $relazione['unita_id'],
|
||
'tipo_relazione' => $relazione['tipo_relazione'],
|
||
'quota_relazione' => $relazione['quota_relazione'],
|
||
'data_inizio' => $relazione['data_inizio'],
|
||
'attivo' => true,
|
||
'riceve_comunicazioni' => true,
|
||
'riceve_convocazioni' => in_array($relazione['tipo_relazione'], ['proprietario', 'comproprietario', 'usufruttuario', 'delegato_assemblea']),
|
||
'vota_assemblea' => $relazione['vota_assemblea'] ?? in_array($relazione['tipo_relazione'], ['proprietario', 'comproprietario', 'usufruttuario', 'delegato_assemblea'])
|
||
]);
|
||
|
||
echo "🔗 Collegata relazione: {$personeMap[$relazione['persona_id']]->nome_completo} -> {$relazione['tipo_relazione']}\n";
|
||
}
|
||
}
|
||
}
|
||
|
||
echo "\n🎉 Rubrica Unica popolata con successo!\n";
|
||
echo "📊 Totale persone create: " . count($personeCreate) . "\n";
|
||
echo "📧 Email aggiuntive create: " . count($emailAggiuntive) . "\n";
|
||
echo "🔗 Relazioni create: " . (isset($relazioniDaCreare) ? count(array_filter($relazioniDaCreare, fn($r) => $r['unita_id'])) : 0) . "\n";
|
||
}
|
||
}
|