<?php
namespace App\Entity;
use App\Repository\DirectorRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\Validator\UniquePublishing;
/**
* @ORM\Entity(repositoryClass=DirectorRepository::class)
* @UniquePublishing
*/
class Director extends BaseEntity
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $lastname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $firstname;
/**
* @ORM\OneToOne(targetEntity=ImageManager::class, cascade={"persist", "remove"})
*/
private $photo;
/**
* @ORM\Column(type="string", length=255)
*/
private $wordTitle;
/**
* @ORM\Column(type="text")
*/
private $wordContent;
/**
* @ORM\Column(type="boolean")
*/
private $isPublished;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $pusblishedAt;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="directors")
*/
private $publishedBy;
/**
* @ORM\OneToMany(targetEntity=SubsidiaryCompany::class, mappedBy="director")
*/
private $subsidiaryCompanies;
public function __construct()
{
$this->subsidiaryCompanies = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getLastname(): ?string
{
return $this->lastname;
}
public function setLastname(?string $lastname): self
{
$this->lastname = $lastname;
return $this;
}
public function getFirstname(): ?string
{
return $this->firstname;
}
public function setFirstname(?string $firstname): self
{
$this->firstname = $firstname;
return $this;
}
public function getPhoto(): ?ImageManager
{
return $this->photo;
}
public function setPhoto(?ImageManager $photo): self
{
$this->photo = $photo;
return $this;
}
public function getWordTitle(): ?string
{
return $this->wordTitle;
}
public function setWordTitle(string $wordTitle): self
{
$this->wordTitle = $wordTitle;
return $this;
}
public function getWordContent(): ?string
{
return $this->wordContent;
}
public function setWordContent(string $wordContent): self
{
$this->wordContent = $wordContent;
return $this;
}
public function isIsPublished(): ?bool
{
return $this->isPublished;
}
public function setIsPublished(bool $isPublished): self
{
$this->isPublished = $isPublished;
return $this;
}
public function getPusblishedAt(): ?\DateTimeInterface
{
return $this->pusblishedAt;
}
public function setPusblishedAt(?\DateTimeInterface $pusblishedAt): self
{
$this->pusblishedAt = $pusblishedAt;
return $this;
}
public function getPublishedBy(): ?User
{
return $this->publishedBy;
}
public function setPublishedBy(?User $publishedBy): self
{
$this->publishedBy = $publishedBy;
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->setDirector($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->getDirector() === $this) {
$subsidiaryCompany->setDirector(null);
}
}
return $this;
}
}