<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use DateTime;
/**
* @ORM\Entity(repositoryClass="App\Repository\AnnonceRepository")
*/
class Annonce
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private ?int $id;
/**
* @ORM\Column(type="string", length=255)
*/
private ?string $name;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $publicationMode;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $annonceurName;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $annonceurEmail;
/**
* @ORM\Column(type="datetime")
*/
private ?DateTime $startDate;
/**
* @ORM\Column(type="datetime")
*/
private ?DateTime $endDate;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private ?string $link;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $linkTranslations;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $displayCount;
/**
* @ORM\Column(type="json", nullable=true)
*/
private ?array $clickCount;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?DateTime $createdAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private ?DateTime $updatedAt;
/**
* @ORM\Column(type="integer", nullable=true, options={"default":0, "comment":"code de statut : 0=OK"})
*/
private ?int $state;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\AnnonceFormat", inversedBy="annonces")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="format_id", referencedColumnName="id")
* })
*/
private ?AnnonceFormat $annonceFormat;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="annonces")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="owner_id", referencedColumnName="id")
* })
*/
private $owner;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\DnsitEntity", inversedBy="annonces")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="entity_id", referencedColumnName="id")
* })
*/
private $entity;
// /**
// * @ORM\ManyToOne(targetEntity="App\Entity\Media", inversedBy="annonces")
// * @ORM\JoinColumns({
// * @ORM\JoinColumn(name="media_id", referencedColumnName="id")
// * })
// */
// private ?Media $media;
/**
* @ORM\Column(type="json", nullable=true, options={"comment":"Images (+rs langues)"})
*/
private $images;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\TagAnnonce", inversedBy="annonces")
*/
private $tags;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\AnnonceSpace", mappedBy="annonces")
*/
private $annonceSpaces;
/**
* @var \Doctrine\Common\Collections\Collection
* @ORM\OneToMany(targetEntity="App\Entity\EditionModeleRubriqueAnnonce", mappedBy="annonce", cascade={"persist","remove"}, orphanRemoval=true)
*/
private $rubriqueAnnonces;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\WebList", inversedBy="annonces")
*/
private $webLists;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Diaporama", inversedBy="annonces")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="display_id", referencedColumnName="id")
* })
*/
private ?Diaporama $diaporama;
public function __construct()
{
$this->tags = new ArrayCollection();
$this->annonceSpaces = new ArrayCollection();
$this->rubriqueAnnonces = new ArrayCollection();
$this->webLists = new ArrayCollection();
}
public function getId() : ?int
{
return $this->id;
}
public function getName() : ?string
{
return $this->name;
}
public function setName(?string $name) : self
{
$this->name = $name;
return $this;
}
public function getPublicationMode() : ?string
{
return $this->publicationMode;
}
public function setPublicationMode(?string $publicationMode) : self
{
$this->publicationMode = $publicationMode;
return $this;
}
public function getAnnonceurName() : ?string
{
return $this->annonceurName;
}
public function setAnnonceurName(?string $annonceurName) : self
{
$this->annonceurName = $annonceurName;
return $this;
}
public function getAnnonceurEmail() : ?string
{
return $this->annonceurEmail;
}
public function setAnnonceurEmail(?string $annonceurEmail) : self
{
$this->annonceurEmail = $annonceurEmail;
return $this;
}
public function getStartDate() : ?DateTime
{
return $this->startDate;
}
public function setStartDate(?DateTime $startDate) : self
{
$this->startDate = $startDate;
return $this;
}
public function getEndDate() : ?DateTime
{
return $this->endDate;
}
public function setEndDate(?DateTime $endDate) : self
{
$this->endDate = $endDate;
return $this;
}
public function getLink() : ?string
{
return $this->link;
}
public function setLink(?string $link) : self
{
$this->link = $link;
return $this;
}
public function getLinkTranslations() : ?array
{
return $this->linkTranslations;
}
public function setLinkTranslations(?array $linkTranslations) : self
{
$this->linkTranslations = $linkTranslations;
return $this;
}
public function getDisplayCount() : ?array
{
return $this->displayCount;
}
public function setDisplayCount(?array $displayCount) : self
{
$this->displayCount = $displayCount;
return $this;
}
public function getClickCount() : ?array
{
return $this->clickCount;
}
public function setClickCount(?array $clickCount) : self
{
$this->clickCount = $clickCount;
return $this;
}
public function getAnnonceFormat() : ?AnnonceFormat
{
return $this->annonceFormat;
}
public function setAnnonceFormat(?AnnonceFormat $annonceFormat) : self
{
$this->annonceFormat = $annonceFormat;
return $this;
}
public function getOwner() : ?User
{
return $this->owner;
}
public function setOwner(?User $owner) : self
{
$this->owner = $owner;
return $this;
}
public function getEntity() : ?DnsitEntity
{
return $this->entity;
}
public function setEntity(?DnsitEntity $entity) : self
{
$this->entity = $entity;
return $this;
}
// public function getMedia() : ?Media
// {
// return $this->media;
// }
// public function setMedia(?Media $media) : self
// {
// $this->media = $media;
// return $this;
// }
public function getImages() : ?array
{
return $this->images;
}
public function setImages(?array $images) : self
{
$this->images = $images;
return $this;
}
/**
* @return Collection|TagAnnonce[]
*/
public function getTags() : Collection
{
return $this->tags;
}
public function addTag(TagAnnonce $tag) : self
{
if (!$this->tags->contains($tag)) {
$this->tags[] = $tag;
}
return $this;
}
public function removeTag(TagAnnonce $tag) : self
{
if ($this->tags->contains($tag)) {
$this->tags->removeElement($tag);
}
return $this;
}
/**
* @return Collection|AnnonceSpace[]
*/
public function getAnnonceSpaces() : Collection
{
return $this->annonceSpaces;
}
public function addAnnonceSpace(AnnonceSpace $annonceSpace) : self
{
if (!$this->annonceSpaces->contains($annonceSpace)) {
$this->annonceSpaces[] = $annonceSpace;
}
return $this;
}
public function removeAnnonceSpace(AnnonceSpace $annonceSpace) : self
{
if ($this->annonceSpaces->contains($annonceSpace)) {
$this->annonceSpaces->removeElement($annonceSpace);
}
return $this;
}
/**
* @return Collection|EditionModeleRubriqueAnnonce[]
*/
public function getRubriqueAnnonces(): Collection
{
return $this->rubriqueAnnonces;
}
public function addRubriqueAnnonce(EditionModeleRubriqueAnnonce $rubriqueAnnonce): self
{
if (!$this->rubriqueAnnonces->contains($rubriqueAnnonce)) {
$this->rubriqueAnnonces[] = $rubriqueAnnonce;
// ajouter aussi la relation correspondante de l'autre côté pour éviter les incohérences
$rubriqueAnnonce->setAnnonce($this);
}
return $this;
}
public function removeRubriqueAnnonce(EditionModeleRubriqueAnnonce $rubriqueAnnonce): self
{
if ($this->rubriqueAnnonces->contains($rubriqueAnnonce)) {
$this->rubriqueAnnonces->removeElement($rubriqueAnnonce);
// passer l'autre côté à null pour éviter les incohérences
if ($rubriqueAnnonce->getAnnonce() === $this) {
$rubriqueAnnonce->setAnnonce(null);
}
}
return $this;
}
/**
* @return Collection|WebList[]
*/
public function getWebLists() : Collection
{
return $this->webLists;
}
public function addWebList(WebList $webList) : self
{
if (!$this->webLists->contains($webList)) {
$this->webLists[] = $webList;
}
return $this;
}
public function removeWebList(WebList $webList) : self
{
if ($this->webLists->contains($webList)) {
$this->webLists->removeElement($webList);
}
return $this;
}
public function getDiaporama() : ?Diaporama
{
return $this->diaporama;
}
public function setDiaporama(?Diaporama $diaporama) : self
{
$this->diaporama = $diaporama;
return $this;
}
public function getCreatedAt() : ?DateTime
{
return $this->createdAt;
}
public function setCreatedAt(?DateTime $createdAt) : self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt() : ?DateTime
{
return $this->updatedAt;
}
public function setUpdatedAt(?DateTime $updatedAt) : self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getState() : ?int
{
return $this->state;
}
public function setState(?int $state) : self
{
$this->state = $state;
return $this;
}
}