<?php
namespace App\CasinoBundle\Entity;
use App\CmsBundle\Entity\PublishedTrait;
use App\CmsBundle\Entity\SlugTrait;
use App\CmsBundle\Entity\TimeStampedTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use App\CmsBundle\Entity\IdTrait;
/**
* @ORM\Entity(repositoryClass="App\CasinoBundle\Repository\CountryRepository")
* @ORM\Table(name="country",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="country_alpha2_uindex", columns={"alpha2"}),
* @ORM\UniqueConstraint(name="country_alpha3_uindex", columns={"alpha3"}),
* @ORM\UniqueConstraint(name="country_name_uindex", columns={"name"}),
* @ORM\UniqueConstraint(name="country_slug_uindex", columns={"slug"}),
* @ORM\UniqueConstraint(name="country_capitail_city_uindex", columns={"capital_city_id"})
* },
* indexes={
* @ORM\Index(name="country_lat_index", columns={"lat"}),
* @ORM\Index(name="country_lng_index", columns={"lng"}),
* @ORM\Index(name="country_published_index", columns={"published"})
* }
*)
* @ORM\HasLifecycleCallbacks()
*/
class Country
{
use IdTrait;
use NameTrait;
use SlugTrait;
use PublishedTrait;
use AliasTrait;
use TimeStampedTrait;
/**
* @var string|null
*
* @ORM\Column(name="alpha2", type="string", length=2, nullable=true)
*/
private ?string $alpha2;
/**
* @var string|null
*
* @ORM\Column(name="alpha3", type="string", length=3, nullable=true)
*/
private ?string $alpha3;
/**
* @var float|null
*
* @ORM\Column(name="lat", type="decimal", precision=11, scale=8, nullable=true)
*/
private ?float $lat;
/**
* @var float|null
*
* @ORM\Column(name="lng", type="decimal", precision=11, scale=8, nullable=true)
*/
private ?float $lng;
/**
* @ORM\OneToOne(targetEntity="App\CasinoBundle\Entity\City")
* @ORM\JoinColumn(nullable=true, name="capital_city_id")
*/
private ?City $capitalCity;
/**
* @var string|null
*
* @ORM\Column(name="continent", type="string", length=2, nullable=true)
*/
private ?string $continent;
/**
* @var string|null
*
* @ORM\Column(name="nationality", type="string", length=255, nullable=true)
*/
private ?string $nationality;
/**
* @ORM\ManyToMany(targetEntity="Currency", inversedBy="countries", cascade={"persist"})
*/
private Collection $currencies;
/**
* @ORM\ManyToMany(targetEntity="Language", inversedBy="countries")
*/
private Collection $languages;
/**
* @ORM\OneToMany(targetEntity="City", mappedBy="country")
*/
private Collection $cities;
/**
* @ORM\OneToMany(targetEntity="State", mappedBy="country")
*/
private Collection $states;
/**
* @ORM\ManyToOne(targetEntity="Region", inversedBy="countries")
*/
private ?Region $region;
/**
* @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Visit", mappedBy="country")
*/
private Collection $visits;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="allowedCountries")
*/
private Collection $allowedCasinos;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="restrictedCountries")
*/
private Collection $restrictedCasinos;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="restrictedCountriesFact")
*/
private Collection $restrictedCasinosFact;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="jurisdictions")
*/
private Collection $jurisdictionCasinos;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="brandRegistration")
*/
private Collection $brandRegistrationCasinos;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="serverLocation")
*/
private Collection $serverLocationCasinos;
/**
* @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Alias", mappedBy="country", cascade={"persist"}, orphanRemoval=true)
*/
private Collection $aliases;
/**
* @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\OfflineCasino", mappedBy="country", cascade={"persist"}, orphanRemoval=true)
*/
private Collection $offlineCasinos;
/**
* @var int|null
*
* @ORM\Column(name="brand_reputation", type="integer", nullable=true)
*/
private ?int $brandReputation;
/**
* @var int|null
*
* @ORM\Column(name="server_security_level", type="integer", nullable=true)
*/
private ?int $serverSecurityLevel;
/**
* @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Licence", mappedBy="country", cascade={"persist"}, orphanRemoval=true)
*/
private Collection $licences;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\NewBonus", mappedBy="countries", cascade={"persist"})
*/
private Collection $newBonuses;
public function __construct()
{
$this->currencies = new ArrayCollection();
$this->languages = new ArrayCollection();
$this->cities = new ArrayCollection();
$this->states = new ArrayCollection();
$this->visits = new ArrayCollection();
$this->allowedCasinos = new ArrayCollection();
$this->restrictedCasinos = new ArrayCollection();
$this->restrictedCasinosFact = new ArrayCollection();
$this->jurisdictionCasinos = new ArrayCollection();
$this->brandRegistrationCasinos = new ArrayCollection();
$this->serverLocationCasinos = new ArrayCollection();
$this->aliases = new ArrayCollection();
$this->licences = new ArrayCollection();
$this->newBonuses = new ArrayCollection();
}
/**
* @return string
*/
public function __toString()
{
return $this->name;
}
/**
* @return string
*/
public function getNameWithAlpha2(): string
{
return $this->getName() . ' - ' . $this->getAlpha2();
}
/**
* @return Collection
*/
public function getCities(): Collection
{
return $this->cities;
}
/**
* @param City $city
* @return $this
*/
public function addCity(City $city): self
{
if (!$this->cities->contains($city)) {
$this->cities[] = $city;
}
return $this;
}
/**
* @param City $city
* @return $this
*/
public function removeCity(City $city): self
{
if ($this->cities->contains($city)) {
$this->cities->removeElement($city);
}
return $this;
}
/**
* @return ArrayCollection
*/
public function getStates()
{
return $this->states;
}
/**
* @return string|null
*/
public function getAlpha2(): ?string
{
return $this->alpha2;
}
/**
* @param string $alpha2
* @return $this
*/
public function setAlpha2(string $alpha2): self
{
$this->alpha2 = $alpha2;
return $this;
}
/**
* @return null|string
*/
public function getAlpha3(): ?string
{
return $this->alpha3;
}
/**
* @param string|null $alpha3
* @return $this
*/
public function setAlpha3(?string $alpha3): self
{
$this->alpha3 = $alpha3;
return $this;
}
/**
* @return float|null
*/
public function getLat(): ?float
{
return $this->lat;
}
/**
* @param float|null $lat
* @return $this
*/
public function setLat(?float $lat): self
{
$this->lat = $lat;
return $this;
}
/**
* @return float|null
*/
public function getLng(): ?float
{
return $this->lng;
}
/**
* @param float|null $lng
* @return $this
*/
public function setLng(?float $lng): self
{
$this->lng = $lng;
return $this;
}
/**
* @return null|string
*/
public function getContinent(): ?string
{
return $this->continent;
}
/**
* @param null|string $continent
*/
public function setContinent(?string $continent): void
{
$this->continent = $continent;
}
/**
* @return null|string
*/
public function getNationality(): ?string
{
return $this->nationality;
}
/**
* @param null|string $nationality
*/
public function setNationality(?string $nationality): void
{
$this->nationality = $nationality;
}
/**
* @return Collection
*/
public function getCurrencies(): Collection
{
return $this->currencies;
}
/**
* @param Currency $currency
* @return $this
*/
public function addCurrency(Currency $currency): self
{
if (!$this->currencies->contains($currency)) {
$this->currencies[] = $currency;
}
return $this;
}
/**
* @param Currency $currency
* @return $this
*/
public function removeCurrency(Currency $currency): self
{
if ($this->currencies->contains($currency)) {
$this->currencies->removeElement($currency);
}
return $this;
}
/**
* @return Collection
*/
public function getLanguages(): Collection
{
return $this->languages;
}
/**
* @param Language $language
* @return $this
*/
public function addLanguage(Language $language): self
{
if (!$this->languages->contains($language)) {
$this->languages[] = $language;
}
return $this;
}
/**
* @param Language $language
* @return $this
*/
public function removeLanguage(Language $language): self
{
if ($this->languages->contains($language)) {
$this->languages->removeElement($language);
}
return $this;
}
/**
* @return Collection
*/
public function getVisits(): Collection
{
return $this->visits;
}
/**
* @param Visit $visit
* @return $this
*/
public function addVisit(Visit $visit): self
{
if (!$this->visits->contains($visit)) {
$this->visits[] = $visit;
$visit->setCountry($this);
}
return $this;
}
/**
* @param Visit $visit
* @return $this
*/
public function removeVisit(Visit $visit): self
{
if ($this->visits->contains($visit)) {
$this->visits->removeElement($visit);
// set the owning side to null (unless already changed)
if ($visit->getCountry() === $this) {
$visit->setCountry(null);
}
}
return $this;
}
/**
* @return Collection
*/
public function getAllowedCasinos(): Collection
{
return $this->allowedCasinos;
}
/**
* @param Casino $casino
* @return $this
*/
public function addAllowedCasino(Casino $casino): self
{
if (!$this->allowedCasinos->contains($casino)) {
$this->allowedCasinos[] = $casino;
$casino->addAllowedCountry($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeAllowedCasino(Casino $casino): self
{
if ($this->allowedCasinos->contains($casino)) {
$this->allowedCasinos->removeElement($casino);
$casino->removeAllowedCountry($this);
}
return $this;
}
/**
* @return Collection
*/
public function getRestrictedCasinos(): Collection
{
return $this->restrictedCasinos;
}
/**
* @param Casino $casino
* @return $this
*/
public function addRestrictedCasino(Casino $casino): self
{
if (!$this->restrictedCasinos->contains($casino)) {
$this->restrictedCasinos[] = $casino;
$casino->addRestrictedCountry($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeRestrictedCasino(Casino $casino): self
{
if ($this->restrictedCasinos->contains($casino)) {
$this->restrictedCasinos->removeElement($casino);
$casino->removeRestrictedCountry($this);
}
return $this;
}
/**
* @return Collection
*/
public function getRestrictedCasinosFact(): Collection
{
if (is_null($this->restrictedCasinosFact)) $this->restrictedCasinosFact = new ArrayCollection();
return $this->restrictedCasinosFact;
}
/**
* @param Casino $casino
* @return $this
*/
public function addRestrictedCasinoFact(Casino $casino): self
{
if (!$this->getRestrictedCasinosFact()->contains($casino)) {
$this->restrictedCasinosFact[] = $casino;
$casino->addRestrictedCountryFact($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeRestrictedCasinoFact(Casino $casino): self
{
if ($this->getRestrictedCasinosFact()->contains($casino)) {
$this->restrictedCasinosFact->removeElement($casino);
$casino->removeRestrictedCountryFact($this);
}
return $this;
}
/**
* @return Collection
*/
public function getJurisdictionCasinos(): Collection
{
return $this->jurisdictionCasinos;
}
/**
* @param Casino $casino
* @return $this
*/
public function addJurisdictionCasino(Casino $casino): self
{
if (!$this->jurisdictionCasinos->contains($casino)) {
$this->jurisdictionCasinos[] = $casino;
$casino->addJurisdiction($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeJurisdictionCasino(Casino $casino): self
{
if ($this->jurisdictionCasinos->contains($casino)) {
$this->jurisdictionCasinos->removeElement($casino);
$casino->removeJurisdiction($this);
}
return $this;
}
/**
* @return Collection
*/
public function getBrandRegistrationCasinos(): Collection
{
return $this->brandRegistrationCasinos;
}
/**
* @param Casino $casino
* @return $this
*/
public function addBrandRegistrationCasino(Casino $casino): self
{
if (!$this->brandRegistrationCasinos->contains($casino)) {
$this->brandRegistrationCasinos[] = $casino;
$casino->addBrandRegistration($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeBrandRegistrationCasino(Casino $casino): self
{
if ($this->brandRegistrationCasinos->contains($casino)) {
$this->brandRegistrationCasinos->removeElement($casino);
$casino->removeBrandRegistration($this);
}
return $this;
}
/**
* @return Collection
*/
public function getServerLocationCasinos(): Collection
{
return $this->serverLocationCasinos;
}
/**
* @param Casino $casino
* @return $this
*/
public function addServerLocationCasino(Casino $casino): self
{
if (!$this->serverLocationCasinos->contains($casino)) {
$this->serverLocationCasinos[] = $casino;
$casino->addServerLocation($this);
}
return $this;
}
/**
* @param Casino $casino
* @return $this
*/
public function removeServerLocationCasino(Casino $casino): self
{
if ($this->serverLocationCasinos->contains($casino)) {
$this->serverLocationCasinos->removeElement($casino);
$casino->removeServerLocation($this);
}
return $this;
}
/**
* @param City|null $capitalCity
* @return $this
*/
public function setCapitalCity(?City $capitalCity): self
{
$this->capitalCity = $capitalCity;
return $this;
}
/**
* @return City|null
*/
public function getCapitalCity(): ?City
{
return $this->capitalCity;
}
/**
* @param Region|null $region
* @return $this
*/
public function setRegion(?Region $region): self
{
$this->region = $region;
return $this;
}
/**
* @return Region|null
*/
public function getRegion(): ?Region
{
return $this->region;
}
/**
* @return Collection
*/
public function getLicences(): Collection
{
return $this->licences;
}
/**
* @param Licence $licence
* @return $this
*/
public function addLicence(Licence $licence): self
{
if (!$this->licences->contains($licence)) {
$this->licences[] = $licence;
$licence->setCountry($this);
}
return $this;
}
/**
* @param Licence $licence
* @return $this
*/
public function removeLicence(Licence $licence): self
{
if ($this->licences->contains($licence)) {
$this->licences->removeElement($licence);
$licence->setCountry(null);
}
return $this;
}
/**
* @param int $brandReputation
* @return $this
*/
public function setBrandReputation(int $brandReputation): self
{
$this->brandReputation = $brandReputation;
return $this;
}
/**
* @return int|null
*/
public function getBrandReputation(): ?int
{
return $this->brandReputation;
}
/**
* @param int $serverSecurityLevel
* @return $this
*/
public function setServerSecurityLevel(int $serverSecurityLevel): self
{
$this->serverSecurityLevel = $serverSecurityLevel;
return $this;
}
/**
* @return int|null
*/
public function getServerSecurityLevel(): ?int
{
return $this->serverSecurityLevel;
}
/**
* @return Collection
*/
public function getNewBonuses(): Collection
{
return $this->newBonuses;
}
/**
* @param NewBonus $newBonus
* @return $this
*/
public function addNewBonus(NewBonus $newBonus): self
{
if (!$this->newBonuses->contains($newBonus)) {
$this->newBonuses[] = $newBonus;
$newBonus->addCountry($this);
}
return $this;
}
/**
* @param NewBonus $newBonus
* @return $this
*/
public function removeNewBonus(NewBonus $newBonus): self
{
if ($this->newBonuses->contains($newBonus)) {
$this->newBonuses->removeElement($newBonus);
$newBonus->removeCountry($this);
}
return $this;
}
}