<?php
namespace App\Entity\Gos;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\Request;
/**
* @ORM\Entity(repositoryClass="App\Repository\TouchPointRepository")
* @ORM\HasLifecycleCallbacks
*/
class TouchPoint
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=8, nullable=true)
*/
private $actionNumber;
/**
* @ORM\Column(type="string", length=100, nullable=true)
*/
private $fromSource;
/**
* @ORM\Column(type="string", length=100, nullable=true)
*/
private $campaign;
/**
* @ORM\Column(type="string", length=100, nullable=true)
*/
private $campaignChannel;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $cookiesHash;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $visitorID;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $visitID;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $gosVisitID;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $customerID;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $touchPointType;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\User", inversedBy="touchPoint")
* @ORM\JoinColumn()
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Gos\PortalSettings", inversedBy="touchPoint")
* @ORM\JoinColumn()
*/
private $portalSettings;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Gos\Orders", inversedBy="touchPoint")
* @ORM\JoinColumn()
*/
private $order;
/**
* @ORM\Column(type="datetime")
*/
private $createdAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $url;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $userAgent;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $dataLayerUrl;
public function getObjectVars()
{
return get_object_vars($this);
}
public function generatedCookiesHash()
{
$this->cookiesHash = bin2hex(random_bytes(15));
return $this;
}
public function generatedCustomerID(User $user)
{
$this->customerID = md5($user->getEmail());
return $this;
}
public function generatedGosVisitID()
{
$this->gosVisitID = bin2hex(random_bytes(15));
return $this;
}
public function setActionNumberFromPortalSettings()
{
if (!empty($this->getPortalSettings()))
{
$this->setActionNumber($this->getPortalSettings()->getActionNumber());
}
return $this;
}
public function setDataFromRequest(Request $request)
{
if (!empty($request->query->get('a')))
{
$this->setActionNumber($request->query->get('a'));
}
else
{
$this->setActionNumber($request->request->get('a'));
}
$this->setFromSource($request->query->get('f'));
$this->setCampaign($request->query->get('c'));
$this->setCampaignChannel($request->query->get('chc'));
$this->setVisitID($request->query->get('visitId'));
$this->setVisitorID($request->query->get('visitorId'));
$this->setDataLayerUrl($request->query->get('dataLayerUrl'));
$this->setUserAgent($request->server->get('HTTP_USER_AGENT'));
}
/** @ORM\PrePersist() */
public function prePersist()
{
$this->createdAt = new \DateTime();
}
/** @ORM\PreUpdate() */
public function preUpdate()
{
$this->updatedAt = new \DateTime();
}
public function __toString()
{
return (string)$this->cookiesHash;
}
//------------------------------ setters & getters
public function getId(): ?int
{
return $this->id;
}
public function getActionNumber(): ?string
{
return $this->actionNumber;
}
public function setActionNumber(?string $actionNumber): self
{
$this->actionNumber = $actionNumber;
return $this;
}
public function getFromSource(): ?string
{
return $this->fromSource;
}
public function setFromSource(?string $fromSource): self
{
$this->fromSource = $fromSource;
return $this;
}
public function getCampaign(): ?string
{
return $this->campaign;
}
public function setCampaign(?string $campaign): self
{
$this->campaign = $campaign;
return $this;
}
public function getCampaignChannel(): ?string
{
return $this->campaignChannel;
}
public function setCampaignChannel(?string $campaignChannel): self
{
$this->campaignChannel = $campaignChannel;
return $this;
}
public function getCookiesHash(): ?string
{
return $this->cookiesHash;
}
public function setCookiesHash(?string $cookiesHash): self
{
$this->cookiesHash = $cookiesHash;
return $this;
}
public function getVisitorID(): ?string
{
return $this->visitorID;
}
public function setVisitorID(?string $visitorID): self
{
$this->visitorID = $visitorID;
return $this;
}
public function getVisitID(): ?string
{
return $this->visitID;
}
public function setVisitID(?string $visitID): self
{
$this->visitID = $visitID;
return $this;
}
public function getGosVisitID(): ?string
{
return $this->gosVisitID;
}
public function setGosVisitID(?string $gosVisitID): self
{
$this->gosVisitID = $gosVisitID;
return $this;
}
public function getCustomerID(): ?string
{
return $this->customerID;
}
public function setCustomerID(?string $customerID): self
{
$this->customerID = $customerID;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getPortalSettings(): ?PortalSettings
{
return $this->portalSettings;
}
public function setPortalSettings(?PortalSettings $portalSettings): self
{
$this->portalSettings = $portalSettings;
return $this;
}
public function getTouchPointType(): ?string
{
return $this->touchPointType;
}
public function setTouchPointType(?string $touchPointType): self
{
$this->touchPointType = $touchPointType;
return $this;
}
public function getOrder(): ?Orders
{
return $this->order;
}
public function setOrder(?Orders $order): self
{
$this->order = $order;
return $this;
}
public function getUrl(): ?string
{
return $this->url;
}
public function setUrl(?string $url): self
{
$this->url = $url;
return $this;
}
public function getDataLayerUrl(): ?string
{
return $this->dataLayerUrl;
}
public function setDataLayerUrl(?string $dataLayerUrl): self
{
$this->dataLayerUrl = $dataLayerUrl;
return $this;
}
public function getUserAgent(): ?string
{
return $this->userAgent;
}
public function setUserAgent(?string $userAgent): self
{
$this->userAgent = $userAgent;
return $this;
}
}