File: /home/xedaptot/ai.naniguide.com/database/factories/AdCampaignFactory.php
<?php
namespace Database\Factories;
use App\Model\AdCampaign;
use App\Model\Customer;
use Illuminate\Database\Eloquent\Factories\Factory;
class AdCampaignFactory extends Factory
{
protected $model = AdCampaign::class;
public function definition(): array
{
return [
'uid' => uniqid(),
'customer_id' => Customer::factory(),
'name' => 'Test Campaign ' . uniqid(),
'objective' => AdCampaign::OBJECTIVES[array_rand(AdCampaign::OBJECTIVES)],
'status' => AdCampaign::STATUS_DRAFT,
'daily_budget' => round(mt_rand(500, 50000) / 100, 2),
'budget_currency' => 'USD',
'bid_strategy' => AdCampaign::BID_AUTO,
'utm_source' => 'acelle_ads',
'utm_medium' => 'paid_social',
];
}
public function active(): static
{
return $this->state(fn () => [
'status' => AdCampaign::STATUS_ACTIVE,
'published_at' => now()->subDays(3),
'schedule_start' => now()->subDays(3),
]);
}
public function paused(): static
{
return $this->state(fn () => ['status' => AdCampaign::STATUS_PAUSED]);
}
public function completed(): static
{
return $this->state(fn () => [
'status' => AdCampaign::STATUS_COMPLETED,
'schedule_end' => now()->subDay(),
]);
}
public function forCustomer(Customer $customer): static
{
return $this->state(fn () => ['customer_id' => $customer->id]);
}
public function withObjective(string $objective): static
{
return $this->state(fn () => ['objective' => $objective]);
}
}