diff --git a/Modules/Primaya/Http/Controllers/Api/MemberController.php b/Modules/Primaya/Http/Controllers/Api/MemberController.php index 73393f83..6cef0400 100644 --- a/Modules/Primaya/Http/Controllers/Api/MemberController.php +++ b/Modules/Primaya/Http/Controllers/Api/MemberController.php @@ -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;