<?php declare(strict_types=1);
namespace Sq\Entity\Schema\ORM;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Embeddable]
class WorkspaceLinkSettings
{
#[ORM\Column(name: 'campaign_tracking', type: 'boolean', nullable: true, options: ['default' => false])]
private bool $campaignTracking = false;
#[ORM\Column(name: 'remove_utm', type: 'boolean', nullable: true, options: ['default' => false])]
private bool $removeUtm = false;
#[ORM\Column(name: 'utm_source', type: 'string', length: 64, nullable: true, options: ['default' => '_NETWORK_'])]
private ?string $utmSource = '_NETWORK_';
#[ORM\Column(name: 'utm_medium', type: 'string', length: 64, nullable: true, options: ['default' => 'social'])]
private ?string $utmMedium = 'social';
#[ORM\Column(name: 'utm_campaign', type: 'string', length: 64, nullable: true, options: ['default' => '_ACCOUNT_'])]
private ?string $utmCampaign = '_ACCOUNT_';
#[ORM\Column(name: 'utm_term', type: 'string', length: 64, nullable: true)]
private ?string $utmTerm = null;
#[ORM\Column(name: 'utm_content', type: 'string', length: 64, nullable: true, options: ['default' => '_CATEGORY_'])]
private ?string $utmContent = '_CATEGORY_';
public function isCampaignTrackingEnabled(): bool
{
return $this->campaignTracking;
}
public function setCampaignTracking(bool $campaignTracking): self
{
$this->campaignTracking = $campaignTracking;
return $this;
}
public function shouldRemoveUtm(): bool
{
return $this->removeUtm;
}
public function setRemoveUtm(bool $removeUtm): self
{
$this->removeUtm = $removeUtm;
return $this;
}
public function getUtmSource(): ?string
{
return match ($this->utmSource)
{
'_NETWORK_' => 'NETWORK',
'_ACCOUNT_' => 'ACCOUNT',
'_CATEGORY_' => 'CATEGORY',
default => $this->utmSource,
};
}
public function setUtmSource(?string $utmSource): self
{
$this->utmSource = match ($utmSource)
{
'NETWORK' => '_NETWORK_',
'ACCOUNT' => '_ACCOUNT_',
'CATEGORY' => '_CATEGORY_',
default => $utmSource,
};
return $this;
}
public function getUtmMedium(): ?string
{
return match ($this->utmMedium)
{
'_NETWORK_' => 'NETWORK',
'_ACCOUNT_' => 'ACCOUNT',
'_CATEGORY_' => 'CATEGORY',
default => $this->utmMedium,
};
}
public function setUtmMedium(?string $utmMedium): self
{
$this->utmMedium = match ($utmMedium)
{
'NETWORK' => '_NETWORK_',
'ACCOUNT' => '_ACCOUNT_',
'CATEGORY' => '_CATEGORY_',
default => $utmMedium,
};
return $this;
}
public function getUtmCampaign(): ?string
{
return match ($this->utmCampaign)
{
'_NETWORK_' => 'NETWORK',
'_ACCOUNT_' => 'ACCOUNT',
'_CATEGORY_' => 'CATEGORY',
default => $this->utmCampaign,
};
}
public function setUtmCampaign(?string $utmCampaign): self
{
$this->utmCampaign = match ($utmCampaign)
{
'NETWORK' => '_NETWORK_',
'ACCOUNT' => '_ACCOUNT_',
'CATEGORY' => '_CATEGORY_',
default => $utmCampaign,
};
return $this;
}
public function getUtmTerm(): ?string
{
return match ($this->utmTerm)
{
'_NETWORK_' => 'NETWORK',
'_ACCOUNT_' => 'ACCOUNT',
'_CATEGORY_' => 'CATEGORY',
default => $this->utmTerm,
};
}
public function setUtmTerm(?string $utmTerm): self
{
$this->utmTerm = match ($utmTerm)
{
'NETWORK' => '_NETWORK_',
'ACCOUNT' => '_ACCOUNT_',
'CATEGORY' => '_CATEGORY_',
default => $utmTerm,
};
return $this;
}
public function getUtmContent(): ?string
{
return match ($this->utmContent)
{
'_NETWORK_' => 'NETWORK',
'_ACCOUNT_' => 'ACCOUNT',
'_CATEGORY_' => 'CATEGORY',
default => $this->utmContent,
};
}
public function setUtmContent(?string $utmContent): self
{
$this->utmContent = match ($utmContent)
{
'NETWORK' => '_NETWORK_',
'ACCOUNT' => '_ACCOUNT_',
'CATEGORY' => '_CATEGORY_',
default => $utmContent,
};
return $this;
}
}