- ExportCode Opti

This commit is contained in:
Vincent BRIDIER 2021-04-02 12:06:39 +02:00
parent a05c09b6d8
commit 8af6d1f459
3 changed files with 27 additions and 8 deletions

View file

@ -76,12 +76,23 @@ class ProcessExportCodesUniques implements ShouldQueue
Mail::to(config('mail.MAIL_ADMIN'))->send(new ExportCodesUniques(Settings::find(1)->name, $nbCodeFic, $nbCodeTot, $nbCodeLigne));
}
private function process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes){
// TODO : Tester avec plus de 1000 dans le take
$nbCodeToRetrieve = $nbCodeTot < 1000 ? $nbCodeTot : 1000;
$codes = Codes::where('code_exported', 0)->take($nbCodeToRetrieve)->get();
private function process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes, $lastExportedCodeId = null){
$paginate = config('code.paginate');
$nbCodeToRetrieve = $nbCodeTot < $paginate ? $nbCodeTot : $paginate;
if ($lastExportedCodeId === null) {
$codes = Codes::where('code_exported', 0)->take($nbCodeToRetrieve)->get();
}else{
$codes = Codes::where([
['code_exported', '=', 0],
['id', '>', $lastExportedCodeId]
])->take($nbCodeToRetrieve)->get();
}
$countCodes = count($codes);
$exportedCodesId = [];
foreach ($codes as $k => $code){
if ($currentExportedCodes < $nbCodeTot){
if ($currentLineCodes === ($nbCodeLigne === 1 ? 1 : $nbCodeLigne - 1)){
@ -95,14 +106,17 @@ class ProcessExportCodesUniques implements ShouldQueue
$currentExportedCodes++;
$currentLineCodes++;
}
$code->code_exported = 1;
$code->save();
array_push($exportedCodesId, $code->id);
$lastExportedCodeId = $code->id;
if ($currentExportedCodes === $nbCodeFic) {
$currentFilename++;
$currentExportedCodes = 0;
}
if ((($k + 1) === $countCodes) && $totalExportedCodes < $nbCodeTot){
return $this->process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes);
Codes::whereIn('id', $exportedCodesId)->update(['code_exported' => 1]);
return $this->process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes, $lastExportedCodeId);
}
}
}

View file

@ -6,7 +6,7 @@ use Illuminate\Database\Eloquent\Model;
class Codes extends Model
{
protected $fillable = ['code_unique', 'code_used', 'date_creation'];
protected $fillable = ['code_unique', 'code_used', 'code_exported', 'date_creation'];
public $timestamps = false;
public function participations() {

5
config/codes.php Normal file
View file

@ -0,0 +1,5 @@
<?php
return [
'paginate' => env('CODE_PAGINATE')
];