From a1d01654d5b24451616b3a6bcb0822d8cd65fc27 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 19 Feb 2026 09:52:04 +0700 Subject: [PATCH] feat: Add DelayedGood model factory and seeder, and integrate it into the main DatabaseSeeder. --- database/factories/DelayedGoodFactory.php | 41 +++++++++++++++++++++++ database/seeders/DatabaseSeeder.php | 1 + database/seeders/DelayedGoodSeeder.php | 31 +++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 database/factories/DelayedGoodFactory.php create mode 100644 database/seeders/DelayedGoodSeeder.php diff --git a/database/factories/DelayedGoodFactory.php b/database/factories/DelayedGoodFactory.php new file mode 100644 index 0000000..f76f136 --- /dev/null +++ b/database/factories/DelayedGoodFactory.php @@ -0,0 +1,41 @@ + + */ +class DelayedGoodFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + $quantity = fake()->numberBetween(1, 100); + $unitPrice = fake()->numberBetween(5000, 20000); + $totalAmount = $quantity * $unitPrice; + $isPaid = fake()->boolean(); + $paidAmount = $isPaid ? $totalAmount : fake()->numberBetween(0, $totalAmount); + $storedDate = fake()->dateTimeBetween('-1 month', 'now'); + + return [ + 'customer_id' => Customer::factory(), + 'unit_id' => Unit::factory(), + 'quantity' => $quantity, + 'unit_price' => $unitPrice, + 'total_amount' => $totalAmount, + 'paid_amount' => $paidAmount, + 'stored_date' => $storedDate, + 'is_paid' => $isPaid, + 'payment_date' => $isPaid ? fake()->dateTimeBetween($storedDate, 'now') : null, + 'notes' => fake()->optional()->sentence(), + ]; + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 0e88ac3..ebbd935 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -25,6 +25,7 @@ public function run(): void CustomerSeeder::class, EggPriceSeeder::class, OrderSeeder::class, + DelayedGoodSeeder::class, ]); } } diff --git a/database/seeders/DelayedGoodSeeder.php b/database/seeders/DelayedGoodSeeder.php new file mode 100644 index 0000000..3ad18a2 --- /dev/null +++ b/database/seeders/DelayedGoodSeeder.php @@ -0,0 +1,31 @@ +isEmpty()) { + $customers = \App\Models\Customer::factory()->count(10)->create(); + } + + if ($units->isEmpty()) { + $units = \App\Models\Unit::factory()->count(5)->create(); + } + + \App\Models\DelayedGood::factory() + ->count(50) + ->recycle($customers) + ->recycle($units) + ->create(); + } +}