diff --git a/Modules/Internal/Http/Controllers/Api/ClaimController.php b/Modules/Internal/Http/Controllers/Api/ClaimController.php index 6ccc7f7f..1f7776ec 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimController.php @@ -322,29 +322,72 @@ class ClaimController extends Controller public function decline($id) { - $claim = Claim::findOrFail($id); - $claim->status = 'declined'; - $claim->save(); + DB::table('claims') + ->where('claim_request_id', $id) + ->update( + [ + 'status' => 'declined' + ] + ); - return Helper::responseJson($claim, message: "Claim berhasil di decline"); + // Claim Log + DB::table('claim_logs') + ->insert([ + 'claim_request_id' => $id, + 'status' => 'declined', + 'date' => date('Y-m-d H:i:s'), + 'description' => "Claim Requested Declined", + 'system_origin' => 'prime-center', + 'created_by' => auth()->user()->id, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at'=> date('Y-m-d H:i:s'), + ]); + + return Helper::responseJson([], message: "Claim berhasil di decline"); } public function approve($id) { - $claim = Claim::findOrFail($id); - $claim->status = 'approved'; - $claim->save(); + DB::table('claims') + ->where('claim_request_id', $id) + ->update( + [ + 'status' => 'approved' + ] + ); - return Helper::responseJson($claim, message: "Claim berhasil di approve"); + // Claim Log + DB::table('claim_logs') + ->insert([ + 'claim_request_id' => $id, + 'status' => 'approved', + 'date' => date('Y-m-d H:i:s'), + 'description' => "Claim Requested Successfully Approved", + 'system_origin' => 'prime-center', + 'created_by' => auth()->user()->id, + 'created_at' => date('Y-m-d H:i:s'), + 'updated_at'=> date('Y-m-d H:i:s'), + ]); + + return Helper::responseJson([], message: "Claim berhasil di approve"); } public function reOpen($id) { - $claim = Claim::findOrFail($id); - $claim->status = 'received'; - $claim->save(); + DB::table('claims') + ->where('claim_request_id', $id) + ->update( + [ + 'status' => 'received' + ] + ); - return Helper::responseJson($claim, message: "Claim berhasil di approve"); + // Claim Log + DB::table('claim_logs') + ->where('claim_request_id', $id) + ->delete(); + + return Helper::responseJson([], message: "Claim berhasil di re-open"); } public function downloadFinalLog($id) @@ -614,6 +657,13 @@ class ClaimController extends Controller $results['claim_service_benefits'] = null; } + $dialog_submits = DB::table('claim_requests') + ->leftJoin('members', 'claim_requests.member_id','=', 'members.id') + ->where('claim_requests.id', $claim_id) + ->select('claim_requests.code', 'members.name', 'claim_requests.submission_date', 'claim_requests.service_code','claim_requests.status') + ->first(); + $results['dialog_submits'] = $dialog_submits; + return Helper::responseJson($results); } diff --git a/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx b/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx index 85b17f2b..b069d15b 100644 --- a/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx +++ b/frontend/dashboard/src/pages/ClaimRequests/Detail.tsx @@ -240,7 +240,7 @@ export default function Detail() { {dataDialog && dataDialog.status === 'requested' ? ( <> - + ) : ''} @@ -288,7 +288,7 @@ export default function Detail() { ) : ''} - + diff --git a/frontend/dashboard/src/pages/Claims/Detail.tsx b/frontend/dashboard/src/pages/Claims/Detail.tsx index 8877f2dd..4abd43b5 100644 --- a/frontend/dashboard/src/pages/Claims/Detail.tsx +++ b/frontend/dashboard/src/pages/Claims/Detail.tsx @@ -61,6 +61,7 @@ export default function Detail() { const [requestDocumentData, setRequestDocumentData] = useState(null); const [serviceData, setServiceData] = useState(null); const [serviceBenefitData, setServiceBenefitData] = useState(null); + const [dataDialog, setDataDialog] = useState(null); const { id } = useParams(); @@ -73,6 +74,7 @@ export default function Detail() { setRequestDocumentData(response.data.data.request_documents); setServiceData(response.data.data.claim_services); setServiceBenefitData(response.data.data.claim_service_benefits); + setDataDialog(response.data.data.dialog_submits); }) .catch((error) => { console.error(error); @@ -258,6 +260,45 @@ export default function Detail() { }) } + const [openDialogSubmit, setOpenDialogSubmit] = useState(false); + const handleCloseDialogSubmit = () => { + setOpenDialogSubmit(false); + } + + const [decline, setDeclaine] = useState(''); + + const handleSubmitData = () => { + //approve or decline + axios + .post('claims/'+id+'/'+decline) + .then((response) => { + enqueueSnackbar('Success '+toTitleCase(decline)+' Claim Request', { variant: 'success' }); + setOpenDialogSubmit(false); + }) + .catch(({ response }) => { + enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' }); + }); + + setTimeout(() => + { + window.location.reload(); + }, 5000); + + }; + + const handelDownloadLog = () => { + axios + .get(`final-log/${id}`, { + responseType: 'blob', + }) + .then((response) => { + window.open(URL.createObjectURL(response.data)); + }) + .catch((response) => { + enqueueSnackbar(response.message, { variant: 'error' }); + }); + } + return ( @@ -679,9 +720,100 @@ export default function Detail() { <> - - + {(customerData && customerData.status === 'received') ? ( + <> + + + + ) : ( + <> + + + + ) } + + {/* Dialog Submits */} + + + + + Confirmation + + + + + + + + {dataDialog ? ( + + Are you sure to {toTitleCase(decline)} this claim ? + + + Code + {dataDialog.code} + + + Name + {dataDialog.name} + + + Date Submission + {fDateTime(dataDialog.submission_date)} + + + Claim Method + Service Type + + + Service Type + + {dataDialog.service_code === 'IP' ? 'Inpatient' : 'Outpatient'} + + + + + ) : ''} + + + + + +