penjagaan limit realtime

This commit is contained in:
2024-06-25 13:29:40 +07:00
parent 150216fb87
commit 13d54063e4
6 changed files with 139 additions and 10 deletions

View File

@@ -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 [];
}
}