From 2f1771d32e42b86f30495ccd5772adfe9a0b9d2b Mon Sep 17 00:00:00 2001 From: Vincent BRIDIER Date: Tue, 1 Dec 2020 17:25:16 +0100 Subject: [PATCH] - Add Command Export + TODO + Update migrations/2020_10_20_165858_create_codes.php --- app/Console/Commands/ExportCodesUniques.php | 102 ++++++++++++++++++ .../2020_10_20_165858_create_codes.php | 1 + storage/export_codes_uniques/.gitkeep | 0 storage/export_codes_uniques/tmp/.gitkeep | 0 4 files changed, 103 insertions(+) create mode 100644 app/Console/Commands/ExportCodesUniques.php create mode 100644 storage/export_codes_uniques/.gitkeep create mode 100644 storage/export_codes_uniques/tmp/.gitkeep diff --git a/app/Console/Commands/ExportCodesUniques.php b/app/Console/Commands/ExportCodesUniques.php new file mode 100644 index 0000000..2bb0bb2 --- /dev/null +++ b/app/Console/Commands/ExportCodesUniques.php @@ -0,0 +1,102 @@ +process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes); + + // TODO : Debug la création du ZIP + // compression des fichiers + $zip = new \ZipArchive(); + if ($zip->open(storage_path('export_codes_uniques') . "CodesUniques_". date('dmY') .".zip",\ZIPARCHIVE::CREATE)===TRUE) { + if ($handle = opendir(storage_path('export_codes_uniques/tmp'))) { + while (false !== ($file_to_zip = readdir($handle))) { + if (pathinfo($file_to_zip,PATHINFO_EXTENSION)!='csv') continue; + $zip->addFile(storage_path('export_codes_uniques') . $file_to_zip,"$file_to_zip"); + } + closedir($handle); + } + $zip->close(); + } + + // TODO : Vider le dossier storage_path('export_codes_uniques/tmp') + // TODO : Envoi de mail à MAIL_ADMIN avec le nom du ZIP "CodesUniques_". date('dmY') .".zip" + + return 0; + } + + private function process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes){ + // TODO : Tester avec plus de 1000 dans le take + $codes = Codes::where('code_exported', 0)->take(1000)->get(); + $countCodes = count($codes); + + foreach ($codes as $k => $code){ + if ($currentExportedCodes < $nbCodeTot){ + if ($currentLineCodes === ($nbCodeLigne === 1 ? 1 : $nbCodeLigne - 1)){ + file_put_contents(storage_path('export_codes_uniques/tmp') . $currentFilename . ".csv", $code->code_unique . PHP_EOL, FILE_APPEND); + $totalExportedCodes++; + $currentExportedCodes++; + $currentLineCodes = ($nbCodeLigne === 1 ? 1 : 0); + }else{ + file_put_contents(storage_path('export_codes_uniques/tmp') . $currentFilename . ".csv", $code->code_unique . ";", FILE_APPEND); + $totalExportedCodes++; + $currentExportedCodes++; + $currentLineCodes++; + } + $code->code_exported = 1; + $code->save(); + if ($currentExportedCodes === $nbCodeFic) { + $currentFilename++; + $currentExportedCodes = 0; + } + if ((($k + 1) === $countCodes) && $totalExportedCodes < $nbCodeTot){ + return $this->process($nbCodeFic, $nbCodeTot, $nbCodeLigne, $totalExportedCodes, $currentFilename, $currentExportedCodes, $currentLineCodes); + } + } + } + } +} diff --git a/database/migrations/2020_10_20_165858_create_codes.php b/database/migrations/2020_10_20_165858_create_codes.php index 9814487..88c1fc5 100644 --- a/database/migrations/2020_10_20_165858_create_codes.php +++ b/database/migrations/2020_10_20_165858_create_codes.php @@ -17,6 +17,7 @@ class CreateCodes extends Migration $table->id(); $table->string('code_unique'); $table->boolean('code_used')->default(0); + $table->boolean('code_exported')->default(0); $table->date('date_creation'); }); } diff --git a/storage/export_codes_uniques/.gitkeep b/storage/export_codes_uniques/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/storage/export_codes_uniques/tmp/.gitkeep b/storage/export_codes_uniques/tmp/.gitkeep new file mode 100644 index 0000000..e69de29