membership = MembershipModel::with(['tier'])->where('user_id', auth()->id())->first(); if (! $this->membership) { return; } $nextTier = Tier::where('min_spending', '>', $this->membership->total_spending) ->orderBy('min_spending', 'asc') ->first(); $this->nextTierName = $nextTier ? $nextTier->name : 'Maksimal'; $this->currentSpending = formatCurrencyNumber($this->membership->total_spending, 'Rp'); $this->nextTierSpending = $nextTier ? formatCurrencyNumber($nextTier->min_spending, 'Rp') : 'Maksimal'; if ($nextTier) { $this->progress = ($this->membership->total_spending / $nextTier->min_spending) * 100; } else { $this->progress = '100'; } $this->stats = [ [ 'title' => 'Poin Hadiah', 'value' => formatCurrencyNumber($this->membership->reward_points, ''), 'description' => 'Gunakan poin untuk hadiah menarik', ], [ 'title' => 'Tier Sekarang', 'value' => $this->membership->tier->name, 'description' => 'Terdaftar sejak '.formatDateLocalized($this->membership->created_at), ], [ 'title' => 'Total Belanja', 'value' => formatCurrencyNumber($this->membership->total_spending, 'Rp'), 'description' => 'Akumulasi seluruh transaksi', ], [ 'title' => 'Tier Selanjutnya', 'value' => $nextTier ? $nextTier->name : 'Maksimal', 'description' => $nextTier ? formatCurrencyNumber($nextTier->min_spending - $this->membership->total_spending, 'Rp').' lagi' : 'Anda sudah berada di tier tertinggi', ], ]; } public function render(): View { return view('livewire.member.memberships', [ 'pageTitle' => 'Membership', ]); } }