<?php

namespace Database\Factories;

use App\Models\CatalogLandingPageVisit;
use App\Models\LandingPage;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

/**
 * @extends Factory<CatalogLandingPageVisit>
 */
class CatalogLandingPageVisitFactory extends Factory
{
    protected $model = CatalogLandingPageVisit::class;

    /**
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'landing_page_id' => LandingPage::factory(),
            'page_load_id' => (string) Str::uuid(),
            'query_params' => [
                'utm_source' => 'google',
                'utm_campaign' => 'spring',
            ],
            'ip' => fake()->ipv4(),
            'user_agent' => fake()->userAgent(),
        ];
    }

    public function withoutQueryParams(): static
    {
        return $this->state(fn (): array => [
            'query_params' => null,
        ]);
    }
}
