feat(seeder): membuat MembershipSeeder dan menyesuaikan CustomerSeeder menjadi data dummy dengan jumlah 500 data
This commit is contained in:
parent
0104e5a5af
commit
f4a4a30d70
@ -2,34 +2,28 @@
|
|||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use App\Enums\Gender;
|
|
||||||
use App\Models\Customer;
|
use App\Models\Customer;
|
||||||
|
use App\Models\User;
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
||||||
class CustomerSeeder extends Seeder
|
class CustomerSeeder extends Seeder
|
||||||
{
|
{
|
||||||
public function run(): void
|
public function run(): void
|
||||||
{
|
{
|
||||||
$customers = [
|
for ($i = 0; $i < 500; $i++) {
|
||||||
[
|
$hasUser = fake()->boolean(70);
|
||||||
'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,
|
|
||||||
],
|
|
||||||
];
|
|
||||||
|
|
||||||
foreach ($customers as $customer) {
|
$userId = null;
|
||||||
Customer::create($customer);
|
|
||||||
|
if ($hasUser) {
|
||||||
|
$user = User::factory()->create();
|
||||||
|
$userId = $user->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
Customer::factory()
|
||||||
|
->create([
|
||||||
|
'user_id' => $userId,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
38
database/seeders/MembershipSeeder.php
Normal file
38
database/seeders/MembershipSeeder.php
Normal 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,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user