81 lines
2.2 KiB
PHP
81 lines
2.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Jobs;
|
||
|
|
|
||
|
|
use App\Mail\CodeGenerationEnd;
|
||
|
|
use App\Mail\JobFailed;
|
||
|
|
use App\Models\Codes;
|
||
|
|
use Exception;
|
||
|
|
use Illuminate\Bus\Queueable;
|
||
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||
|
|
use Illuminate\Foundation\Bus\Dispatchable;
|
||
|
|
use Illuminate\Queue\InteractsWithQueue;
|
||
|
|
use Illuminate\Queue\SerializesModels;
|
||
|
|
use Illuminate\Support\Facades\Mail;
|
||
|
|
|
||
|
|
class ProcessUniqueCode implements ShouldQueue
|
||
|
|
{
|
||
|
|
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
|
||
|
|
|
||
|
|
private $quantity;
|
||
|
|
private $length;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Create a new job instance.
|
||
|
|
*
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function __construct($quantity, $length) {
|
||
|
|
$this->quantity = $quantity;
|
||
|
|
$this->length = $length;
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Execute the job.
|
||
|
|
*
|
||
|
|
* @return void
|
||
|
|
*/
|
||
|
|
public function handle()
|
||
|
|
{
|
||
|
|
set_time_limit(0);
|
||
|
|
for ($ib = 1; $ib <= $this->quantity;) {
|
||
|
|
try {
|
||
|
|
$code = new Codes();
|
||
|
|
$code->code_unique = $this->getCode($this->length);
|
||
|
|
$code->code_used = 0;
|
||
|
|
$code->date_creation = now();
|
||
|
|
$code->save();
|
||
|
|
if ($code){
|
||
|
|
$ib++;
|
||
|
|
}
|
||
|
|
} catch (\PDOException $e) {
|
||
|
|
if (!strpos($e->getMessage(), 'Duplicate entry')){
|
||
|
|
die($e->getMessage());
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// ---- Fin de la génération
|
||
|
|
Mail::to(config('mail.MAIL_ADMIN'))->send(new CodeGenerationEnd($this->quantity));
|
||
|
|
}
|
||
|
|
|
||
|
|
private function getCode($car){
|
||
|
|
$chaine = "ABCDEFGHJKMNPQRSTUWXYZ123456789"; // Caractères autorisés
|
||
|
|
$valprec = "";
|
||
|
|
$string = "";
|
||
|
|
srand();
|
||
|
|
for ($i = 0; $i < $car;) {
|
||
|
|
$val = $chaine[rand() % strlen($chaine)];
|
||
|
|
if ($val != $valprec){
|
||
|
|
$string .= $val;
|
||
|
|
$valprec = $val;
|
||
|
|
$i++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $string;
|
||
|
|
}
|
||
|
|
|
||
|
|
public function failed(Exception $exception) {
|
||
|
|
Mail::to(config('mail.MAIL_ADMIN'))->send(new JobFailed("ProcessUniqueCode", ['message' => $exception->getMessage(), 'trace' => $exception->getTraceAsString()]));
|
||
|
|
}
|
||
|
|
}
|