From 90a64ba46cc6520cc5570f9a144bba06ec7edd31 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 13 Nov 2025 08:51:14 +0700 Subject: [PATCH] fix(membership): kasih kondisi ketika user tidak punya data member tapi tetap bisa login --- app/Livewire/Member/Membership.php | 26 +-- .../livewire/member/memberships.blade.php | 168 ++++++++++-------- 2 files changed, 107 insertions(+), 87 deletions(-) diff --git a/app/Livewire/Member/Membership.php b/app/Livewire/Member/Membership.php index 034e9fb..7a9721f 100644 --- a/app/Livewire/Member/Membership.php +++ b/app/Livewire/Member/Membership.php @@ -15,6 +15,8 @@ #[Layout('components.layouts.member')] class Membership extends Component { + public ?MembershipModel $membership = null; + public array $stats = []; public string $nextTierName = ''; @@ -31,7 +33,11 @@ class Membership extends Component public function mount() { - $membership = MembershipModel::with(['tier', 'tier.rewards'])->where('user_id', auth()->id())->first(); + $this->membership = MembershipModel::with(['tier', 'tier.rewards'])->where('user_id', auth()->id())->first(); + + if (! $this->membership) { + return; + } $monthlyTierAddition = PointRecord::where('user_id', auth()->id()) ->where('type', PointRecordType::TIER) @@ -40,42 +46,42 @@ public function mount() ->whereMonth('created_at', now()->month) ->sum('change'); - $nextTier = Tier::where('min_points', '>', $membership->tier_points) + $nextTier = Tier::where('min_points', '>', $this->membership->tier_points) ->orderBy('min_points', 'asc') ->first(); $this->nextTierName = $nextTier ? $nextTier->name : 'Maksimal'; - $this->currentPoints = $membership->tier_points; + $this->currentPoints = $this->membership->tier_points; $this->nextTierPoints = $nextTier ? $nextTier->min_points : 'Maksimal'; - $this->progress = ($membership->tier_points / $nextTier->min_points) * 100; + $this->progress = ($this->membership->tier_points / $nextTier->min_points) * 100; $this->stats = [ [ 'title' => 'Poin Tier', - 'value' => currency($membership->tier_points), + 'value' => currency($this->membership->tier_points), 'description' => '+'.currency($monthlyTierAddition).' bulan ini', ], [ 'title' => 'Tier Sekarang', - 'value' => $membership->tier->name, - 'description' => 'Terdaftar sejak '.formatDate($membership->created_at), + 'value' => $this->membership->tier->name, + 'description' => 'Terdaftar sejak '.formatDate($this->membership->created_at), ], [ 'title' => 'Tier Selanjutnya', 'value' => $nextTier ? $nextTier->name : 'Maksimal', - 'description' => $nextTier ? ($nextTier->min_points - $membership->tier_points).' poin lagi' : 'Anda sudah berada di tier tertinggi', + 'description' => $nextTier ? ($nextTier->min_points - $this->membership->tier_points).' poin lagi' : 'Anda sudah berada di tier tertinggi', ], [ 'title' => 'Poin Hadiah', - 'value' => currency($membership->reward_points), + 'value' => currency($this->membership->reward_points), 'description' => 'Nikmati hadiah sekarang', ], ]; - $this->rewards = TierReward::where('tier_id', $membership->tier_id) + $this->rewards = TierReward::where('tier_id', $this->membership->tier_id) ->latest() ->get() ->map(fn ($reward) => [ diff --git a/resources/views/livewire/member/memberships.blade.php b/resources/views/livewire/member/memberships.blade.php index 7cad2cc..82d1ee4 100644 --- a/resources/views/livewire/member/memberships.blade.php +++ b/resources/views/livewire/member/memberships.blade.php @@ -2,90 +2,104 @@ {{ $pageTitle }}
-
- @foreach ($stats as $stat) -
-
- {{ $stat['title'] }} + @if ($membership) +
+ @foreach ($stats as $stat) +
+
+ {{ $stat['title'] }} +
+ {{ $stat['value'] }} + {{ $stat['description'] }}
- {{ $stat['value'] }} - {{ $stat['description'] }} -
- @endforeach -
- -
-

Proses ke Tier {{ $nextTierName }}

-
-
- Sekarang: {{ $currentPoints }} poin - Target: {{ $nextTierPoints }} -
-
-
-
- {{ $progress }} % + @endforeach
-
-
-
- - Redeem Hadiah - +
+

Proses ke Tier {{ $nextTierName }}

+
+
+ Sekarang: {{ $currentPoints }} poin + Target: {{ $nextTierPoints }} +
+
+
+
+ {{ $progress }} % +
+
-
- @foreach ($rewards as $reward) -
-
-
-

{{ $reward['name'] }}

-

Seharga {{ $reward['value'] }}

- +
+
+ + Redeem Hadiah + + +
+ @foreach ($rewards as $reward) +
+
+
+

{{ $reward['name'] }}

+

Seharga {{ $reward['value'] }}

+ +
-
- @endforeach -
- -
- -
- - Riwayat Poin - - - - - Tanggal - Keterangan - Poin - Tipe - - - - @foreach ($pointRecords as $pointRecords) - - {{ $pointRecords['date'] }} - {{ $pointRecords['description'] }} - - - {{ $pointRecords['is_addition'] ? '+' : '-' }} - {{ $pointRecords['change'] }} - - - {{ $pointRecords['type'] }} - @endforeach - - - +
+ +
+ +
+ + Riwayat Poin + + + + + Tanggal + Keterangan + Poin + Tipe + + + + @foreach ($pointRecords as $pointRecords) + + {{ $pointRecords['date'] }} + {{ $pointRecords['description'] }} + + + {{ $pointRecords['is_addition'] ? '+' : '-' }} + {{ $pointRecords['change'] }} + + + {{ $pointRecords['type'] }} + + @endforeach + + + +
-
+ @else +
+ + + + Apa? Anda belum menjadi member, ayo sini daftar. + +
+ @endif
+@assets + +@endassets