2026-05-10 16:52:10 +03:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
declare(strict_types=1);
|
|
|
|
|
|
|
|
|
|
namespace Database\Factories;
|
|
|
|
|
|
|
|
|
|
use App\Models\LeadCharge;
|
|
|
|
|
use App\Models\Tenant;
|
|
|
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @extends Factory<LeadCharge>
|
|
|
|
|
*/
|
|
|
|
|
class LeadChargeFactory extends Factory
|
|
|
|
|
{
|
|
|
|
|
protected $model = LeadCharge::class;
|
|
|
|
|
|
|
|
|
|
public function definition(): array
|
|
|
|
|
{
|
|
|
|
|
// Factory НЕ создаёт реальный Deal автоматически — composite FK
|
|
|
|
|
// requires (deal_id, deal_received_at) пары; тесты, требующие FK-целостность,
|
|
|
|
|
// явно создают Deal::factory() и передают пару в state().
|
|
|
|
|
return [
|
|
|
|
|
'tenant_id' => Tenant::factory(),
|
|
|
|
|
'deal_id' => fake()->numberBetween(1, 99999),
|
|
|
|
|
'deal_received_at' => now(),
|
|
|
|
|
'tier_no' => fake()->numberBetween(1, 7),
|
|
|
|
|
'price_per_lead_kopecks' => fake()->numberBetween(2000, 6000),
|
2026-05-11 08:38:38 +03:00
|
|
|
'charge_source' => 'rub',
|
2026-05-10 16:52:10 +03:00
|
|
|
'charged_at' => now(),
|
|
|
|
|
'created_at' => now(),
|
|
|
|
|
];
|
|
|
|
|
}
|
2026-05-11 08:38:38 +03:00
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* State для prepaid-списания (price=0).
|
|
|
|
|
*/
|
|
|
|
|
public function prepaid(): self
|
|
|
|
|
{
|
|
|
|
|
return $this->state(fn () => [
|
|
|
|
|
'charge_source' => 'prepaid',
|
|
|
|
|
'price_per_lead_kopecks' => 0,
|
|
|
|
|
]);
|
|
|
|
|
}
|
2026-05-10 16:52:10 +03:00
|
|
|
}
|