<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="App\Repository\NewsletterRepository")
*
* @ORM\HasLifecycleCallbacks()
*/
class Newsletter
{
public function __construct()
{
$this->subscribers = new ArrayCollection();
$this->articles = new ArrayCollection();
$this->categories = new ArrayCollection();
$this->advertisingBanners = new ArrayCollection();
$this->advertisingBannerContainers = new ArrayCollection();
}
/**
* @ORM\Id()
*
* @ORM\GeneratedValue()
*
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", nullable=true, length=180)
*/
private $name = null;
/**
* @ORM\Column(type="integer", nullable=false)
*/
private $publication_status = 0;
/**
* @ORM\OneToMany(targetEntity="App\Entity\NewsletterSubscriber", mappedBy="newsletter")
*/
private $subscribers;
/**
* @ORM\Column(type="boolean")
*/
private $manual = false;
/**
* @ORM\Column(type="boolean")
*/
private $private = true;
/**
* @ORM\Column(type="datetime")
*/
private $schedule;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $schedule_date;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $frequency;
/**
* @ORM\Column(type="text", nullable=true)
*/
private $frequency_data;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $articles_count;
/**
* @ORM\Column(type="integer", nullable=true)
*/
private $max_article_age;
/**
* @ORM\OneToMany(targetEntity="App\Entity\NewsletterArticle", mappedBy="newsletter")
*/
private $articles;
/**
* @ORM\OneToMany(targetEntity="App\Entity\NewsletterCategory", mappedBy="newsletter")
*/
private $categories;
/**
* @ORM\Column(type="datetime", nullable=false)
*/
private $created_at;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $updated_at = null;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $deleted_at;
/**
* @ORM\Column(type="integer", nullable=false)
*/
private $is_default = 0;
/**
* @ORM\OneToMany(targetEntity="App\Entity\AdvertisingBanner", mappedBy="newsletter")
*/
private $advertisingBanners;
/**
* @ORM\OneToMany(targetEntity="App\Entity\AdvertisingBanner", mappedBy="target_newsletter")
*/
private $advertisingBannerContainers;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Offer", inversedBy="newsletters")
*
* @ORM\JoinColumn(nullable=true)
*/
private $offer = null;
/**
* @ORM\Column(type="string", nullable=true, length=180)
*/
private $sender_email;
/**
* @ORM\Column(type="string", nullable=true, length=180)
*/
private $sender_name;
public function getId(): ?int
{
return $this->id;
}
public function getOffer(): ?Offer
{
return $this->offer;
}
public function setOffer(?Offer $offer): self
{
$this->offer = $offer;
return $this;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
return $this;
}
public function getPublicationStatus()
{
return $this->publication_status;
}
public function setPublicationStatus($publication_status)
{
$this->publication_status = $publication_status;
return $this;
}
public function getCreatedAt(): \DateTimeInterface
{
return $this->created_at;
}
public function setCreatedAt(\DateTimeInterface $created_at): self
{
$this->created_at = $created_at;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updated_at;
}
public function setUpdatedAt(?\DateTimeInterface $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}
/**
* @ORM\PrePersist
*/
public function setCreatedAtValue()
{
$this->setCreatedAt(new \DateTime());
}
/**
* @ORM\PreUpdate
*/
public function setUpdatedAtValue()
{
$this->setUpdatedAt(new \DateTime());
}
public function getDeletedAt(): ?\DateTimeInterface
{
return $this->deleted_at;
}
public function setDeletedAt(?\DateTimeInterface $deleted_at): self
{
$this->deleted_at = $deleted_at;
return $this;
}
/**
* @return Collection|NewsletterSubscriber[]
*/
public function getSubscribers(): Collection
{
return $this->subscribers;
}
public function addSubscriber(NewsletterSubscriber $subscriber): self
{
if (!$this->subscribers->contains($subscriber)) {
$this->subscribers[] = $subscriber;
$subscriber->setNewsletter($this);
}
return $this;
}
public function removeSubscriber(NewsletterSubscriber $subscriber): self
{
if ($this->subscribers->contains($subscriber)) {
$this->subscribers->removeElement($subscriber);
// set the owning side to null (unless already changed)
if ($subscriber->getNewsletter() === $this) {
$subscriber->setNewsletter(null);
}
}
return $this;
}
public function getManual(): ?bool
{
return $this->manual;
}
public function setManual(bool $manual): self
{
$this->manual = $manual;
return $this;
}
public function getPrivate(): ?bool
{
return $this->private;
}
public function setPrivate(bool $private): self
{
$this->private = $private;
return $this;
}
public function getSchedule(): ?\DateTimeInterface
{
return $this->schedule;
}
public function setSchedule(\DateTimeInterface $schedule): self
{
$this->schedule = $schedule;
return $this;
}
public function getScheduleDate(): ?\DateTimeInterface
{
return $this->schedule_date;
}
public function setScheduleDate(?\DateTimeInterface $schedule_date): self
{
$this->schedule_date = $schedule_date;
return $this;
}
public function getFrequency(): ?string
{
return $this->frequency;
}
public function setFrequency(?string $frequency): self
{
$this->frequency = $frequency;
return $this;
}
public function getFrequencyData(): ?string
{
return $this->frequency_data;
}
public function setFrequencyData(?string $frequency_data): self
{
$this->frequency_data = $frequency_data;
return $this;
}
public function getArticlesCount(): ?int
{
return $this->articles_count;
}
public function setArticlesCount(?int $articles_count): self
{
$this->articles_count = $articles_count;
return $this;
}
public function getMaxArticleAge(): ?int
{
return $this->max_article_age;
}
public function setMaxArticleAge(?int $max_article_age): self
{
$this->max_article_age = $max_article_age;
return $this;
}
/**
* @return mixed
*/
public function getIsDefault()
{
return $this->is_default;
}
/**
* @param mixed $is_default
*
* @return Newsletter
*/
public function setIsDefault($is_default)
{
$this->is_default = $is_default;
return $this;
}
/**
* @return Collection|NewsletterArticle[]
*/
public function getArticles(): Collection
{
return $this->articles;
}
public function addArticle(NewsletterArticle $article): self
{
if (!$this->articles->contains($article)) {
$this->articles[] = $article;
$article->setNewsletter($this);
}
return $this;
}
public function removeArticle(NewsletterArticle $article): self
{
if ($this->articles->contains($article)) {
$this->articles->removeElement($article);
// set the owning side to null (unless already changed)
if ($article->getNewsletter() === $this) {
$article->setNewsletter(null);
}
}
return $this;
}
/**
* @return Collection|NewsletterCategory[]
*/
public function getCategories(): Collection
{
return $this->categories;
}
public function addCategory(NewsletterCategory $category): self
{
if (!$this->categories->contains($category)) {
$this->categories[] = $category;
$category->setNewsletter($this);
}
return $this;
}
public function removeCategory(NewsletterCategory $category): self
{
if ($this->categories->contains($category)) {
$this->categories->removeElement($category);
// set the owning side to null (unless already changed)
if ($category->getNewsletter() === $this) {
$category->setNewsletter(null);
}
}
return $this;
}
/**
* @return Collection|AdvertisingBanner[]
*/
public function getAdvertisingBanners(): Collection
{
return $this->advertisingBanners;
}
public function addAdvertisingBanner(AdvertisingBanner $advertisingBanner): self
{
if (!$this->advertisingBanners->contains($advertisingBanner)) {
$this->advertisingBanners[] = $advertisingBanner;
$advertisingBanner->setNewsletter($this);
}
return $this;
}
public function removeAdvertisingBanner(AdvertisingBanner $advertisingBanner): self
{
if ($this->advertisingBanners->contains($advertisingBanner)) {
$this->advertisingBanners->removeElement($advertisingBanner);
// set the owning side to null (unless already changed)
if ($advertisingBanner->getNewsletter() === $this) {
$advertisingBanner->setNewsletter(null);
}
}
return $this;
}
/**
* @return Collection|AdvertisingBanner[]
*/
public function getAdvertisingBannerContainers(): Collection
{
return $this->advertisingBannerContainers;
}
public function addAdvertisingBannerContainer(AdvertisingBanner $advertisingBannerContainer): self
{
if (!$this->advertisingBannerContainers->contains($advertisingBannerContainer)) {
$this->advertisingBannerContainers[] = $advertisingBannerContainer;
$advertisingBannerContainer->setTargetNewsletter($this);
}
return $this;
}
public function removeAdvertisingBannerContainer(AdvertisingBanner $advertisingBannerContainer): self
{
if ($this->advertisingBannerContainers->contains($advertisingBannerContainer)) {
$this->advertisingBannerContainers->removeElement($advertisingBannerContainer);
// set the owning side to null (unless already changed)
if ($advertisingBannerContainer->getTargetNewsletter() === $this) {
$advertisingBannerContainer->setTargetNewsletter(null);
}
}
return $this;
}
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Article", inversedBy="newsletter_highlights")
*/
private $highlighted_article;
/**
* @return mixed
*/
public function getHighlightedArticle()
{
return $this->highlighted_article;
}
/**
* @param mixed $highlighted_article
*
* @return Newsletter
*/
public function setHighlightedArticle($highlighted_article)
{
$this->highlighted_article = $highlighted_article;
return $this;
}
public function hasSender()
{
return $this->sender_email || $this->sender_name;
}
public function setSender($email, $name)
{
$this->sender_email = $email;
$this->sender_name = $name;
return $this;
}
public function getSender()
{
return [
'email' => $this->sender_email,
'name' => $this->sender_name,
];
}
}