45 lines
1.2 KiB
PHP
45 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Enums\PaymentPurposeEnum;
|
|
use App\Enums\PaymentStatusEnum;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
/**
|
|
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Payment>
|
|
*/
|
|
class PaymentFactory extends Factory
|
|
{
|
|
public function definition(): array
|
|
{
|
|
return [
|
|
'track_id' => fake()->unique()->numerify('##########'),
|
|
'amount' => fake()->numberBetween(100000, 2000000),
|
|
'status' => PaymentStatusEnum::Pending,
|
|
'purpose' => PaymentPurposeEnum::Invoice,
|
|
'ref_number' => null,
|
|
'verified_at' => null,
|
|
'invoice_id' => null,
|
|
'payer_id' => User::factory(),
|
|
];
|
|
}
|
|
|
|
public function paid(): static
|
|
{
|
|
return $this->state(fn (array $attributes) => [
|
|
'status' => PaymentStatusEnum::Paid,
|
|
'ref_number' => fake()->numerify('############'),
|
|
'verified_at' => now(),
|
|
]);
|
|
}
|
|
|
|
public function walletTopUp(): static
|
|
{
|
|
return $this->state(fn (array $attributes) => [
|
|
'purpose' => PaymentPurposeEnum::WalletTopUp,
|
|
]);
|
|
}
|
|
}
|