command->info('🚀 Inizializzazione utenti completi per NetGesCon Laravel...'); // Assicuriamoci che tutti i ruoli esistano $this->createRoles(); // Crea utenti aggiuntivi per i test $this->createAdditionalUsers(); $this->command->info('✅ Seeder utenti completo terminato con successo!'); } /** * Crea tutti i ruoli necessari */ private function createRoles(): void { $roles = [ 'super-admin' => 'Super Amministratore', 'amministratore' => 'Amministratore Condominio', 'collaboratore' => 'Collaboratore Amministratore', 'condomino' => 'Condomino/Proprietario', 'fornitore' => 'Fornitore di Servizi', 'inquilino' => 'Inquilino', 'servizi' => 'Servizi Tecnici', 'ospite' => 'Ospite (Solo Lettura)', ]; foreach ($roles as $roleName => $description) { Role::firstOrCreate(['name' => $roleName, 'guard_name' => 'web']); $this->command->info("✓ Ruolo creato: {$roleName} ({$description})"); } } /** * Crea utenti aggiuntivi per completare i test */ private function createAdditionalUsers(): void { $additionalUsers = [ // Collaboratori [ 'name' => 'Collaboratore Test', 'email' => 'collaboratore@example.com', 'password' => 'password', 'role' => 'collaboratore' ], // Fornitori [ 'name' => 'Fornitore Test', 'email' => 'fornitore@example.com', 'password' => 'password', 'role' => 'fornitore' ], [ 'name' => 'Ditta Pulizie', 'email' => 'pulizie@example.com', 'password' => 'password', 'role' => 'fornitore' ], [ 'name' => 'Ditta Manutenzione', 'email' => 'manutenzione@example.com', 'password' => 'password', 'role' => 'fornitore' ], [ 'name' => 'Tecnici Impianti', 'email' => 'impianti@example.com', 'password' => 'password', 'role' => 'fornitore' ], // Servizi [ 'name' => 'Servizio Tecnico', 'email' => 'servizi@example.com', 'password' => 'password', 'role' => 'servizi' ], [ 'name' => 'Portiere Test', 'email' => 'portiere@example.com', 'password' => 'password', 'role' => 'servizi' ], // Ospiti [ 'name' => 'Ospite Test', 'email' => 'ospite@example.com', 'password' => 'password', 'role' => 'ospite' ], // Utenti per test specifici [ 'name' => 'Test Base User', 'email' => 'test.base@example.com', 'password' => 'password', 'role' => 'amministratore' ], [ 'name' => 'Test Workflow User', 'email' => 'test.workflow@example.com', 'password' => 'password', 'role' => 'amministratore' ], [ 'name' => 'Test Permissions User', 'email' => 'test.permissions@example.com', 'password' => 'password', 'role' => 'collaboratore' ], // API Users [ 'name' => 'API Developer', 'email' => 'api.dev@example.com', 'password' => 'password', 'role' => 'amministratore' ], [ 'name' => 'API Test User', 'email' => 'api.test@example.com', 'password' => 'password', 'role' => 'collaboratore' ], ]; foreach ($additionalUsers as $userData) { $user = User::firstOrCreate( ['email' => $userData['email']], [ 'name' => $userData['name'], 'password' => Hash::make($userData['password']), 'email_verified_at' => now(), ] ); // Assegna il ruolo if (!$user->hasRole($userData['role'])) { $user->assignRole($userData['role']); } $this->command->info("✓ Utente creato: {$user->name} ({$user->email}) - Ruolo: {$userData['role']}"); } } }