<?php
namespace App\Entity;
use App\Repository\QuoteRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Validator\UniquePublishing;
/**
* @ORM\Entity(repositoryClass=QuoteRepository::class)
* @UniquePublishing
*/
class Quote extends BaseEntity
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $title;
/**
* @ORM\Column(type="text")
*/
private $content;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $startAt;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $endAt;
/**
* @ORM\Column(type="boolean")
*/
private $isPublished;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="quotes")
*/
private $publishedBy;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $publishedAt;
/**
* @ORM\OneToMany(targetEntity=SubsidiaryCompany::class, mappedBy="quote", fetch="EXTRA_LAZY")
*/
private $subsidiaryCompanies;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $author;
public function __construct()
{
$this->subsidiaryCompanies = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getTitle(): ?string
{
return $this->title;
}
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
public function getStartAt(): ?\DateTimeInterface
{
return $this->startAt;
}
public function setStartAt(?\DateTimeInterface $startAt): self
{
$this->startAt = $startAt;
return $this;
}
public function getEndAt(): ?\DateTimeInterface
{
return $this->endAt;
}
public function setEndAt(?\DateTimeInterface $endAt): self
{
$this->endAt = $endAt;
return $this;
}
public function isIsPublished(): ?bool
{
return $this->isPublished;
}
public function setIsPublished(bool $isPublished): self
{
$this->isPublished = $isPublished;
return $this;
}
public function getPublishedBy(): ?User
{
return $this->publishedBy;
}
public function setPublishedBy(?User $publishedBy): self
{
$this->publishedBy = $publishedBy;
return $this;
}
public function getPublishedAt(): ?\DateTimeInterface
{
return $this->publishedAt;
}
public function setPublishedAt(?\DateTimeInterface $publishedAt): self
{
$this->publishedAt = $publishedAt;
return $this;
}
/**
* @return Collection<int, SubsidiaryCompany>
*/
public function getSubsidiaryCompanies(): Collection
{
return $this->subsidiaryCompanies;
}
public function addSubsidiaryCompany(SubsidiaryCompany $subsidiaryCompany): self
{
if (!$this->subsidiaryCompanies->contains($subsidiaryCompany)) {
$this->subsidiaryCompanies[] = $subsidiaryCompany;
$subsidiaryCompany->setQuote($this);
}
return $this;
}
public function removeSubsidiaryCompany(SubsidiaryCompany $subsidiaryCompany): self
{
if ($this->subsidiaryCompanies->removeElement($subsidiaryCompany)) {
// set the owning side to null (unless already changed)
if ($subsidiaryCompany->getQuote() === $this) {
$subsidiaryCompany->setQuote(null);
}
}
return $this;
}
public function getAuthor(): ?string
{
return $this->author;
}
public function setAuthor(?string $author): self
{
$this->author = $author;
return $this;
}
}