whereNull('deleted_at') ->when(! $this->option('reset'), fn ($query) => $query->whereNull('self_service_access_code')) ->get(); if ($students->isEmpty()) { $this->info('Tidak ada siswa yang perlu dibuatkan kode akses.'); return self::SUCCESS; } $bar = $this->output->createProgressBar($students->count()); $bar->start(); foreach ($students as $student) { $student->forceFill([ 'self_service_access_code' => $this->generateUniqueCode(), 'self_service_code_generated_at' => now(), ])->save(); $bar->advance(); } $bar->finish(); $this->newLine(2); $this->info('Kode akses self-service berhasil digenerate.'); return self::SUCCESS; } protected function generateUniqueCode(): string { do { $code = strtoupper(Str::random(8)); } while (Student::where('self_service_access_code', $code)->exists()); return $code; } }