HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
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]);
    }
}