feat(seeder): membuat MembershipSeeder dan menyesuaikan CustomerSeeder menjadi data dummy dengan jumlah 500 data

This commit is contained in:
Yoga Pangestu 2025-10-28 21:13:25 +07:00
parent 0104e5a5af
commit f4a4a30d70
2 changed files with 52 additions and 20 deletions

View File

@ -2,34 +2,28 @@
namespace Database\Seeders;
use App\Enums\Gender;
use App\Models\Customer;
use App\Models\User;
use Illuminate\Database\Seeder;
class CustomerSeeder extends Seeder
{
public function run(): void
{
$customers = [
[
'name' => 'Yoga Pangestu',
'phone_number' => '082121495806',
'gender' => Gender::MALE,
],
[
'name' => 'Budi',
'phone_number' => '082121673845',
'gender' => Gender::MALE,
],
[
'name' => 'Jaka',
'phone_number' => '082127382347',
'gender' => Gender::MALE,
],
];
for ($i = 0; $i < 500; $i++) {
$hasUser = fake()->boolean(70);
foreach ($customers as $customer) {
Customer::create($customer);
$userId = null;
if ($hasUser) {
$user = User::factory()->create();
$userId = $user->id;
}
Customer::factory()
->create([
'user_id' => $userId,
]);
}
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Database\Seeders;
use App\Models\Customer;
use App\Models\Membership;
use App\Models\Tier;
use Illuminate\Database\Seeder;
class MembershipSeeder extends Seeder
{
public function run(): void
{
$tiers = Tier::all();
$userIds = Customer::whereNotNull('user_id')
->pluck('id')
->unique()
->toArray();
foreach ($userIds as $userId) {
$totalPoints = fake()->numberBetween(0, 10000);
$tier = $tiers->first(function ($tier) use ($totalPoints) {
$min = $tier->min_points;
$max = $tier->max_points ?? PHP_INT_MAX;
return $totalPoints >= $min && $totalPoints <= $max;
});
Membership::create([
'user_id' => $userId,
'tier_id' => $tier->id,
'total_points' => $totalPoints,
]);
}
}
}