From 4067882f8adedf4cd29913ab361daea0fd204354 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 4 Nov 2025 21:28:16 +0700 Subject: [PATCH] refactor(membership): mengubah total_points menjadi tier points - menambahkan kolom baru yaitu reward point - menambahkan tier baru di seeder yaitu "Bronze" --- app/Livewire/Studio/Loyalty/Tier.php | 5 +++-- app/Models/Membership.php | 3 ++- .../2025_09_30_042232_create_memberships_table.php | 4 +++- database/seeders/TierSeeder.php | 7 ++++++- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/Livewire/Studio/Loyalty/Tier.php b/app/Livewire/Studio/Loyalty/Tier.php index 5140f7a..3a1f28a 100644 --- a/app/Livewire/Studio/Loyalty/Tier.php +++ b/app/Livewire/Studio/Loyalty/Tier.php @@ -36,7 +36,7 @@ public function mount() ->map(function ($tier) { $topMembership = $tier->memberships() ->with(['user.customer.orders.items', 'user.customer.orders.payments']) - ->orderByDesc('total_points') + ->orderByDesc('tier_points') ->first(); $topMemberStats = null; @@ -49,7 +49,7 @@ public function mount() $topMemberStats = [ 'name' => $topMembership->user->customer->name, - 'points' => currency($topMembership->total_points), + 'points' => currency($topMembership->tier_points), 'total_orders' => currency($totalOrders), 'total_items' => currency($totalItems), 'total_amount' => currency($totalAmount), @@ -57,6 +57,7 @@ public function mount() } return [ + 'id' => $tier->id, 'hash' => $tier->hash, 'name' => $tier->name, 'min_points' => currency($tier->min_points), diff --git a/app/Models/Membership.php b/app/Models/Membership.php index 48622f5..2c1e01a 100644 --- a/app/Models/Membership.php +++ b/app/Models/Membership.php @@ -15,7 +15,8 @@ class Membership extends Model protected function casts(): array { return [ - 'total_points' => 'int', + 'tier_points' => 'int', + 'reward_points' => 'int', ]; } diff --git a/database/migrations/2025_09_30_042232_create_memberships_table.php b/database/migrations/2025_09_30_042232_create_memberships_table.php index 09f8dd4..a6e07e9 100644 --- a/database/migrations/2025_09_30_042232_create_memberships_table.php +++ b/database/migrations/2025_09_30_042232_create_memberships_table.php @@ -15,7 +15,9 @@ public function up(): void $table->id(); $table->foreignId('user_id')->constrained()->cascadeOnDelete(); $table->foreignId('tier_id')->constrained()->cascadeOnDelete(); - $table->unsignedInteger('total_points')->default(0); + $table->unsignedInteger('tier_points')->default(0); + $table->unsignedInteger('reward_points')->default(0); + $table->timestamp('last_transaction_at')->nullable(); $table->timestamp('created_at')->useCurrent(); $table->timestamp('updated_at')->useCurrent()->useCurrentOnUpdate(); $table->softDeletes(); diff --git a/database/seeders/TierSeeder.php b/database/seeders/TierSeeder.php index e5cb6bf..5d2595d 100644 --- a/database/seeders/TierSeeder.php +++ b/database/seeders/TierSeeder.php @@ -11,8 +11,13 @@ public function run(): void { $tiers = [ [ - 'name' => 'Silver', + 'name' => 'Bronze', 'min_points' => 0, + 'max_points' => 49, + ], + [ + 'name' => 'Silver', + 'min_points' => 50, 'max_points' => 99, ], [