<?php

namespace HiEvents\DomainObjects\Generated;

/**
 * THIS FILE IS AUTOGENERATED - DO NOT EDIT IT DIRECTLY.
 * @package HiEvents\DomainObjects\Generated
 */
abstract class AccountAttributionDomainObjectAbstract extends \HiEvents\DomainObjects\AbstractDomainObject
{
    final public const SINGULAR_NAME = 'account_attribution';
    final public const PLURAL_NAME = 'account_attributions';
    final public const ID = 'id';
    final public const ACCOUNT_ID = 'account_id';
    final public const UTM_SOURCE = 'utm_source';
    final public const UTM_MEDIUM = 'utm_medium';
    final public const UTM_CAMPAIGN = 'utm_campaign';
    final public const UTM_TERM = 'utm_term';
    final public const UTM_CONTENT = 'utm_content';
    final public const REFERRER_URL = 'referrer_url';
    final public const LANDING_PAGE = 'landing_page';
    final public const GCLID = 'gclid';
    final public const FBCLID = 'fbclid';
    final public const SOURCE_TYPE = 'source_type';
    final public const UTM_RAW = 'utm_raw';
    final public const CREATED_AT = 'created_at';
    final public const UPDATED_AT = 'updated_at';

    protected int $id;
    protected int $account_id;
    protected ?string $utm_source = null;
    protected ?string $utm_medium = null;
    protected ?string $utm_campaign = null;
    protected ?string $utm_term = null;
    protected ?string $utm_content = null;
    protected ?string $referrer_url = null;
    protected ?string $landing_page = null;
    protected ?string $gclid = null;
    protected ?string $fbclid = null;
    protected ?string $source_type = null;
    protected array|string|null $utm_raw = null;
    protected ?string $created_at = null;
    protected ?string $updated_at = null;

    public function toArray(): array
    {
        return [
                    'id' => $this->id ?? null,
                    'account_id' => $this->account_id ?? null,
                    'utm_source' => $this->utm_source ?? null,
                    'utm_medium' => $this->utm_medium ?? null,
                    'utm_campaign' => $this->utm_campaign ?? null,
                    'utm_term' => $this->utm_term ?? null,
                    'utm_content' => $this->utm_content ?? null,
                    'referrer_url' => $this->referrer_url ?? null,
                    'landing_page' => $this->landing_page ?? null,
                    'gclid' => $this->gclid ?? null,
                    'fbclid' => $this->fbclid ?? null,
                    'source_type' => $this->source_type ?? null,
                    'utm_raw' => $this->utm_raw ?? null,
                    'created_at' => $this->created_at ?? null,
                    'updated_at' => $this->updated_at ?? null,
                ];
    }

    public function setId(int $id): self
    {
        $this->id = $id;
        return $this;
    }

    public function getId(): int
    {
        return $this->id;
    }

    public function setAccountId(int $account_id): self
    {
        $this->account_id = $account_id;
        return $this;
    }

    public function getAccountId(): int
    {
        return $this->account_id;
    }

    public function setUtmSource(?string $utm_source): self
    {
        $this->utm_source = $utm_source;
        return $this;
    }

    public function getUtmSource(): ?string
    {
        return $this->utm_source;
    }

    public function setUtmMedium(?string $utm_medium): self
    {
        $this->utm_medium = $utm_medium;
        return $this;
    }

    public function getUtmMedium(): ?string
    {
        return $this->utm_medium;
    }

    public function setUtmCampaign(?string $utm_campaign): self
    {
        $this->utm_campaign = $utm_campaign;
        return $this;
    }

    public function getUtmCampaign(): ?string
    {
        return $this->utm_campaign;
    }

    public function setUtmTerm(?string $utm_term): self
    {
        $this->utm_term = $utm_term;
        return $this;
    }

    public function getUtmTerm(): ?string
    {
        return $this->utm_term;
    }

    public function setUtmContent(?string $utm_content): self
    {
        $this->utm_content = $utm_content;
        return $this;
    }

    public function getUtmContent(): ?string
    {
        return $this->utm_content;
    }

    public function setReferrerUrl(?string $referrer_url): self
    {
        $this->referrer_url = $referrer_url;
        return $this;
    }

    public function getReferrerUrl(): ?string
    {
        return $this->referrer_url;
    }

    public function setLandingPage(?string $landing_page): self
    {
        $this->landing_page = $landing_page;
        return $this;
    }

    public function getLandingPage(): ?string
    {
        return $this->landing_page;
    }

    public function setGclid(?string $gclid): self
    {
        $this->gclid = $gclid;
        return $this;
    }

    public function getGclid(): ?string
    {
        return $this->gclid;
    }

    public function setFbclid(?string $fbclid): self
    {
        $this->fbclid = $fbclid;
        return $this;
    }

    public function getFbclid(): ?string
    {
        return $this->fbclid;
    }

    public function setSourceType(?string $source_type): self
    {
        $this->source_type = $source_type;
        return $this;
    }

    public function getSourceType(): ?string
    {
        return $this->source_type;
    }

    public function setUtmRaw(array|string|null $utm_raw): self
    {
        $this->utm_raw = $utm_raw;
        return $this;
    }

    public function getUtmRaw(): array|string|null
    {
        return $this->utm_raw;
    }

    public function setCreatedAt(?string $created_at): self
    {
        $this->created_at = $created_at;
        return $this;
    }

    public function getCreatedAt(): ?string
    {
        return $this->created_at;
    }

    public function setUpdatedAt(?string $updated_at): self
    {
        $this->updated_at = $updated_at;
        return $this;
    }

    public function getUpdatedAt(): ?string
    {
        return $this->updated_at;
    }
}
