[WIP] Cashless

This commit is contained in:
R
2023-01-11 14:29:02 +07:00
parent 804ac883fa
commit 552a2367f5
14 changed files with 1772 additions and 1037 deletions

View File

@@ -46,4 +46,15 @@ class ClaimController extends Controller
return Helper::responseJson($claim);
}
public function updateClaimDiagnosis(Request $request)
{
$request->validate([
'claim_code' => 'required',
'icd_codes' => 'required'
]);
// dd($request->toArray());
return $request->toArray();
}
}

View File

@@ -53,39 +53,43 @@ class MembershipController extends Controller
$limits = ClaimService::showMemberBenefitLimit($member, $benefitCode);
$limits['postponed_claims'] = $member->postponedClaims;
$limits['postponed_claims_payment_url'] = "http://google.com";
$limits['postponed_claims_payment_url'] = route('postpone-pay', $member->member_id);
$limits['postponed_claims_unpaid_total'] = $member->postponedClaims->sum('total_claim');
$corporateService = $member->currentCorporate
->corporateServices()
->active()
->where('service_code', 'OP')
->with([
'configs',
'specialities' => function ($speciality) use ($request) {
$speciality->where('code', $request->speciality_code)
->wherePivot('active', 1);
}])
->first();
$configs = $corporateService->configs->mapWithKeys(function ($config) {
return [$config->name => $config];
});
$coverage = [
'benefit' => false,
'admin_fee' => false,
'medicine_benefit' => true, // TODO Make this into setting ?
'medicine_delivery_fee' => false
];
$coverage['medicine_delivery_fee'] = (($configs['delivery_fee']['value'] ?? 1) == 1);
$coverage['gp_benefit'] = (($configs['gp_internal_doctor_online']['value'] ?? 1) == 1);
$coverage['gp_admin_fee'] = (($configs['general_practitioner_fee']['value'] ?? 1) == 1);
$coverage['sp_benefit'] = (($configs['sp_internal_doctor_online']['value'] ?? 1) == 1);
$coverage['sp_admin_fee'] = (($configs['specialist_practitioner_fee']['value'] ?? 1) == 1);
if ($request->has('speciality_code') && !empty($request->speciality_code)) {
$corporateService = $member->currentCorporate
->corporateServices()
->active()
->where('service_code', 'OP')
->with([
'specialities' => function ($speciality) use ($request) {
$speciality->where('code', $request->speciality_code)
->wherePivot('active', 1);
}])
->first();
// $rules = $corporateServiceConfigs->
// dd($corporateServiceConfigs->toArray());
if (empty($corporateService)) {
$limit['coverage'] = [
'benefit' => false,
'admin_fee' => false,
'delivery_fee' => false
];
return Helper::responseJson(data: $limits);
}
if (empty($corporateService->specialities)) {
$limit['coverage'] = [
'benefit' => false,
'admin_fee' => false,
'delivery_fee' => false
];
if (empty($corporateService) || empty($corporateService->specialities)) {
$coverage['benefit'] = false;
$coverage['admin_fee'] = false;
$limits['coverage'] = $coverage;
return Helper::responseJson(data: $limits);
}
@@ -94,8 +98,6 @@ class MembershipController extends Controller
// Load the Relation Data after speciality check is supported
$corporateService->load([
'configs',
// 'configs.exclusions.rules',
'corporateServiceSpecialities' => function ($corporateServiceSpeciality) use ($currentSpeciality) {
$corporateServiceSpeciality->where('speciality_id', $currentSpeciality->id);
},
@@ -105,10 +107,6 @@ class MembershipController extends Controller
'corporateServiceSpecialities.exclusions.rules'
]);
$configs = $corporateService->configs->mapWithKeys(function ($config) {
return [$config->name => $config];
});
$serviceSpeciality = $corporateService->corporateServiceSpecialities->first() ?? null;
$serviceSpecialityRules = $serviceSpeciality->exclusions->first()->rules ?? collect([]);
$serviceSpecialityRules = $serviceSpecialityRules->mapWithKeys(function ($rule) {
@@ -116,16 +114,6 @@ class MembershipController extends Controller
});
$gpSpecialityName = config('aso.general_practitioner_speciality_name', 'Umum');
// dd($serviceSpecialityRules->toArray());
$coverage = [
'benefit' => false,
'admin_fee' => false,
'delivery_fee' => false
];
// dd($configs->toArray());
// dd($gpSpecialityName, $currentSpeciality->name);
if ($gpSpecialityName == $currentSpeciality->name) {
// To General Practitioner
@@ -202,17 +190,9 @@ class MembershipController extends Controller
$coverage['benefit'] = true;
}
$limits['coverage'] = $coverage;
} else {
$limits['coverage'] = [
'benefit' => true,
'admin_fee' => true,
'delivery_fee' => true
];
}
$limits['coverage'] = $coverage;
return Helper::responseJson(data: $limits);
}

View File

@@ -0,0 +1,55 @@
<?php
namespace App\Http\Controllers\Api\OLDLMS;
use App\Http\Controllers\Controller;
use App\Models\Member;
use App\Services\Duitku;
use Illuminate\Http\Request;
use Str;
class PaymentController extends Controller
{
public function postponePay($memberId)
{
$member = Member::where('member_id', $memberId)->with('postponedClaims')->firstOrFail();
$totalBill = $member->postponedClaims->sum('total_claim');
$config_duitku = [
'merchant_code' => env('DUITKU_MERCHANT_CODE'),
'merchant_key' => env('DUITKU_MERCHANT_KEY'),
];
$paymentService = new Duitku($config_duitku);
$invoice = (object) [
'invoice_number' => 'INV'.Str::random(5, 5),
];
$user = (object) [
'email' => $member->email,
'phone' => $member->phone,
'name' => $member->name,
'last_name' => $member->last_name ?? '',
'address' => collect([
'line' => 'Alamat',
'city' => (object) [
'name' => 'Tangerang Selatan'
]
]),
'postal_code' => '124123',
];
$paymentCreate = (object) [
'transaction_id' => Str::random(10, 10)
];
$paymentMethod = (object) [
'code' => 'BC',
'timeout' => 60
];
$paymentService->applyInvoice($user, $invoice, $paymentCreate, $totalBill, $paymentMethod);
$duitkuPayment = $paymentService->createPayment();
return redirect($duitkuPayment->paymentUrl);
}
}