<?php
namespace App\Entity;
use App\Repository\TransactionalEmailContentRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass=TransactionalEmailContentRepository::class)
*
* @UniqueEntity(
* fields={"slug"},
* message="Ce slug existe déjà."
* )
*/
class TransactionalEmailContent
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private ?int $id = NULL;
/**
* @ORM\Column(type="string", length=255)
*/
private ?string $slug = NULL;
/**
* @ORM\Column(type="string", length=255)
*/
private ?string $subject = NULL;
/**
* @ORM\Column(type="text")
*/
private ?string $content = NULL;
/**
* @ORM\Column(type="boolean")
*/
private bool $enabled = TRUE;
/**
* @ORM\Column(type="json", nullable=true)
*/
private array $cc = [];
/**
* @ORM\Column(type="boolean", options={"default":true})
*/
private bool $centerContent;
/**
* @ORM\OneToMany(targetEntity=TransactionalEmailTranslation::class, mappedBy="transactionalEmailContent", cascade={"persist","remove"})
*
*/
private Collection $transactionalEmailTranslations;
/**
* @ORM\OneToMany(
* targetEntity="TransactionalEmailContent",
* mappedBy="parent",
* cascade={"persist"}
* )
*/
private Collection $children;
/**
* @ORM\ManyToOne(
* targetEntity="TransactionalEmailContent",
* inversedBy="children"
* )
* @ORM\JoinColumn(
* name="parent_id",
* referencedColumnName="id",
* nullable=true,
* onDelete="SET NULL"
* )
*/
private ?self $parent = null;
public function __construct()
{
$this->transactionalEmailTranslations = new ArrayCollection();
$this->children = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getSlug(): ?string
{
return $this->slug;
}
public function setSlug(string $slug): self
{
$this->slug = $slug;
return $this;
}
public function getSubject(): ?string
{
return $this->subject;
}
public function setSubject(string $subject): self
{
$this->subject = $subject;
return $this;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
public function isEnabled(): ?bool
{
return $this->enabled;
}
public function setEnabled(bool $enabled): self
{
$this->enabled = $enabled;
return $this;
}
public function getCc(): ?array
{
return $this->cc;
}
public function setCc(?array $cc): self
{
$this->cc = $cc;
return $this;
}
public function getCenterContent(): bool
{
return $this->centerContent;
}
public function setCenterContent( bool $centerContent ): self
{
$this->centerContent = $centerContent;
return $this;
}
/**
* @return Collection<int, TransactionalEmailTranslation>
*/
public function getTransactionalEmailTranslations(): Collection
{
return $this->transactionalEmailTranslations;
}
/**
* @param iterable<TransactionalEmailTranslation> $transactionalEmailTranslations
*
* @return $this
*/
public function setTransactionalEmailTranslations(iterable $transactionalEmailTranslations): self
{
foreach($this->transactionalEmailTranslations as $transactionalEmailTranslation)
{
$this->removeTransactionalEmailTranslation($transactionalEmailTranslation);
}
foreach($transactionalEmailTranslations as $transactionalEmailTranslation)
{
$this->addTransactionalEmailTranslation($transactionalEmailTranslation);
}
return $this;
}
public function addTransactionalEmailTranslation(TransactionalEmailTranslation $transactionalEmailTranslation): self
{
if (!$this->transactionalEmailTranslations->contains($transactionalEmailTranslation)) {
$this->transactionalEmailTranslations[] = $transactionalEmailTranslation;
$transactionalEmailTranslation->setTransactionalEmailContent($this);
}
return $this;
}
public function removeTransactionalEmailTranslation(TransactionalEmailTranslation $transactionalEmailTranslation): self
{
if ($this->transactionalEmailTranslations->removeElement($transactionalEmailTranslation)) {
// set the owning side to null (unless already changed)
if ($transactionalEmailTranslation->getTransactionalEmailContent() === $this) {
$transactionalEmailTranslation->setTransactionalEmailContent(NULL);
}
}
return $this;
}
/**
* @return Collection|TransactionalEmailContent[]
*/
public function getChildren(): Collection
{
return $this->children;
}
public function addChild(TransactionalEmailContent $child): self
{
if (!$this->children->contains($child)) {
$this->children->add($child);
$child->setParent($this);
}
return $this;
}
public function removeChild(TransactionalEmailContent $child): self
{
if ($this->children->removeElement($child)) {
if ($child->getParent() === $this) {
$child->setParent(null);
}
}
return $this;
}
public function getParent(): ?TransactionalEmailContent
{
return $this->parent;
}
public function setParent(?TransactionalEmailContent $parent): self
{
$this->parent = $parent;
return $this;
}
}