<?php
namespace App\Entity;
use App\Repository\CountryRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use JMS\Serializer\Annotation as Serializer;
/**
* @ORM\Entity(repositoryClass=CountryRepository::class)
* @Serializer\ExclusionPolicy("ALL")
*/
class Country
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Serializer\Expose
*/
private $id;
/**
* @ORM\Column(type="string", length=191, unique=true)
* @Serializer\Expose
*/
private $name;
/**
* @ORM\OneToMany(targetEntity=Visitor::class, mappedBy="country")
*/
private $visitors;
/**
* @ORM\OneToMany(targetEntity=User::class, mappedBy="country")
*/
private $users;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Serializer\Expose
*/
private $code;
/**
* @Gedmo\Slug(fields={"name"})
* @ORM\Column(length=191)
*/
private $slug;
/**
* @ORM\OneToMany(targetEntity=SubsidiaryCompany::class, mappedBy="country")
*/
private $subsidiaryCompanies;
public function __construct()
{
$this->visitors = new ArrayCollection();
$this->users = new ArrayCollection();
$this->subsidiaryCompanies = 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;
}
/**
* @return Collection<int, Visitor>
*/
public function getVisitors(): Collection
{
return $this->visitors;
}
public function addVisitor(Visitor $visitor): self
{
if (!$this->visitors->contains($visitor)) {
$this->visitors[] = $visitor;
$visitor->setCountry($this);
}
return $this;
}
public function removeVisitor(Visitor $visitor): self
{
if ($this->visitors->removeElement($visitor)) {
// set the owning side to null (unless already changed)
if ($visitor->getCountry() === $this) {
$visitor->setCountry(null);
}
}
return $this;
}
/**
* @return Collection<int, User>
*/
public function getUsers(): Collection
{
return $this->users;
}
public function addUser(User $user): self
{
if (!$this->users->contains($user)) {
$this->users[] = $user;
$user->setCountry($this);
}
return $this;
}
public function removeUser(User $user): self
{
if ($this->users->removeElement($user)) {
// set the owning side to null (unless already changed)
if ($user->getCountry() === $this) {
$user->setCountry(null);
}
}
return $this;
}
public function getCode(): ?string
{
return $this->code;
}
public function setCode(?string $code): self
{
$this->code = $code;
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->setCountry($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->getCountry() === $this) {
$subsidiaryCompany->setCountry(null);
}
}
return $this;
}
}