From eab14ff1e11b5142f72090458c3fc974a218b084 Mon Sep 17 00:00:00 2001 From: daengdeni Date: Thu, 22 May 2025 11:55:32 +0700 Subject: [PATCH] feat(webstatement): support batch processing for export statement jobs - Ubah data menjadi array untuk memungkinkan pemrosesan batch. - Tambahkan loop untuk memproses setiap data entry dan mendispatch job secara individual. - Simpan job id dari setiap job yang didispatch ke array `jobIds`. - Update respons JSON untuk mencantumkan daftar job yang telah didispatch: - Tambahkan informasi `job_id`, `account_number`, `period`, dan `file_name` untuk setiap job. - Memperbaiki pesan respons agar sesuai dengan perubahan proses yang mendukung banyak job. --- .../Controllers/WebstatementController.php | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/WebstatementController.php b/app/Http/Controllers/WebstatementController.php index c0eb342..b102d83 100644 --- a/app/Http/Controllers/WebstatementController.php +++ b/app/Http/Controllers/WebstatementController.php @@ -21,18 +21,39 @@ */ public function index() { - $account_number = '1080425781'; - $period = '20250512'; - $saldo = '23984352604'; + $data = [[ + 'account_number' => '1080425781', + 'period' => '2025012', + 'saldo' => '23984352604' + ],[ + 'account_number' => '1080425781', + 'period' => '2025013', + 'saldo' => '13984352604' + ]]; - // Dispatch the job to export the statement - ExportStatementJob::dispatch($account_number, $period, $saldo); + $jobIds = []; + + // Process each data entry + foreach ($data as $entry) { + // Dispatch job for each entry + $job = new ExportStatementJob( + $entry['account_number'], + $entry['period'], + $entry['saldo'] + ); + $jobIds[] = app(Dispatcher::class)->dispatch($job); + } return response()->json([ - 'message' => 'Statement export job has been queued', - 'account_number' => $account_number, - 'period' => $period, - 'file_name' => "{$account_number}_{$period}.csv" + 'message' => 'Statement export jobs have been queued', + 'jobs' => array_map(function($index, $jobId) use ($data) { + return [ + 'job_id' => $jobId, + 'account_number' => $data[$index]['account_number'], + 'period' => $data[$index]['period'], + 'file_name' => "{$data[$index]['account_number']}_{$data[$index]['period']}.csv" + ]; + }, array_keys($jobIds), $jobIds) ]); }