penjagaan limit realtime
This commit is contained in:
@@ -9,7 +9,9 @@ use Symfony\Component\HttpFoundation\Response;
|
||||
use PHPMailer\PHPMailer\PHPMailer;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use App\Models\Member;
|
||||
use App\Models\RequestLogBenefit;
|
||||
use App\Models\User;
|
||||
use App\Models\CorporatePolicy;
|
||||
use App\Models\Service;
|
||||
use App\Models\Icd;
|
||||
use DateTime;
|
||||
@@ -534,5 +536,64 @@ class Helper
|
||||
}
|
||||
}
|
||||
|
||||
public static function getLimitMember($corporateId, $id, $benefitData) {
|
||||
// Menghitung jumlah total approved dan mengkategorikan berdasarkan benefit_id
|
||||
$amountApprovedByBenefit = [];
|
||||
foreach($benefitData as $benefit) {
|
||||
if ($benefit['family_plan'] == 'S' || $benefit['family_plan'] == 'F'){ // Menghitung usage per family
|
||||
$memberFamilys = Helper::getMemberFamily($id);
|
||||
$usageLogs = RequestLogBenefit::query()
|
||||
->whereHas('requestLog', function ($query) use ($benefit, $memberFamilys) {
|
||||
$query->where('benefit_id', $benefit['id'])
|
||||
->whereIn('member_id', $memberFamilys);
|
||||
})
|
||||
->sum('amount_approved');
|
||||
|
||||
// Mengkategorikan sum berdasarkan benefit_id
|
||||
$amountApprovedByBenefit[$benefit['id']] = $usageLogs;
|
||||
} else { // Menghitung usage permember
|
||||
$usageLog = RequestLogBenefit::query()
|
||||
->whereHas('requestLog', function ($query) use ($benefit, $id) {
|
||||
$query->where('benefit_id', $benefit['id'])
|
||||
->where('member_id', $id);
|
||||
})
|
||||
->sum('amount_approved');
|
||||
|
||||
// Mengkategorikan sum berdasarkan benefit_id
|
||||
$amountApprovedByBenefit[$benefit['id']] = $usageLog;
|
||||
}
|
||||
}
|
||||
|
||||
return json_encode($amountApprovedByBenefit);
|
||||
|
||||
}
|
||||
|
||||
public static function getMemberFamily($memberId){
|
||||
// Mengambil data member berdasarkan ID
|
||||
$member = Member::where('id', $memberId)->first();
|
||||
|
||||
// Memastikan member ditemukan
|
||||
if ($member) {
|
||||
// Mengambil keluarga berdasarkan member_id atau principal_id
|
||||
if (!$member->principal_id){
|
||||
$memberFamily = Member::where(function($query) use ($member) {
|
||||
$query->where('principal_id', $member->member_id)
|
||||
->orWhere('member_id', $member->member_id);
|
||||
})->pluck('id')->toArray();
|
||||
} else {
|
||||
$memberFamily = Member::where(function($query) use ($member) {
|
||||
$query->where('principal_id', $member->principal_id)
|
||||
->orWhere('member_id', $member->principal_id)
|
||||
->orWhere('member_id', $member->member_id);
|
||||
})->pluck('id')->toArray();
|
||||
}
|
||||
// Mengembalikan data keluarga
|
||||
return $memberFamily;
|
||||
}
|
||||
|
||||
// Jika member tidak ditemukan, mengembalikan array kosong
|
||||
return [];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user