diff --git a/Modules/Client/Http/Controllers/Api/ClaimRequestController.php b/Modules/Client/Http/Controllers/Api/ClaimRequestController.php index 3a4d5abf..2ecbb999 100644 --- a/Modules/Client/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Client/Http/Controllers/Api/ClaimRequestController.php @@ -51,86 +51,133 @@ class ClaimRequestController extends Controller $code = $this->getNextCode(); $member = Member::find($member_id); - $newClaimRequest = ClaimRequestService::storeClaimRequest( - row: [], - code: $code, - member: $member, - paymentType: 'reimbursement', - serviceCode: $request->service_code[$key], - ); - ClaimRequested::dispatch($newClaimRequest); - // Log History - $newClaimRequest->histories()->create([ - 'title' => 'New Claim Requested', - 'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})", - 'type' => 'info', - 'system_origin' => 'client-portal' - ]); + DB::beginTransaction(); - // Claim Log - DB::table('claim_logs') - ->insert([ - 'claim_request_id' => $newClaimRequest->id, - 'status' => 'requested', - 'date' => date('Y-m-d H:i:s'), - 'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})", - 'system_origin' => 'hospital-portal', - 'created_by' => auth()->user()->id, - 'created_at' => date('Y-m-d H:i:s'), - 'updated_at'=> date('Y-m-d H:i:s'), - ]); + try { + $newClaimRequest = ClaimRequestService::storeClaimRequest( + row: [], + code: $code, + member: $member, + paymentType: 'reimbursement', + serviceCode: $request->service_code[$key], + ); - if ($request->hasFile('laboratorium')) { - foreach ($request->laboratorium[$key] as $file) { - $pathFile = File::storeFile('claim-result', $newClaimRequest->id, $file); - $newClaimRequest->files()->updateOrCreate([ - 'type' => 'claim-result', - 'name' => File::getFileName('claim-result', $newClaimRequest->id, $file), - 'original_name' => $file->getClientOriginalName(), - 'extension' => $file->getClientOriginalExtension(), - 'path' => $pathFile, - 'created_by' => auth()->user()->id, - 'updated_by' => auth()->user()->id, - ]); + ClaimRequested::dispatch($newClaimRequest); + + // Log History + $newClaimRequest->histories()->create([ + 'title' => 'New Claim Requested', + 'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})", + 'type' => 'info', + 'system_origin' => 'client-portal' + ]); + + // Claim Log + DB::table('claim_logs') + ->insert([ + 'claim_request_id' => $newClaimRequest->id, + 'status' => 'requested', + 'date' => date('Y-m-d H:i:s'), + 'description' => "Claim Requested for Member : {$member->member_id} - ({$member->full_name})", + 'system_origin' => 'hospital-portal', + 'created_by' => auth()->user()->id, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at'=> date('Y-m-d H:i:s'), + ]); + + $storage_path = storage_path() . "/app/public"; + $folder = "claim/"; + + if (is_dir($storage_path . "/" . $folder) == false) { + mkdir($storage_path . "/" . $folder, 0770, true); } + + if (isset($_FILES['laboratorium'])) { + foreach ($_FILES['laboratorium']['error']["member_" .$member_id] as $key => $value) { + if ($value == 0) { + $new_file_name = "claim-result-" . time() . "-" . uniqid(); + $ekstension = "." . explode("/", $_FILES['laboratorium']['type']["member_" .$member_id][$key])[1]; + $pathFile = $folder . $new_file_name . $ekstension; + + $tmp_name = $_FILES['laboratorium']['tmp_name']["member_" .$member_id][$key]; + $full_path = $_FILES['laboratorium']['full_path']["member_" .$member_id][$key]; + + if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) { + $newClaimRequest->files()->updateOrCreate([ + 'type' => 'claim-result', + 'name' => $new_file_name, + 'original_name' => $full_path, + 'extension' => $ekstension, + 'path' => $pathFile, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id, + ]); + } + } + } + } + + if (isset($_FILES['prescription'])) { + foreach ($_FILES['prescription']['error']["member_" .$member_id] as $key => $value) { + if ($value == 0) { + $new_file_name = "claim-diagnosis-" . time() . "-" . uniqid(); + $ekstension = "." . explode("/", $_FILES['prescription']['type']["member_" .$member_id][$key])[1]; + $pathFile = $folder . $new_file_name . $ekstension; + + $tmp_name = $_FILES['prescription']['tmp_name']["member_" .$member_id][$key]; + $full_path = $_FILES['prescription']['full_path']["member_" .$member_id][$key]; + + if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) { + $newClaimRequest->files()->updateOrCreate([ + 'type' => 'claim-diagnosis', + 'name' => $new_file_name, + 'original_name' => $full_path, + 'extension' => $ekstension, + 'path' => $pathFile, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id, + ]); + } + } + } + } + + if (isset($_FILES['invoice'])) { + foreach ($_FILES['invoice']['error']["member_" .$member_id] as $key => $value) { + if ($value == 0) { + $new_file_name = "claim-kondisi-" . time() . "-" . uniqid(); + $ekstension = "." . explode("/", $_FILES['invoice']['type']["member_" .$member_id][$key])[1]; + $pathFile = $folder . $new_file_name . $ekstension; + + $tmp_name = $_FILES['invoice']['tmp_name']["member_" .$member_id][$key]; + $full_path = $_FILES['invoice']['full_path']["member_" .$member_id][$key]; + + if (move_uploaded_file($tmp_name, $storage_path . "/" . $pathFile)) { + $newClaimRequest->files()->updateOrCreate([ + 'type' => 'claim-kondisi', + 'name' => $new_file_name, + 'original_name' => $full_path, + 'extension' => $ekstension, + 'path' => $pathFile, + 'created_by' => auth()->user()->id, + 'updated_by' => auth()->user()->id, + ]); + } + } + } + } + + DB::commit(); } + catch (\Throwable $th) { + DB::rollBack(); - if ($request->hasFile('prescription')) { - foreach ($request->prescription[$key] as $file) { - $pathFile = File::storeFile('claim-diagnosis', $newClaimRequest->id, $file); - $newClaimRequest->files()->updateOrCreate([ - 'type' => 'claim-diagnosis', - 'name' => File::getFileName('claim-diagnosis', $newClaimRequest->id, $file), - 'original_name' => $file->getClientOriginalName(), - 'extension' => $file->getClientOriginalExtension(), - 'path' => $pathFile, - 'created_by' => auth()->user()->id, - 'updated_by' => auth()->user()->id, - ]); - } - } - - if ($request->hasFile('invoice')) { - foreach ($request->invoice[$key] as $file) { - $pathFile = File::storeFile('claim-kondisi', $newClaimRequest->id, $file); - $newClaimRequest->files()->updateOrCreate([ - 'type' => 'claim-kondisi', - 'name' => File::getFileName('claim-kondisi', $newClaimRequest->id, $file), - 'original_name' => $file->getClientOriginalName(), - 'extension' => $file->getClientOriginalExtension(), - 'path' => $pathFile, - 'created_by' => auth()->user()->id, - 'updated_by' => auth()->user()->id, - ]); - } + return Helper::responseJson(status: 'failed', statusCode: 500, message: $th->getMessage()); } } } - - - return Helper::responseJson(data: $request->toArray(), message: 'Claim Request berhasil ajukan!'); } diff --git a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php index 30ea2c69..1d9018fb 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php @@ -66,6 +66,11 @@ class ClaimRequestController extends Controller return view('internal::create'); } + /** + * Create New Calim Request + * + * Bagaskoro, BSD 03 November 2023 + */ public function createNew(Request $request) { $request->validate([ @@ -114,11 +119,15 @@ class ClaimRequestController extends Controller ]); $storage_path = storage_path() . "/app/public"; + $folder = "claim/"; + + if (is_dir($storage_path . "/" . $folder) == false) { + mkdir($storage_path . "/" . $folder, 0770, true); + } if (isset($_FILES['file_penunjang'])) { foreach ($_FILES['file_penunjang']['error']["member_" .$member_id] as $key => $value) { if ($value == 0) { - $folder = "claim/"; $new_file_name = "claim-result-" . time() . "-" . uniqid(); $ekstension = "." . explode("/", $_FILES['file_penunjang']['type']["member_" .$member_id][$key])[1]; $pathFile = $folder . $new_file_name . $ekstension; @@ -144,7 +153,6 @@ class ClaimRequestController extends Controller if (isset($_FILES['file_diagnosa'])) { foreach ($_FILES['file_diagnosa']['error']["member_" .$member_id] as $key => $value) { if ($value == 0) { - $folder = "claim/"; $new_file_name = "claim-diagnosis-" . time() . "-" . uniqid(); $ekstension = "." . explode("/", $_FILES['file_diagnosa']['type']["member_" .$member_id][$key])[1]; $pathFile = $folder . $new_file_name . $ekstension; @@ -170,7 +178,6 @@ class ClaimRequestController extends Controller if (isset($_FILES['file_kondisi'])) { foreach ($_FILES['file_kondisi']['error']["member_" .$member_id] as $key => $value) { if ($value == 0) { - $folder = "claim/"; $new_file_name = "claim-kondisi-" . time() . "-" . uniqid(); $ekstension = "." . explode("/", $_FILES['file_kondisi']['type']["member_" .$member_id][$key])[1]; $pathFile = $folder . $new_file_name . $ekstension; diff --git a/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx b/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx index 6ec1bd87..a11e85d7 100644 --- a/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx +++ b/frontend/client-portal/src/pages/ClaimSubmit/DialogDetailClaim.tsx @@ -218,15 +218,15 @@ const DialogDetailClaim = ({ title, openDialog, setOpenDialog, data }: MuiDialog formData.append(`service_code[${index}]`, claim.typePatient); claim.laboratoryResult.forEach((file, fileIndex) => { - formData.append(`laboratorium[${index}][${fileIndex}]`, file); + formData.append(`laboratorium[member_${claim.id}][${fileIndex}]`, file); }); claim.anotherDocument.forEach((file, fileIndex) => { - formData.append(`prescription[${index}][${fileIndex}]`, file); + formData.append(`prescription[member_${claim.id}][${fileIndex}]`, file); }); claim.fileRealInvoice.forEach((file, fileIndex) => { - formData.append(`invoice[${index}][${fileIndex}]`, file); + formData.append(`invoice[member_${claim.id}][${fileIndex}]`, file); }); });