update sisa limit

This commit is contained in:
ivan-sim
2026-03-31 13:15:57 +07:00
parent 0370302fe6
commit 36653c4751

View File

@@ -146,12 +146,13 @@ class MemberController extends Controller
->first();
$res_data['total_premi'] = $corporateEmployee->total_premi ?? 0;
$res_data['limit_rules'] = DB::table('member_plans')
$limitRules = DB::table('member_plans')
->leftJoin('plans', 'plans.id', '=', 'member_plans.plan_id')
->where('member_plans.member_id', $members->id)
->where('member_plans.status', 'active')
->where('plans.active', 1)
->value('plans.limit_rules') ?? 0;
$res_data['limit_rules'] = $limitRules ?? 0;
$planMember = MemberPlan::where('member_id', $members->id)->get('plan_id');
@@ -172,6 +173,31 @@ class MemberController extends Controller
$memberUsage = Helper::getUsageMember($corporateEmployee->corporate_id, $members->id, $benefitData);;
$res_data['used_limit'] = json_decode($memberUsage);
$usedLimit = json_decode($memberUsage, true);
$totalUsed = 0;
if (is_array($usedLimit)) {
foreach ($usedLimit as $value) {
$totalUsed += (int) $value;
}
}
$limitRules = (int) $limitRules;
// hitung sisa
$remainingLimit = $limitRules - $totalUsed;
// biar gak minus
if ($remainingLimit < 0) {
$remainingLimit = 0;
}
// set ke response
$res_data['remaining_limit'] = $remainingLimit;
$res_data['total_used_limit'] = $totalUsed;
// company
$companies = DB::table('corporates')
->where('corporates.active', 1)
@@ -265,15 +291,21 @@ class MemberController extends Controller
// ===============================
// Hitung Used Limit (PAKAI HELPER)
// ===============================
$benefitData = [
[
'id' => $benefitId,
'limit_amount' => $corporateBenefit->limit_amount ?? 0,
$allBenefits = CorporateBenefit::with(['benefit', 'plan'])
->where('plan_id', $plan->id)
->get();
$benefitData = [];
foreach ($allBenefits as $data) {
$benefitData[] = [
'id' => $data->benefit_id,
'limit_amount' => $data->limit_amount ?? 0,
'limit_amount_plan' => $plan->limit_rules ?? 0,
'family_plan' => $plan->family_plan ?? 'S',
'max_frequency_period' => $corporateBenefit->max_frequency_period ?? 0
]
];
'max_frequency_period' => $data->max_frequency_period ?? 0
];
}
$memberUsage = Helper::getUsageMember(
$corporateEmployee->corporate_id,
@@ -282,13 +314,22 @@ class MemberController extends Controller
);
$usedLimitArray = json_decode($memberUsage, true);
$usedLimit = $usedLimitArray[$benefitId] ?? 0;
// total semua benefit (INI YANG BENAR)
$totalUsedLimit = is_array($usedLimitArray) ? array_sum($usedLimitArray) : 0;
// tetap ambil per benefit (kalau mau ditampilkan)
$usedLimit = $totalUsedLimit;
// ===============================
// Limit Logic
// ===============================
$limitPlan = $plan->limit_rules ?? 0;
$sisaLimit = $limitPlan - $usedLimit;
$sisaLimit = $limitPlan - $totalUsedLimit;
if ($sisaLimit < 0) {
$sisaLimit = 0;
}
if ($sisaLimit < 0) {
$sisaLimit = 0;