diff --git a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php index da025cfc..fba5a303 100644 --- a/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/HospitalPortal/Http/Controllers/Api/ClaimRequestController.php @@ -5,9 +5,12 @@ namespace Modules\HospitalPortal\Http\Controllers\Api; use App\Helpers\Helper; use App\Models\ClaimRequest; use App\Models\File; +use App\Models\Member; +use Exception; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use PDF; class ClaimRequestController extends Controller { @@ -122,4 +125,21 @@ class ClaimRequestController extends Controller { // } + + public function generateLog($claim_request_id) + { + $claimRequest = ClaimRequest::findOrFail($claim_request_id); + + if ($claimRequest->status != 'approved') { + throw new Exception("Belum Teverifikasi", 1); + } + + $member = Member::findOrFail($claimRequest->member_id) + ->load(['currentPlan', 'currentPolicy', 'currentPlan.corporateBenefits', 'currentPlan.corporateBenefits.benefit']); + + $pdf = PDF::loadView('pdf.guaranted_leter', compact('member', 'claimRequest')); + return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf'); + + return $claimRequest; + } } diff --git a/Modules/HospitalPortal/Routes/api.php b/Modules/HospitalPortal/Routes/api.php index 73cb6912..fcc4cccf 100644 --- a/Modules/HospitalPortal/Routes/api.php +++ b/Modules/HospitalPortal/Routes/api.php @@ -38,5 +38,6 @@ Route::prefix('hospitalportal')->group(function () { Route::get('claim-requests', [ClaimRequestController::class, 'index'])->name('claim-requests.index'); Route::post('claim-requests', [ClaimRequestController::class, 'store'])->name('claim-requests.store'); + Route::get('claim-requests/{claim_request_id}/log', [ClaimRequestController::class, 'generateLog'])->name('claim-requests.generate-log'); }); }); diff --git a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php index 34cb4877..6ea96244 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php @@ -4,9 +4,12 @@ namespace Modules\Internal\Http\Controllers\Api; use App\Helpers\Helper; use App\Models\ClaimRequest; +use App\Models\Member; +use Exception; use Illuminate\Contracts\Support\Renderable; use Illuminate\Http\Request; use Illuminate\Routing\Controller; +use Knp\Snappy\Pdf; use Modules\Internal\Transformers\ClaimRequestResource; class ClaimRequestController extends Controller @@ -105,8 +108,6 @@ class ClaimRequestController extends Controller $claimRequest->status = 'approved'; $claimRequest->save(); - // Generate LOG - return $claimRequest; } } diff --git a/frontend/hospital-portal/src/sections/dashboard/TableList.tsx b/frontend/hospital-portal/src/sections/dashboard/TableList.tsx index 61a67a6a..a7daecb9 100755 --- a/frontend/hospital-portal/src/sections/dashboard/TableList.tsx +++ b/frontend/hospital-portal/src/sections/dashboard/TableList.tsx @@ -39,6 +39,7 @@ import { useSearchParams } from 'react-router-dom'; // import { UserCurrentCorporateContext } from '@/contexts/UserCurrentCorporate'; import { fSplit } from '@/utils/formatNumber'; import { Chip } from '@mui/material'; +import { enqueueSnackbar } from 'notistack'; /* ---------------------------------- types --------------------------------- */ type PaginationTableProps = { @@ -307,6 +308,26 @@ export default function TableList(props: any) { })(); }, [appliedParams, searchParams, order, orderBy, setSearchParams]); + // ----------------------------------------------------------------- + // Download LOG + function handleDownloadLog(claimRequest) { + axios.get(`claim-requests/${claimRequest.id}/log`, { + responseType: 'blob' + }) + .then((response) => { + window.open(URL.createObjectURL(response.data)); + // setLoadingLog(false); + }) + // .then((blobFile) => { + // new File([blobFile], 'asdads.pdf', { type: blobFile.type }) + // setLoadingLog(false); + // }) + .catch((response) => { + enqueueSnackbar(response.message, {variant: 'error'}) + // setLoadingLog(false); + }) + } + return ( @@ -395,7 +416,7 @@ export default function TableList(props: any) { {row.member?.full_name ?? ''} {row.submission_date} - {row.log_url ? ( + {row.status == 'approved' ? ( diff --git a/resources/views/pdf/guaranted_leter.blade.php b/resources/views/pdf/guaranted_leter.blade.php index 65f6bc73..f93a1fd5 100644 --- a/resources/views/pdf/guaranted_leter.blade.php +++ b/resources/views/pdf/guaranted_leter.blade.php @@ -124,7 +124,11 @@
Date of Admission
-
{{ !empty($member->endorsement_date) ? \Carbon\Carbon::parse($member->endorsement_date)->format('d/m/Y') : $member->created_at->format('d/m/Y') }}
+ @if (isset($claimRequest)) +
{{ !empty($claimRequest->submission_date) ? \Carbon\Carbon::parse($claimRequest->submission_date)->format('d/m/Y') : now()->format('d/m/Y') }}
+ @else +
{{ !empty($member->endorsement_date) ? \Carbon\Carbon::parse($member->endorsement_date)->format('d/m/Y') : $member->created_at->format('d/m/Y') }}
+ @endif
Plan
@@ -141,17 +145,17 @@ - + {{-- Medical Check Up As Charged - + --}} - {{-- @foreach ($member->currentPlan->corporateBenefits as $corporateBenefit) + @foreach ($member->currentPlan->corporateBenefits as $corporateBenefit) {{ $corporateBenefit->corporate_benefit_code ?? '' }} IDR {{ number_format($corporateBenefit->limit_amount, 0, ',', '.') ?? '' }} - @endforeach --}} + @endforeach