Files
database-kesiswaan/app/Console/Commands/GenerateStudentSelfServiceCodes.php
T
2026-04-12 06:24:30 +00:00

54 lines
1.5 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Models\Student;
use Illuminate\Console\Command;
use Illuminate\Support\Str;
class GenerateStudentSelfServiceCodes extends Command
{
protected $signature = 'students:generate-self-service-codes {--reset : Generate ulang walau kode sudah ada}';
protected $description = 'Generate kode akses self-service untuk siswa';
public function handle(): int
{
$students = Student::query()
->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;
}
}