feat(shoraka): defer gadai persistence until commodity confirmation and add simulation support

This commit is contained in:
2026-10-19 13:02:13 +08:00
parent d0f08545d1
commit a8888e66d1
12 changed files with 429 additions and 30 deletions
+9 -3
View File
@@ -48,7 +48,7 @@ class ShorakaController extends Controller
try {
// The unique norujukan index is the atomic claim for concurrent submissions.
$transaction = ShorakaTransaction::create([
$attributes = [
'norujukan' => $validated['norujukan'],
'kodcaw' => $request->attributes->get('shoraka_kodcaw'),
'status' => 'PENDING',
@@ -58,9 +58,15 @@ class ShorakaController extends Controller
'ownership_doc_no' => $payload['ownership_doc_no'],
'order_amount' => $payload['order_amount'],
'murabaha_amount' => $payload['murabaha_amount'],
'request_payload' => $payload,
'request_payload' => $request->attributes->get('shoraka_new')
? array_merge($payload, ['_new_gadai' => true]) : $payload,
'attempt_count' => 1,
]);
];
$create = function () use ($attributes) { return ShorakaTransaction::create($attributes); };
$transaction = $request->attributes->get('shoraka_new')
? app(\App\Services\ShorakaNewGadaiService::class)->claim(
$request->attributes->get('shoraka_kodcaw'), $validated['norujukan'], $payload, $create
) : $create();
} catch (QueryException $exception) {
$existing = ShorakaTransaction::where('norujukan', $validated['norujukan'])->first();
if ($existing) {