[WIP] Cashless
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
55
app/Http/Controllers/Api/OLDLMS/PaymentController.php
Normal file
55
app/Http/Controllers/Api/OLDLMS/PaymentController.php
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user