<?php
namespace App\Entity\Gos;
use App\Entity\ContactSegmentationableInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity(repositoryClass="App\Repository\Gos\LeadFormResponseRepository")
*/
class LeadFormResponse implements ContactSegmentationableInterface
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\Column(type="text")
*/
private $newAccountBodyResponse;
/**
* @ORM\Column(type="text")
*/
private $existingAccountBodyResponse;
/**
* @ORM\OneToMany(targetEntity="LeadFormResponseItem", mappedBy="leadFormResponse", orphanRemoval=true, cascade={"persist"})
*/
private $leadFormResponseItems;
/**
* @var boolean
*
* @ORM\Column(name="isClickmeeting", type="boolean", nullable=true, options={"default": 0})
*/
private $isClickmeeting;
/**
* @ORM\Column(type="integer", nullable=true, options={"default": null})
*/
private $conferenceId;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isLeadForPartner;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $linkToPartner;
/**
* @var boolean
*
* @ORM\Column(name="isNotTele", type="boolean", nullable=true, options={"default": 0})
*/
private $isNotTele;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $requiredPhone;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isPhoneHidden = false;
/**
* @ORM\ManyToOne(targetEntity=ProductVariant::class, inversedBy="leadFormResponses")
*/
private $productVariant;
/**
* @ORM\ManyToMany(targetEntity=Term::class, inversedBy="leadFormResponses")
* @ORM\JoinTable(name="lead_form_response_term")
*/
private $terms;
/**
* @ORM\OneToOne(targetEntity=LeadFormResponseAddress::class, inversedBy="leadFormResponse")
*/
private $leadFormResponseAddress;
/**
* @ORM\OneToOne(targetEntity=LeadFormResponsePosition::class, inversedBy="leadFormResponse")
*/
private $leadFormResponsePosition;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $oneTimePassword;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $oneTimePasswordBodyResponse;
/**
* @ORM\ManyToOne(targetEntity=Events::class, inversedBy="leadFormResponses")
*/
private $event;
/**
* @ORM\ManyToOne(targetEntity=EmailTemplate::class, inversedBy="leadFormResponses")
*/
private $emailTemplate;
/**
* @ORM\OneToOne(targetEntity=LeadReminders::class, cascade={"persist", "remove"})
*/
private $reminder;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $sender;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Assert\Regex(
* pattern="/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/",
* message="not valid email"
* )
*/
private $fromEmail;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $hideLastName;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $emailValidationType;
/**
* @ORM\OneToMany(targetEntity=LeadFormWhitelist::class, mappedBy="leadFormResponse")
*/
private $leadFormWhitelist;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $reginfoValidation;
/**
* @ORM\ManyToMany(targetEntity=ProductVariant::class, inversedBy="leadFormResponseValidations")
*/
private $productVariantsValidation;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $emailValidationErrorMessage;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $requiredNPWZ;
/**
* @ORM\ManyToOne(targetEntity=LeadGroup::class, inversedBy="leadFormResponses")
*/
private $leadGroup;
/**
* @ORM\ManyToMany(targetEntity=ProductVariant::class)
* @ORM\JoinTable(name="lead_form_response_related_product_variants")
*/
private $relatedProductVariants;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $additionalStyle;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $regInfo;
/**
* @ORM\Column(type="boolean", options={"default":0})
*/
private $useEventBok = false;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $actionNumber;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $overrideActionNumber;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $legalRule;
/**
* @ORM\ManyToMany(targetEntity=SalesManagoTagGroup::class, mappedBy="leadFormResponse")
*/
private $salesManagoTagGroups;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $additionalEventsDescription;
/**
* @ORM\ManyToMany(targetEntity=Events::class)
* @ORM\JoinTable(name="lead_form_response_additional_events")
*/
private $additionalEvents;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $colorBg;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $colorButton;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $colorFont;
/**
* @ORM\Column(type="boolean", nullable=true)
*/
private $useCustomColors;
/**
* @ORM\ManyToMany(targetEntity=ContactSegmentation::class)
*/
private $contactSegmentations;
/**
* @ORM\Column(type="boolean", options={"default":0})
*/
private $isEnglish = false;
/**
* LeadFormResponse constructor.
*/
public function __construct()
{
$this->leadFormResponseItems = new ArrayCollection();
$this->leadFormWhitelist = new ArrayCollection();
$this->terms = new ArrayCollection();
$this->productVariantsValidation = new ArrayCollection();
$this->relatedProductVariants = new ArrayCollection();
$this->salesManagoTagGroups = new ArrayCollection();
$this->additionalEvents = new ArrayCollection();
$this->contactSegmentations = new ArrayCollection();
}
public function __toString()
{
return (string)$this->name;
}
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @return null|string
*/
public function getName(): ?string
{
return $this->name;
}
/**
* @param string $name
* @return LeadFormResponse
*/
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
/**
* @return null|string
*/
public function getNewAccountBodyResponse(): ?string
{
return $this->newAccountBodyResponse;
}
/**
* @param string $newAccountBodyResponse
* @return LeadFormResponse
*/
public function setNewAccountBodyResponse(string $newAccountBodyResponse): self
{
$this->newAccountBodyResponse = $newAccountBodyResponse;
return $this;
}
/**
* @return null|string
*/
public function getExistingAccountBodyResponse(): ?string
{
return $this->existingAccountBodyResponse;
}
/**
* @param string $existingAccountBodyResponse
* @return LeadFormResponse
*/
public function setExistingAccountBodyResponse(string $existingAccountBodyResponse): self
{
$this->existingAccountBodyResponse = $existingAccountBodyResponse;
return $this;
}
public function getLeadFormResponseItems(): Collection
{
return $this->leadFormResponseItems;
}
public function addLeadFormResponseItem(LeadFormResponseItem $leadFormResponseItem): self
{
if (!$this->leadFormResponseItems->contains($leadFormResponseItem)) {
$this->leadFormResponseItems[] = $leadFormResponseItem;
$leadFormResponseItem->setLeadFormResponse($this);
}
return $this;
}
public function removeLeadFormResponseItem(LeadFormResponseItem $leadFormResponseItem): self
{
if ($this->leadFormResponseItems->contains($leadFormResponseItem)) {
$this->leadFormResponseItems->removeElement($leadFormResponseItem);
if ($leadFormResponseItem->getLeadFormResponse() === $this) {
$leadFormResponseItem->setLeadFormResponse(null);
}
}
return $this;
}
/**
* Set isClickmeeting
*
* @param boolean $isClickmeeting
*
* @return LeadFormResponse
*/
public function setIsClickmeeting($isClickmeeting)
{
$this->isClickmeeting = $isClickmeeting;
return $this;
}
/**
* Get isClickmeeting
*
* @return boolean
*/
public function getIsClickmeeting()
{
return $this->isClickmeeting;
}
/**
* Set conferenceId
*
* @param integer $conferenceId
*
* @return LeadFormResponse
*/
public function setConferenceId($conferenceId)
{
$this->conferenceId = $conferenceId;
return $this;
}
/**
* Get conferenceId
*
* @return integer
*/
public function getConferenceId()
{
return $this->conferenceId;
}
public function getIsLeadForPartner(): ?bool
{
return $this->isLeadForPartner;
}
public function setIsLeadForPartner(bool $isLeadForPartner): self
{
$this->isLeadForPartner = $isLeadForPartner;
return $this;
}
public function getLinkToPartner(): ?string
{
return $this->linkToPartner;
}
public function setLinkToPartner(?string $linkToPartner): self
{
$this->linkToPartner = $linkToPartner;
return $this;
}
/**
* Set isNotTele
*
* @param boolean $isNotTele
*
* @return LeadFormResponse
*/
public function setIsNotTele($isNotTele)
{
$this->isNotTele = $isNotTele;
return $this;
}
/**
* Get isNotTele
*
* @return boolean
*/
public function getIsNotTele()
{
return $this->isNotTele;
}
public function getRequiredPhone(): ?bool
{
return $this->requiredPhone;
}
public function setRequiredPhone(?bool $requiredPhone): self
{
$this->requiredPhone = $requiredPhone;
return $this;
}
public function isPhoneHidden(): ?bool
{
return $this->isPhoneHidden;
}
public function setIsPhoneHidden(bool $isPhoneHidden): self
{
$this->isPhoneHidden = $isPhoneHidden;
return $this;
}
public function getProductVariant(): ?ProductVariant
{
return $this->productVariant;
}
public function setProductVariant(?ProductVariant $productVariant): self
{
$this->productVariant = $productVariant;
return $this;
}
public function addProductVariantsValidation(ProductVariant $productVariantsValidation): self
{
if (!$this->productVariantsValidation->contains($productVariantsValidation)) {
$this->productVariantsValidation[] = $productVariantsValidation;
$productVariantsValidation->getLeadFormResponseValidations()->add($this);
}
return $this;
}
public function removeProductVariantsValidation(ProductVariant $productVariantsValidation): self
{
if ($this->productVariantsValidation->contains($productVariantsValidation)) {
$this->productVariantsValidation->removeElement($productVariantsValidation);
if ($productVariantsValidation->getLeadFormResponseValidations()->contains($this)) {
$productVariantsValidation->getLeadFormResponseValidations()->removeElement($this);
}
}
return $this;
}
public function getProductVariantsValidation(): Collection
{
return $this->productVariantsValidation;
}
public function getReginfoValidation(): ?string
{
return $this->reginfoValidation;
}
public function setReginfoValidation(?string $reginfoValidation): self
{
$this->reginfoValidation = $reginfoValidation;
return $this;
}
public function getTerms()
{
return $this->terms;
}
public function addTerm(Term $term): self
{
if (!$this->terms->contains($term)) {
$this->terms[] = $term;
}
return $this;
}
public function removeTerm(Term $term): self
{
if ($this->terms->contains($term)) {
$this->terms->removeElement($term);
}
return $this;
}
public function getLeadFormResponseAddress(): ?LeadFormResponseAddress
{
return $this->leadFormResponseAddress;
}
public function setLeadFormResponseAddress(?LeadFormResponseAddress $leadFormResponseAddress): self
{
$this->leadFormResponseAddress = $leadFormResponseAddress;
return $this;
}
public function getLeadFormResponsePosition(): ?LeadFormResponsePosition
{
return $this->leadFormResponsePosition;
}
public function setLeadFormResponsePosition(?LeadFormResponsePosition $leadFormResponsePosition): self
{
$this->leadFormResponsePosition = $leadFormResponsePosition;
return $this;
}
public function getOneTimePassword(): ?bool
{
return $this->oneTimePassword;
}
public function setOneTimePassword(?bool $oneTimePassword): self
{
$this->oneTimePassword = $oneTimePassword;
return $this;
}
public function getOneTimePasswordBodyResponse(): ?string
{
return $this->oneTimePasswordBodyResponse;
}
public function setOneTimePasswordBodyResponse(?string $oneTimePasswordBodyResponse): self
{
$this->oneTimePasswordBodyResponse = $oneTimePasswordBodyResponse;
return $this;
}
public function getEvent(): ?Events
{
return $this->event;
}
public function setEvent(?Events $event): self
{
$this->event = $event;
return $this;
}
public function getEmailTemplate(): ?EmailTemplate
{
return $this->emailTemplate;
}
public function setEmailTemplate(?EmailTemplate $emailTemplate): self
{
$this->emailTemplate = $emailTemplate;
return $this;
}
public function getReminder(): ?LeadReminders
{
return $this->reminder;
}
public function setReminder(?LeadReminders $reminder): self
{
$this->reminder = $reminder;
return $this;
}
public function getSender(): ?string
{
return $this->sender;
}
public function setSender(?string $sender): self
{
$this->sender = $sender;
return $this;
}
public function getFromEmail(): ?string
{
return $this->fromEmail;
}
public function setFromEmail(?string $fromEmail): self
{
$this->fromEmail = $fromEmail;
return $this;
}
public function getHideLastName(): ?bool
{
return $this->hideLastName;
}
public function setHideLastName(?bool $hideLastName): self
{
$this->hideLastName = $hideLastName;
return $this;
}
public function getEmailValidationType(): ?int
{
return $this->emailValidationType;
}
public function setEmailValidationType(?int $emailValidationType): self
{
$this->emailValidationType = $emailValidationType;
return $this;
}
public function isIncludingAddress(): bool
{
return $this->getLeadFormResponseAddress() && $this->getLeadFormResponseAddress()->getIncludeAddress();
}
public function isIncludingPosition(): bool
{
return $this->getLeadFormResponsePosition() && $this->getLeadFormResponsePosition()->getIncludePosition();
}
/**
* @return Collection|LeadFormWhitelist[]
*/
public function getLeadFormWhitelist(): Collection
{
return $this->leadFormWhitelist;
}
public function addLeadFormWhitelist(LeadFormWhitelist $leadFormWhitelist): self
{
if (!$this->leadFormWhitelist->contains($leadFormWhitelist)) {
$this->leadFormWhitelist[] = $leadFormWhitelist;
$leadFormWhitelist->setLeadFormResponse($this);
}
return $this;
}
public function removeLeadFormWhitelist(LeadFormWhitelist $leadFormWhitelist): self
{
if ($this->leadFormWhitelist->contains($leadFormWhitelist)) {
$this->leadFormWhitelist->removeElement($leadFormWhitelist);
// set the owning side to null (unless already changed)
if ($leadFormWhitelist->getLeadFormResponse() === $this) {
$leadFormWhitelist->setLeadFormResponse(null);
}
}
return $this;
}
public function getEmailValidationErrorMessage(): ?string
{
return $this->emailValidationErrorMessage;
}
public function setEmailValidationErrorMessage(?string $emailValidationErrorMessage): self
{
$this->emailValidationErrorMessage = $emailValidationErrorMessage;
return $this;
}
public function getRequiredNPWZ(): ?bool
{
return $this->requiredNPWZ;
}
public function setRequiredNPWZ(?bool $requiredNPWZ): self
{
$this->requiredNPWZ = $requiredNPWZ;
return $this;
}
public function getLeadGroup(): ?LeadGroup
{
return $this->leadGroup;
}
public function setLeadGroup(?LeadGroup $leadGroup): self
{
$this->leadGroup = $leadGroup;
return $this;
}
/**
* @return Collection|ProductVariant[]
*/
public function getRelatedProductVariants(): Collection
{
return $this->relatedProductVariants;
}
public function addRelatedProductVariant(ProductVariant $relatedProductVariant): self
{
if (!$this->relatedProductVariants->contains($relatedProductVariant)) {
$this->relatedProductVariants[] = $relatedProductVariant;
}
return $this;
}
public function removeRelatedProductVariant(ProductVariant $relatedProductVariant): self
{
if ($this->relatedProductVariants->contains($relatedProductVariant)) {
$this->relatedProductVariants->removeElement($relatedProductVariant);
}
return $this;
}
public function getAdditionalStyle(): ?string
{
return $this->additionalStyle;
}
public function setAdditionalStyle(?string $additionalStyle): self
{
$this->additionalStyle = $additionalStyle;
return $this;
}
public function getRegInfo(): ?string
{
return $this->regInfo;
}
public function setRegInfo(?string $regInfo): self
{
$this->regInfo = $regInfo;
return $this;
}
public function getUseEventBok(): ?bool
{
return $this->useEventBok;
}
public function setUseEventBok(bool $useEventBok): self
{
$this->useEventBok = $useEventBok;
return $this;
}
public function getActionNumber(): ?string
{
return $this->actionNumber;
}
public function setActionNumber(?string $actionNumber): self
{
$this->actionNumber = $actionNumber;
return $this;
}
public function getOverrideActionNumber(): ?bool
{
return $this->overrideActionNumber;
}
public function setOverrideActionNumber(?bool $overrideActionNumber): self
{
$this->overrideActionNumber = $overrideActionNumber;
return $this;
}
public function getLegalRule(): ?string
{
return $this->legalRule;
}
public function setLegalRule(?string $legalRule): self
{
$this->legalRule = $legalRule;
return $this;
}
/**
* @return Collection|SalesManagoTagGroup[]
*/
public function getSalesManagoTagGroups(): Collection
{
return $this->salesManagoTagGroups;
}
public function addSalesManagoTagGroup(SalesManagoTagGroup $salesManagoTagGroup): self
{
if (!$this->salesManagoTagGroups->contains($salesManagoTagGroup)) {
$this->salesManagoTagGroups[] = $salesManagoTagGroup;
$salesManagoTagGroup->addLeadFormResponse($this);
}
return $this;
}
public function removeSalesManagoTagGroup(SalesManagoTagGroup $salesManagoTagGroup): self
{
if ($this->salesManagoTagGroups->contains($salesManagoTagGroup)) {
$this->salesManagoTagGroups->removeElement($salesManagoTagGroup);
$salesManagoTagGroup->removeLeadFormResponse($this);
}
return $this;
}
public function getAdditionalEventsDescription(): ?string
{
return $this->additionalEventsDescription;
}
public function setAdditionalEventsDescription(?string $additionalEventsDescription): self
{
$this->additionalEventsDescription = $additionalEventsDescription;
return $this;
}
/**
* @return Collection|Events[]
*/
public function getAdditionalEvents(): Collection
{
return $this->additionalEvents;
}
public function addAdditionalEvent(Events $additionalEvent): self
{
if (!$this->additionalEvents->contains($additionalEvent)) {
$this->additionalEvents[] = $additionalEvent;
}
return $this;
}
public function removeAdditionalEvent(Events $additionalEvent): self
{
if ($this->additionalEvents->contains($additionalEvent)) {
$this->additionalEvents->removeElement($additionalEvent);
}
return $this;
}
public function getColorBg(): ?string
{
return $this->colorBg;
}
public function setColorBg(?string $colorBg): self
{
$this->colorBg = $colorBg;
return $this;
}
public function getColorButton(): ?string
{
return $this->colorButton;
}
public function setColorButton(?string $colorButton): self
{
$this->colorButton = $colorButton;
return $this;
}
public function getColorFont(): ?string
{
return $this->colorFont;
}
public function setColorFont(?string $colorFont): self
{
$this->colorFont = $colorFont;
return $this;
}
public function getUseCustomColors(): ?bool
{
return $this->useCustomColors;
}
public function setUseCustomColors(?bool $useCustomColors): self
{
$this->useCustomColors = $useCustomColors;
return $this;
}
/**
* @return Collection|ContactSegmentation[]
*/
public function getContactSegmentations(): Collection
{
return $this->contactSegmentations;
}
public function addContactSegmentation(ContactSegmentation $contactSegmentation): self
{
if (!$this->contactSegmentations->contains($contactSegmentation)) {
$this->contactSegmentations[] = $contactSegmentation;
}
return $this;
}
public function removeContactSegmentation(ContactSegmentation $contactSegmentation): self
{
if ($this->contactSegmentations->contains($contactSegmentation)) {
$this->contactSegmentations->removeElement($contactSegmentation);
}
return $this;
}
public function getSalesmanagoTags(): array
{
return array_values(
$this->contactSegmentations
->map(function (ContactSegmentation $seg) {
return $seg->getSalesmanagoTag();
})
->filter(function (?string $tag) {
return $tag !== null && $tag !== '';
})
->toArray()
);
}
public function getSalesManagoSourceTag(): ?string
{
return 'BASIC_FORM';
}
public function isEnglish(): bool
{
return $this->isEnglish;
}
public function setIsEnglish(bool $isEnglish): self
{
$this->isEnglish = $isEnglish;
return $this;
}
}