Commit Graph

9 Commits

Author SHA1 Message Date
Daeng Deni Mardaeni
13344959c4 fix(Webstatement): inisialisasi default untuk properti $period di semua Job
- Mengatur nilai default properti `$period` menjadi string kosong (`''`) di semua file Job terkait dalam modul `Webstatement`.
- File-file yang terpengaruh:
  1. `ProcessAccountDataJob.php`
  2. `ProcessArrangementDataJob.php`
  3. `ProcessAtmTransactionJob.php`
  4. `ProcessBillDetailDataJob.php`
  5. `ProcessCategoryDataJob.php`
  6. `ProcessCompanyDataJob.php`
  7. `ProcessCustomerDataJob.php`
  8. `ProcessDataCaptureDataJob.php`
  9. `ProcessFtTxnTypeConditionJob.php`
  10. `ProcessFundsTransferDataJob.php`
  11. `ProcessStmtEntryDataJob.php`
  12. `ProcessStmtNarrFormatDataJob.php`
  13. `ProcessStmtNarrParamDataJob.php`
  14. `ProcessTellerDataJob.php`
  15. `ProcessTransactionDataJob.php`
- Perubahan ini bertujuan untuk meningkatkan stabilitas dengan memastikan nilai awal dari properti telah terdefinisi untuk menghindari potensi `undefined property error`.
- Tidak ada perubahan logika lain di luar inisialisasi default nilai properti.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-27 03:58:24 +07:00
daengdeni
c6363473ac refactor(jobs): optimize job classes by adding modular methods and constants
- Menambahkan konstanta baru pada setiap job untuk meningkatkan keterbacaan:
  - `CSV_DELIMITER` untuk delimiter CSV.
  - `MAX_EXECUTION_TIME` untuk batas waktu eksekusi (86400 detik).
  - `FILENAME` untuk nama file masing-masing job.
  - `DISK_NAME` untuk disk yang digunakan.
- Mengubah `protected` menjadi `private` untuk properti seperti:
  - `$period`, `$processedCount`, dan `$errorCount` di semua job.
- Memindahkan logika proses menjadi metode modular untuk meningkatkan modularitas:
  - Metode `initializeJob` untuk inisialisasi counter.
  - Metode `processPeriod` untuk menangani file dan memulai proses.
  - Metode `validateFile` untuk validasi keberadaan file.
  - Metode `createTemporaryFile` untuk menyalin file sementara.
  - Metode `processFile` untuk membaca isi file CSV dan memproses.
  - Metode `processRow`/`mapAndSaveRecord`/`saveRecord` untuk pemrosesan dan penyimpanan data.
  - Metode `cleanup` untuk menghapus file sementara.
  - Metode `logJobCompletion` untuk logging hasil akhir.
- Menerapkan pengolahan file dengan sistem logging terperinci:
  - Logging row dengan kolom tidak sesuai akan menghasilkan peringatan.
  - Mencatat jumlah record berhasil diproses serta error.

Refaktor ini bertujuan untuk meningkatkan kualitas kode melalui modularisasi, keterbacaan, dan kemudahan pengujian ulang di seluruh kelas job.
2025-05-26 15:26:43 +07:00
Daeng Deni Mardaeni
6a7a3418b7 fix(webstatement): perbaiki logika kondisi periode kosong di job processing
- Memperbaiki kondisi pengecekan `$this->period` yang salah (ekstra tanda kurung) pada beberapa job processing, seperti:
  1. `ProcessAtmTransactionJob`
  2. `ProcessBillDetailDataJob`
  3. `ProcessCategoryDataJob`
  4. `ProcessCompanyDataJob`
  5. `ProcessCustomerDataJob`
  6. `ProcessDataCaptureDataJob`
  7. `ProcessFundsTransferDataJob`
  8. `ProcessStmtEntryDataJob`
  9. `ProcessTellerDataJob`
- Menambahkan kejelasan logging untuk kasus ketika periode tidak disediakan (`period === ''`).
- Menghapus kode komentar tidak terpakai di `ProcessFtTxnTypeConditionJob`.

Perubahan ini memastikan bahwa logika untuk kondisi periode kosong berjalan dengan benar dan menghindari potensi error di runtime.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-26 09:12:17 +07:00
Daeng Deni Mardaeni
8abb8f6901 fix(webstatement): perbaikan pengecekan variabel periode dalam processing data
Memperbaiki pengecekan variabel `$this->period` dari `empty()` menjadi `=== ''` pada berbagai job dalam modul Webstatement untuk memastikan logika validasi berfungsi dengan baik dan lebih eksplisit.

- Job yang diperbaiki:
  - `ProcessAccountDataJob`
  - `ProcessArrangementDataJob`
  - `ProcessAtmTransactionJob`
  - `ProcessBillDetailDataJob`
  - `ProcessCategoryDataJob`
  - `ProcessCompanyDataJob`
  - `ProcessCustomerDataJob`
  - `ProcessDataCaptureDataJob`
  - `ProcessFundsTransferDataJob`
  - `ProcessStmtEntryDataJob`
  - `ProcessTellerDataJob`

- Memastikan validasi terhadap variabel `$this->period` hanya memfokuskan pada apakah nilainya adalah string kosong (`''`).
- Menambahkan kejelasan pada logging apabila periode tidak tersedia pada setiap job.
- Perubahan ini bertujuan untuk menghindari potensi false negative pada pengecekan kondisi `empty()` yang dapat menyebabkan logika tidak berjalan sebagaimana mestinya.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-26 09:05:53 +07:00
Daeng Deni Mardaeni
38987ce8e3 refactor(webstatement): remove _parameter folder skipping logic from processing jobs
- Menghapus logika pengecekan dan pengabaian folder `_parameter` di seluruh job pemrosesan data berikut:
  - `ProcessAccountDataJob`
  - `ProcessAtmTransactionJob`
  - `ProcessBillDetailDataJob`
  - `ProcessCategoryDataJob`
  - `ProcessCompanyDataJob`
  - `ProcessCustomerDataJob`
  - `ProcessDataCaptureDataJob`
  - `ProcessFundsTransferDataJob`
  - `ProcessStmtEntryDataJob`
  - `ProcessTellerDataJob`
- Menghapus konstanta `PARAMETER_FOLDER` yang terkait dengan folder `_parameter` pada beberapa job.
- Membersihkan code redundancy yang tidak relevan untuk meningkatkan keterbacaan dan efisiensi.
- Logika ini dianggap tidak diperlukan lagi dalam proses pemrosesan data.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-24 19:43:54 +07:00
Daeng Deni Mardaeni
cd447eb019 refactor(jobs): simplify jobs and controllers by replacing period array with single period parameter
- Mengganti parameter `$periods` (array) menjadi `$period` (string) pada semua Job terkait: `ProcessCustomerDataJob`, `ProcessFundsTransferDataJob, etc`.
- Menyederhanakan operasi loop dalam proses data dengan hanya memproses satu periode per eksekusi Job.
- Memodifikasi fungsi controller di `MigrasiController` agar sesuai dengan perubahan parameter dari array ke string.
- Menambahkan pengamanan jika `$period` kosong atau bernilai '_parameter' untuk mencegah proses yang tidak diperlukan.
- Mengurangi duplikasi kode dengan mengeliminasi metode yang mengelola array periode dan menggantinya dengan pendekatan tunggal.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-24 19:40:40 +07:00
Daeng Deni Mardaeni
c442b27dad feat(webstatement): optimalkan proses migrasi data SFTP
- Menambahkan parameter `$periods` untuk mendukung proses dinamis berdasarkan folder periode dalam SFTP.
- Memperkenalkan penggunaan `Storage::disk('sftpStatement')` untuk membaca file dari SFTP.
- Menyortir folder periode secara menurun berdasarkan tanggal.
- Memproses tiap entitas data (Customer, Account, Arrangement, Bill Details, dll.) berdasarkan file dalam folder periode.
- Menambah log untuk mencatat jumlah proses yang berhasil, baris error, dan peringatan tentang ketidaksesuaian jumlah kolom.
- Menyisipkan mekanisme untuk mengabaikan folder `_parameter`.
- Mengubah pendekatan dari membaca file lokal menjadi menggunakan file sementara (temp).
- Memperbaiki bug pada metode yang sebelumnya menggunakan jalur file statis.
- Memastikan penanganan file CSV yang lebih fleksibel, termasuk kasus di mana jumlah kolom dalam baris melebihi ekspektasi.
- Menambah error handling untuk mencatat baris-baris bermasalah dan menghindari interupsi proses.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
2025-05-20 16:44:59 +07:00
Daeng Deni Mardaeni
79c4aa1d39 feat(job): perbarui logika pemrosesan data customer
- Ganti model dari TempCustomer ke Customer untuk pemrosesan data.
- Perbarui jalur file CSV yang digunakan untuk pemrosesan.
- Tambahkan penanganan kesalahan untuk mencatat kesalahan saat memproses customer.
2025-04-08 18:56:57 +07:00
Daeng Deni Mardaeni
99d9f6cce1 feat(jobs): tambahkan job untuk memproses data pelanggan
- Menambahkan kelas ProcessCustomerDataJob untuk memproses file CSV cusromer.
- Menggunakan metode updateOrCreate untuk menyimpan atau memperbarui data customer.
- Menangani pengecualian jika file tidak ditemukan atau tidak dapat dibuka.
- Mengatur batas waktu eksekusi job menjadi 24 jam.
2025-02-18 16:36:20 +07:00