From 21fd3f1b99365fb545e1e5ffe29ce04f661e4d3a Mon Sep 17 00:00:00 2001 From: Daeng Deni Mardaeni Date: Tue, 8 Apr 2025 16:34:42 +0700 Subject: [PATCH] feat(account): perbarui logika pemrosesan data akun - Ganti penggunaan model TempAccount dengan Account. - Perbarui jalur file CSV yang digunakan untuk pemrosesan. - Tambahkan logika untuk mengatur nilai default untuk 'start_year_bal' dan 'closure_date'. - Gunakan firstOrNew untuk menyimpan data akun. --- app/Jobs/ProcessAccountDataJob.php | 37 ++++++++++++++++++++---------- app/Models/Account.php | 12 ++++++---- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/app/Jobs/ProcessAccountDataJob.php b/app/Jobs/ProcessAccountDataJob.php index 6fd7cde..f57f1d8 100644 --- a/app/Jobs/ProcessAccountDataJob.php +++ b/app/Jobs/ProcessAccountDataJob.php @@ -9,7 +9,7 @@ use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; use Log; - use Modules\Webstatement\Models\TempAccount; + use Modules\Webstatement\Models\Account; class ProcessAccountDataJob implements ShouldQueue { @@ -29,28 +29,41 @@ public function handle() : void { - $filePath = storage_path('app/20240901.ST.ACCOUNT.csv'); // Adjust this path as needed + $filePath = storage_path('app/20250207.ST.ACCOUNT.csv'); // Use Storage facade try { - if (!file_exists($filePath)) { - throw new Exception("File not found: $filePath"); - } - - set_time_limit(24 * 60 * 60); - if (!file_exists($filePath)) { throw new Exception("File not found: {$filePath}"); } - $handle = fopen($filePath, "r"); + set_time_limit(24 * 60 * 60); + $handle = fopen($filePath, "r"); if ($handle !== false) { - $headers = (new TempAccount())->getFillable(); - while (($row = fgetcsv($handle, 0, ";")) !== false) { + + // Use the header row to determine the order of columns + $headers = (new Account())->getFillable(); + Log::info('Headers: ' . implode(", ", $headers)); + $rowCount = 0; + while (($row = fgetcsv($handle, 0, "~")) !== false) { if (count($headers) === count($row)) { $data = array_combine($headers, $row); + // Check if start_year_bal is empty and set it to 0 if so + if (empty($data['start_year_bal']) || $data['start_year_bal'] ="" || $data['start_year_bal']== null) { + $data['start_year_bal'] = 0; + } + + if (empty($data['closure_date']) || $data['closure_date'] ="" || $data['closure_date']== null) { + $data['closure_date'] = null; + } + try { - TempAccount::updateOrCreate(['account_number' => $data['account_number']], $data); + // Use firstOrNew instead of updateOrCreate + $account = Account::firstOrNew(['account_number' => $data['account_number']]); + $account->fill($data); + $account->save(); + $rowCount++; + } catch (Exception $e) { Log::error('Error processing Account: ' . $e->getMessage()); } diff --git a/app/Models/Account.php b/app/Models/Account.php index 63f784f..2308d58 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -15,14 +15,18 @@ class Account extends Model */ protected $fillable = [ 'account_number', - 'customer_code', + 'customer_no', 'currency', 'opening_date', - 'branch_code', - 'product_category', + 'co_code', + 'open_category', + 'start_year_bal', + 'closure_date', + 'account_type', + 'stmt_email', + 'stmt_sent_type' ]; - // Relationships public function customer() {