'admin@termanager2.local'], [ 'name' => 'Amministratore', 'password' => bcrypt('password'), ] ); $admin->assignRole('amministratore'); $assistente = User::firstOrCreate( ['email' => 'assistente@termanager2.local'], [ 'name' => 'Assistente', 'password' => bcrypt('password'), ] ); $assistente->assignRole('assistente'); $operatore = User::firstOrCreate( ['email' => 'operatore@termanager2.local'], [ 'name' => 'Operatore', 'password' => bcrypt('password'), ] ); $operatore->assignRole('operatore'); // ─── Settings ─────────────────────────────── Setting::firstOrCreate([], [ 'congregazione_nome' => 'Congregazione Demo', 'giorni_giacenza_da_assegnare' => 120, 'giorni_giacenza_prioritari' => 180, 'giorni_per_smarrito' => 120, 'home_limit_list' => 10, 'audit_retention_days' => 730, 'setup_completed' => true, ]); // ─── Zone ─────────────────────────────────── $zone = []; foreach (['Centro', 'Nord', 'Sud', 'Est', 'Ovest'] as $nome) { $zone[$nome] = Zona::firstOrCreate(['nome' => $nome]); } // ─── Tipologie ───────────────────────────── $tipologie = []; foreach (['Residenziale', 'Commerciale', 'Rurale', 'Telefono'] as $nome) { $tipologie[$nome] = Tipologia::firstOrCreate(['nome' => $nome]); } // ─── Proclamatori ─────────────────────────── $nomi = [ ['Mario', 'Rossi'], ['Luisa', 'Bianchi'], ['Giovanni', 'Verdi'], ['Anna', 'Neri'], ['Paolo', 'Esposito'], ['Francesca', 'Romano'], ['Marco', 'Colombo'], ['Sara', 'Ricci'], ['Luca', 'Marino'], ['Elena', 'Greco'], ['Roberto', 'Bruno'], ['Chiara', 'Gallo'], ]; $proclamatori = []; foreach ($nomi as [$nome, $cognome]) { $proclamatori[] = Proclamatore::firstOrCreate( // Can't search encrypted fields, use a simple check ['id' => count($proclamatori) + 1], ['nome' => $nome, 'cognome' => $cognome, 'attivo' => true] ); } // Re-fetch to get proper IDs $proclamatori = Proclamatore::all(); // ─── Territori ────────────────────────────── $zoneKeys = array_values($zone); $tipoKeys = array_values($tipologie); for ($i = 1; $i <= 30; $i++) { Territorio::firstOrCreate( ['numero' => (string) $i], [ 'zona_id' => $zoneKeys[($i - 1) % count($zoneKeys)]->id, 'tipologia_id' => $tipoKeys[($i - 1) % count($tipoKeys)]->id, 'note' => $i <= 5 ? "Note territorio $i" : null, 'confini' => "Confini del territorio $i", 'attivo' => $i <= 28, // 2 territories inactive 'prioritario' => $i <= 3, // 3 manual priority ] ); } // ─── Anno teocratico ──────────────────────── $anno = AnnoTeocratico::corrente(); // ─── Assegnazioni di esempio ──────────────── $territori = Territorio::where('attivo', true)->get(); // 10 closed assignments (various dates) for ($i = 0; $i < 10; $i++) { $territorio = $territori[$i]; $proclamatore = $proclamatori[$i % $proclamatori->count()]; $assignedAt = Carbon::now()->subDays(rand(30, 200)); $returnedAt = $assignedAt->copy()->addDays(rand(14, 90)); if ($returnedAt->isFuture()) { $returnedAt = now()->subDays(rand(1, 10)); } Assegnazione::firstOrCreate( [ 'territorio_id' => $territorio->id, 'anno_teocratico_id' => $anno->id, 'assigned_at' => $assignedAt->toDateString(), ], [ 'proclamatore_id' => $proclamatore->id, 'returned_at' => $returnedAt->toDateString(), 'created_by' => $admin->id, 'returned_by' => $admin->id, ] ); } // 5 open assignments (currently assigned) for ($i = 15; $i < 20; $i++) { $territorio = $territori[$i]; $proclamatore = $proclamatori[$i % $proclamatori->count()]; $assignedAt = Carbon::now()->subDays(rand(5, 150)); Assegnazione::firstOrCreate( [ 'territorio_id' => $territorio->id, 'anno_teocratico_id' => $anno->id, 'assigned_at' => $assignedAt->toDateString(), ], [ 'proclamatore_id' => $proclamatore->id, 'returned_at' => null, 'created_by' => $admin->id, ] ); } } }