artisan('db:seed', ['--class' => 'FinancialWorkflowPermissionsSeeder', '--force' => true]); } /** * Create a user with a specific role */ protected function createUserWithRole(string $role, array $attributes = []): User { $user = User::factory()->create($attributes); $user->assignRole($role); return $user; } /** * Create an admin user */ protected function createAdmin(array $attributes = []): User { return $this->createUserWithRole('admin', $attributes); } /** * Create a finance cashier user */ protected function createCashier(array $attributes = []): User { return $this->createUserWithRole('finance_cashier', $attributes); } /** * Create a finance accountant user */ protected function createAccountant(array $attributes = []): User { return $this->createUserWithRole('finance_accountant', $attributes); } /** * Create a finance chair user */ protected function createChair(array $attributes = []): User { return $this->createUserWithRole('finance_chair', $attributes); } /** * Create a finance board member user */ protected function createBoardMember(array $attributes = []): User { return $this->createUserWithRole('finance_board_member', $attributes); } /** * Create a membership manager user */ protected function createMembershipManager(array $attributes = []): User { return $this->createUserWithRole('membership_manager', $attributes); } /** * Create a user with specific permissions */ protected function createUserWithPermissions(array $permissions, array $attributes = []): User { $user = User::factory()->create($attributes); foreach ($permissions as $permission) { Permission::findOrCreate($permission, 'web'); $user->givePermissionTo($permission); } return $user; } /** * Get all finance approval users (cashier, accountant, chair) */ protected function createFinanceApprovalTeam(): array { return [ 'cashier' => $this->createCashier(['email' => 'cashier@test.com']), 'accountant' => $this->createAccountant(['email' => 'accountant@test.com']), 'chair' => $this->createChair(['email' => 'chair@test.com']), ]; } }