[WIP] Update Claim

This commit is contained in:
R
2023-03-06 02:10:08 +07:00
parent 91ba718a50
commit 35119ee8ec
18 changed files with 1066 additions and 18 deletions

View File

@@ -2,6 +2,7 @@
namespace Modules\Internal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\Benefit;
use App\Models\Claim;
use App\Models\Icd;
@@ -10,6 +11,7 @@ use App\Services\ClaimService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Modules\Internal\Transformers\ClaimShowResource;
class ClaimController extends Controller
{
@@ -87,13 +89,21 @@ class ClaimController extends Controller
->with([
'member',
'member.currentPlan',
'member.currentPlan.benefits',
'member.currentCorporate',
'member.currentPolicy',
'diagnosis',
'diagnoses',
'benefit',
'files'
'files',
'claimRequest',
'claimRequest.files',
'items',
'items.claim_itemable'
])
->findOrFail($id);
return response()->json($claim);
return Helper::responseJson(ClaimShowResource::make($claim));
}
/**
@@ -131,4 +141,92 @@ class ClaimController extends Controller
{
return true;
}
public function updateItems(Request $request, $id)
{
$request->validate([]);
$claim = Claim::findOrFail($id);
$order = 1;
$data = [];
$claim->items()->forceDelete();
foreach ($request->benefit_items as $benefitItem) {
$benefit = Benefit::find($benefitItem['id']);
if ($benefit) {
$benefit->claimItem()->create([
'claim_id' => $claim->id,
'order' => $order,
'name' => $benefit->code,
'currency' => 'IDR',
'nominal_ditagihkan' => $benefitItem['biaya_diajukan'] ?? 0,
'nominal_dicover' => $benefitItem['biaya_disetujui'] ?? 0,
'nominal_total' => $benefitItem['biaya_disetujui'] ?? 0,
]);
}
$order++;
}
return Helper::responseJson([], message: "Item Claim berhasil di update");
}
public function updateDiagnosis(Request $request, $id)
{
$request->validate([]);
$claim = Claim::findOrFail($id);
$claim->diagnoses()->forceDelete();
if ($request->primary) {
foreach ($request->primary as $diagnosisId) {
$claim->diagnoses()->create([
'claim_id' => $claim->id,
'type' => 'primary',
'diagnosis_id' => $diagnosisId,
'note' => '',
'description' => '',
]);
}
}
if ($request->secondary) {
foreach ($request->secondary as $diagnosisId) {
$claim->diagnoses()->create([
'claim_id' => $claim->id,
'type' => 'secondary',
'diagnosis_id' => $diagnosisId,
'note' => '',
'description' => '',
]);
}
}
return Helper::responseJson([], message: "Diagnosis berhasil di update");
}
public function decline($id)
{
$claim = Claim::findOrFail($id);
$claim->status = 'declined';
$claim->save();
return Helper::responseJson($claim, message: "Claim berhasil di decline");
}
public function approve($id)
{
$claim = Claim::findOrFail($id);
$claim->status = 'approved';
$claim->save();
return Helper::responseJson($claim, message: "Claim berhasil di approve");
}
public function reOpen($id)
{
$claim = Claim::findOrFail($id);
$claim->status = 'received';
$claim->save();
return Helper::responseJson($claim, message: "Claim berhasil di approve");
}
}

View File

@@ -4,12 +4,10 @@ namespace Modules\Internal\Http\Controllers\Api;
use App\Helpers\Helper;
use App\Models\ClaimRequest;
use App\Models\Member;
use Exception;
use App\Services\ClaimService;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Knp\Snappy\Pdf;
use Modules\Internal\Transformers\ClaimRequestResource;
use Modules\Internal\Transformers\ClaimRequestShowResource;
@@ -115,19 +113,31 @@ class ClaimRequestController extends Controller
$claimRequest = ClaimRequest::findOrFail($id);
$member = $claimRequest->member;
$claimRequest->status = 'approved';
$claimRequest->save();
// Store Generated Documents
$logContent = view('pdf.guaranted_leter', compact('member', 'claimRequest'));
$claimRequest->generatedDocuments()->create([
'type' => 'guarantee_letter',
'title' => 'Guarantee Letter for '. $member->full_name,
'document_type' => 'type',
'html_content' => $logContent,
'system_origin' => 'primecenter'
]);
try {
// Create New Claim
$newClaim = ClaimService::storeClaim(member: $member, status: 'received', claimRequest: $claimRequest);
// Update Claim Request Status & Link with Claim
$claimRequest->status = 'approved';
$claimRequest->claim_id = $newClaim->id;
$claimRequest->save();
// Store Generated Documents LOG
$logContent = view('pdf.guaranted_leter', compact('member', 'claimRequest'));
$claimRequest->generatedDocuments()->create([
'type' => 'guarantee_letter',
'title' => 'Guarantee Letter for '. $member->full_name,
'document_type' => 'type',
'html_content' => $logContent,
'system_origin' => 'primecenter'
]);
} catch (\Exception $e) {
}
return $claimRequest;
}
}

View File

@@ -0,0 +1,101 @@
<?php
namespace Modules\Internal\Http\Controllers\Api;
use App\Models\Icd;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
class OptionController extends Controller
{
/**
* Display a listing of the resource.
* @return Renderable
*/
public function index(Request $request)
{
$request->validate([
'type' => 'required',
'search' => 'required'
]);
switch ($request->type) {
case 'diagnosis':
$icds = Icd::query()
->where('code', 'LIKE', '%'.$request->search.'%')
->orWhere('name', 'LIKE', '%'.$request->search.'%')
->limit('10')
->get();
return $icds;
break;
default:
# code...
break;
}
return view('internal::index');
}
/**
* Show the form for creating a new resource.
* @return Renderable
*/
public function create()
{
return view('internal::create');
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Renderable
*/
public function store(Request $request)
{
//
}
/**
* Show the specified resource.
* @param int $id
* @return Renderable
*/
public function show($id)
{
return view('internal::show');
}
/**
* Show the form for editing the specified resource.
* @param int $id
* @return Renderable
*/
public function edit($id)
{
return view('internal::edit');
}
/**
* Update the specified resource in storage.
* @param Request $request
* @param int $id
* @return Renderable
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return Renderable
*/
public function destroy($id)
{
//
}
}