feat(webstatement): tambahkan fitur pemrosesan data sektor dan parameter pada migrasi harian

- Menambahkan opsi baru `--process_parameter` pada command `webstatement:process-daily-migration`.
  - Memungkinkan pengguna untuk menentukan parameter proses migrasi seperti tanggal (`date`) dan tipe (`type`).
  - Menambahkan logging tambahan untuk mencatat nilai parameter yang diproviding pengguna.
- Memperbarui logika command dan controller:
  - Mengirimkan parameter `date` dan `type` ke controller untuk mendukung proses migrasi dengan parameter yang lebih spesifik.
- Menambahkan proses migrasi baru untuk data sektor:
  - Membuat job `ProcessSectorDataJob` yang bertugas membaca file CSV terkait sektor dari SFTP.
  - Melakukan validasi keberadaan file, memproses tiap baris data, dan menyimpannya ke database jika valid.
  - Logging untuk setiap aktivitas proses sektor, termasuk error dan kesuksesan per baris.
- Membuat model `Sector` untuk mendukung operasi database data sektor:
  - Menambah atribut dapat diolah (`fillable`) seperti `sector_code`, `co_code`, `description`, dll.
  - Menambahkan cast `date_time` ke tipe datetime.
- Menambahkan migrasi baru untuk tabel `sectors`:
  - Tabel memiliki kolom seperti `id`, `date_time`, `description`, `curr_no`, `co_code`, dan `sector_code`.
  - Meningkatkan pendukung penyimpanan data sektor untuk migrasi masa depan.

Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
This commit is contained in:
Daeng Deni Mardaeni
2025-06-03 11:58:16 +07:00
parent 6b8f44db1d
commit cc99883875
5 changed files with 242 additions and 6 deletions

View File

@@ -13,7 +13,8 @@
*
* @var string
*/
protected $signature = 'webstatement:process-daily-migration';
protected $signature = 'webstatement:process-daily-migration
{--process_parameter= : To process migration parameter true/false}';
/**
* The console command description.
@@ -29,11 +30,19 @@
*/
public function handle()
{
$date = $this->option('date');
$type = $this->option('type');
$this->info('Starting daily data migration process...');
$this->info('Date: ' . ($date ?? 'Not specified'));
$this->info('Type: ' . ($type ?? 'Not specified'));
try {
$controller = app(MigrasiController::class);
$response = $controller->index();
$response = $controller->index([
'date' => $date,
'type' => $type
]);
$responseData = json_decode($response->getContent(), true);
$this->info($responseData['message'] ?? 'Process completed');