update
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,138 @@ class Helper
|
||||
}
|
||||
}
|
||||
|
||||
public static function getUsageMember($corporateId, $id, $benefitData) {
|
||||
// Menghitung jumlah total approved dan mengkategorikan berdasarkan benefit_id
|
||||
$amountApprovedByBenefit = [];
|
||||
foreach($benefitData as $benefit) {
|
||||
if ($benefit['limit_amount'] != 999999999 || $benefit['limit_amount_plan'] != 999999999) {
|
||||
if ($benefit['family_plan'] == 'S' || $benefit['family_plan'] == 'F'){ // Menghitung usage per family
|
||||
$memberFamilys = Helper::getMemberFamily($id);
|
||||
$usageLogs = 0;
|
||||
|
||||
$today = date('Y-m-d');
|
||||
$periods = [
|
||||
0 => [
|
||||
'start' => '2024-01-05',
|
||||
'end' => '2025-01-05'
|
||||
],
|
||||
1 => [
|
||||
'start' => $today,
|
||||
'end' => $today
|
||||
]
|
||||
// Tambahkan kondisi lainnya jika diperlukan
|
||||
];
|
||||
|
||||
// if (array_key_exists($benefit['max_frequency_period'], $periods)) {
|
||||
$usageLogs = RequestLogBenefit::query()
|
||||
->whereHas('requestLog', function ($query) use ($benefit, $memberFamilys, $periods) {
|
||||
// $period = $periods[$benefit['max_frequency_period']];
|
||||
$query->where('benefit_id', $benefit['id'])
|
||||
// ->where('submission_date', '>=', $period['start'])
|
||||
// ->where('submission_date', '<=', $period['end'])
|
||||
->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 getLimitMemberService($corporateId, $id, $benefitData) {
|
||||
// Menghitung jumlah total approved dan mengkategorikan berdasarkan benefit_id
|
||||
$amountApprovedByBenefit = [];
|
||||
foreach($benefitData as $benefit) {
|
||||
if ($benefit['limit_amount'] != 999999999) {
|
||||
if ($benefit['family_plan'] == 'S' || $benefit['family_plan'] == 'F'){ // Menghitung usage per family
|
||||
$memberFamilys = Helper::getMemberFamily($id);
|
||||
$usageLogs = 0;
|
||||
|
||||
$today = date('Y-m-d');
|
||||
$periods = [
|
||||
0 => [
|
||||
'start' => '2024-01-05',
|
||||
'end' => '2025-01-05'
|
||||
],
|
||||
1 => [
|
||||
'start' => $today,
|
||||
'end' => $today
|
||||
]
|
||||
// Tambahkan kondisi lainnya jika diperlukan
|
||||
];
|
||||
|
||||
if (array_key_exists($benefit['max_frequency_period'], $periods)) {
|
||||
$usageLogs = RequestLogBenefit::query()
|
||||
->whereHas('requestLog', function ($query) use ($benefit, $memberFamilys, $periods) {
|
||||
$period = $periods[$benefit['max_frequency_period']];
|
||||
$query->where('benefit_id', $benefit['id'])
|
||||
// ->where('submission_date', '>=', $period['start'])
|
||||
// ->where('submission_date', '<=', $period['end'])
|
||||
->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