netgescon-master/app/Observers/AmministratoreObserver.php
2025-07-20 14:57:25 +00:00

39 lines
955 B
PHP

<?php
namespace App\Observers;
use App\Models\Amministratore;
use Illuminate\Support\Facades\DB;
class AmministratoreObserver
{
/**
* Handle the Amministratore "creating" event.
*/
public function creating(Amministratore $amministratore): void
{
if (empty($amministratore->codice_univoco)) {
$amministratore->codice_univoco = $this->generateCodiceUnivoco();
}
}
/**
* Genera un codice univoco di 8 caratteri alfanumerici
*/
private function generateCodiceUnivoco(): string
{
$characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
do {
$codice = '';
for ($i = 0; $i < 8; $i++) {
$codice .= $characters[random_int(0, 35)];
}
$exists = DB::table('amministratori')->where('codice_univoco', $codice)->exists();
} while ($exists);
return $codice;
}
}