[WIP] Claims
This commit is contained in:
@@ -65,7 +65,7 @@ class ClaimController extends Controller
|
||||
|
||||
// Store Claim
|
||||
if ($validation['isEligible']) {
|
||||
$claim = ClaimService::storeClaim($member, $diagnosis, $request->total_claim, $benefit);
|
||||
$claim = ClaimService::storeClaim($member, $diagnosis, $request->total_claim, $benefit, 'requested');
|
||||
} else {
|
||||
return response()->json([
|
||||
'data' => $validation,
|
||||
@@ -83,7 +83,11 @@ class ClaimController extends Controller
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
return view('internal::show');
|
||||
$claim = Claim::query()
|
||||
->with(['member', 'member.currentPlan'])
|
||||
->findOrFail($id);
|
||||
|
||||
return response()->json($claim);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -120,7 +120,14 @@ class CorporateController extends Controller
|
||||
*/
|
||||
public function show($id)
|
||||
{
|
||||
return view('internal::show');
|
||||
$corporate = Corporate::query()
|
||||
->with(['currentPolicy'])
|
||||
->withCount('corporatePlans')
|
||||
->withCount('employees')
|
||||
// ->withCount('employees.claims')
|
||||
->findOrFail($id);
|
||||
|
||||
return response()->json($corporate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace Modules\Internal\Http\Controllers\Api;
|
||||
|
||||
use App\Exceptions\ImportRowException;
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Resources\MemberDataTableResource;
|
||||
use App\Models\Corporate;
|
||||
use App\Models\Member;
|
||||
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
|
||||
@@ -35,15 +37,18 @@ class CorporateMemberController extends Controller
|
||||
->with([
|
||||
'employeds',
|
||||
'currentPolicy',
|
||||
// 'claims',
|
||||
'claims' => function ($claim) {
|
||||
return $claim->used();
|
||||
return $claim->whereBetween('requested_at', [now()->startOfYear(), now()->endOfYear()]);
|
||||
// return $claim->used(now()->startOfYear(), now()->endOfYear());
|
||||
}
|
||||
])
|
||||
->with('currentPlan')
|
||||
// ->with
|
||||
->paginate()
|
||||
->appends($request->all());
|
||||
|
||||
return $members;
|
||||
return Helper::paginateResources(MemberDataTableResource::collection($members));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -100,6 +100,7 @@ Route::prefix('internal')->group(function () {
|
||||
|
||||
Route::get('claims', [ClaimController::class, 'index']);
|
||||
Route::post('claims', [ClaimController::class, 'store']);
|
||||
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||
Route::post('check-limit', [ClaimController::class, 'checkLimit']);
|
||||
|
||||
});
|
||||
|
||||
@@ -81,19 +81,24 @@ class ClaimService
|
||||
];
|
||||
}
|
||||
|
||||
public static function storeClaim($member, $diagnosis, $totalClaim, $benefit)
|
||||
public static function storeClaim($member, $diagnosis, $totalClaim, $benefit, $status)
|
||||
{
|
||||
try {
|
||||
DB::beginTransaction();
|
||||
|
||||
$claim = Claim::create([
|
||||
|
||||
$claimData = [
|
||||
'member_id' => $member->id,
|
||||
'diagnosis_id' => $diagnosis->id,
|
||||
'total_claim' => $totalClaim,
|
||||
'currency' => 'IDR',
|
||||
'plan_id' => $member->currentPlan->id,
|
||||
'benefit_id' => $benefit->id,
|
||||
]);
|
||||
'status' => $status
|
||||
];
|
||||
$claimData[$status.'_at'] = now();
|
||||
$claimData[$status.'_by'] = auth()->user()->id ?? null;
|
||||
|
||||
$claim = Claim::create($claimData);
|
||||
|
||||
$policy = $member->currentPolicy;
|
||||
$policy->limitJournals()->create([
|
||||
@@ -109,7 +114,7 @@ class ClaimService
|
||||
} catch (\Exception $error) {
|
||||
DB::rollBack();
|
||||
|
||||
return false;
|
||||
throw new \Exception($error);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user