From 904566b9f936e7ca8ff2a53762f81f5e251c8ab4 Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Wed, 29 Jan 2025 19:42:42 +0700 Subject: [PATCH] feat(jobs): tambahkan job untuk memproses data transfer dana - Menambahkan kelas ProcessFundsTransferDataJob untuk memproses file CSV transfer dana. - Membuat migrasi untuk tabel temp_funds_transfer dengan berbagai field yang diperlukan. - Menangani kesalahan saat membaca file dan mencatat kesalahan ke log. --- app/Jobs/ProcessFundsTransferDataJob.php | 71 +++++++++++++++++++ app/Models/TempFundsTransfer.php | 23 ++++++ ...045008_create_temp_funds_transer_table.php | 35 +++++++++ 3 files changed, 129 insertions(+) create mode 100644 app/Jobs/ProcessFundsTransferDataJob.php create mode 100644 app/Models/TempFundsTransfer.php create mode 100644 database/migrations/2025_01_28_045008_create_temp_funds_transer_table.php diff --git a/app/Jobs/ProcessFundsTransferDataJob.php b/app/Jobs/ProcessFundsTransferDataJob.php new file mode 100644 index 0000000..8429dfe --- /dev/null +++ b/app/Jobs/ProcessFundsTransferDataJob.php @@ -0,0 +1,71 @@ +getFillable(); + while (($row = fgetcsv($handle, 0, "~")) !== false) { + if (count($row) > count($headers)) { + $row = array_slice($row, 0, count($headers)); + } + if (count($headers) === count($row)) { + $data = array_combine($headers, $row); + + try { + TempFundsTransfer::updateOrCreate(['_id' => $data['_id']], $data); + } catch (Exception $e) { + Log::error('Error processing funds transfer: ' . $e->getMessage()); + } + } + } + fclose($handle); + } else { + throw new Exception("Unable to open file: {$filePath}"); + } + } catch (Exception $e) { + Log::error('Error in ProcessFundsTransferDataJob: ' . $e->getMessage()); + throw $e; + } + } + } diff --git a/app/Models/TempFundsTransfer.php b/app/Models/TempFundsTransfer.php new file mode 100644 index 0000000..258402e --- /dev/null +++ b/app/Models/TempFundsTransfer.php @@ -0,0 +1,23 @@ +id(); + foreach ($fieldsArray as $field) { + $field = trim($field); + $table->string($field)->nullable(); + } + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('temp_funds_transfer'); + } +};