<?php
namespace App\CasinoBundle\Entity;
use App\CmsBundle\Entity\PositionTrait;
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;
/**
* PaymentMethod
*
* @ORM\Table(
* name="payment_method",
* uniqueConstraints={
* @ORM\UniqueConstraint(name="payment_name_uindex", columns={"name"}),
* @ORM\UniqueConstraint(name="payment_slug_uindex", columns={"slug"})
* },
* indexes={
* @ORM\Index(name="payment_published_index", columns={"published"}),
* @ORM\Index(name="payment_position_index", columns={"position"})
* }
* )
* @ORM\Entity(repositoryClass="App\CasinoBundle\Repository\PaymentMethodRepository")
* @ORM\Cache(usage="NONSTRICT_READ_WRITE", region="one_day")
* @ORM\HasLifecycleCallbacks()
*/
class PaymentMethod
{
use SlugTrait;
use PositionTrait;
use AliasTrait;
use LogoTrait;
use PublishedTrait;
use TimeStampedTrait;
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, nullable=false)
*/
private $name;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="depositMethods", cascade={"persist"}, fetch="EXTRA_LAZY")
*/
private $casinosWithDepositMethods;
/**
* @ORM\ManyToMany(targetEntity="App\CasinoBundle\Entity\Casino", mappedBy="withdrawalMethods", cascade={"persist"}, fetch="EXTRA_LAZY")
*/
private $casinosWithWithdrawalMethods;
/**
* @ORM\OneToMany(targetEntity="App\CasinoBundle\Entity\Alias", mappedBy="paymentMethod", cascade={"persist", "remove"}, orphanRemoval=true)
*/
private Collection $aliases;
public function __construct()
{
$this->casinosWithDepositMethods = new ArrayCollection();
$this->casinosWithWithdrawalMethods = new ArrayCollection();
$this->aliases = new ArrayCollection();
}
public function __toString(): string
{
return $this->name;
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*/
public function setId(int $id): void
{
$this->id = $id;
}
/**
* @return string
*/
public function getName(): string
{
return $this->name;
}
/**
* @param string $name
*/
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
/**
* @return Collection|Casino[]
*/
public function getCasinosWithDepositMethods(): Collection
{
return $this->casinosWithDepositMethods;
}
public function addCasinoWithDepositMethod(Casino $casino): self
{
if (!$this->casinosWithDepositMethods->contains($casino)) {
$this->casinosWithDepositMethods[] = $casino;
$casino->addDepositMethod($this);
}
return $this;
}
public function removeCasinoWithDepositMethod(Casino $casino): self
{
if ($this->casinosWithDepositMethods->contains($casino)) {
$this->casinosWithDepositMethods->removeElement($casino);
$casino->removeDepositMethod($this);
}
return $this;
}
/**
* @return Collection|Casino[]
*/
public function getCasinosWithWithdrawalMethods(): Collection
{
return $this->casinosWithWithdrawalMethods;
}
public function addCasinoWithWithdrawalMethod(Casino $casino): self
{
if (!$this->casinosWithWithdrawalMethods->contains($casino)) {
$this->casinosWithWithdrawalMethods[] = $casino;
$casino->addWithdrawalMethod($this);
}
return $this;
}
public function removeCasinoWithWithdrawalMethod(Casino $casino): self
{
if ($this->casinosWithWithdrawalMethods->contains($casino)) {
$this->casinosWithWithdrawalMethods->removeElement($casino);
$casino->removeWithdrawalMethod($this);
}
return $this;
}
public function countCasinoWithWithdrawalMethod(): int
{
return ($this->casinosWithWithdrawalMethods)
? $this->casinosWithWithdrawalMethods->count()
: 0;
}
public function countCasinosWithDepositMethods(): int
{
return ($this->casinosWithDepositMethods)
? $this->casinosWithDepositMethods->count()
: 0;
}
}