<?php
namespace App\Entity;
use App\Dictionary\BalanceDetailUsageType;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation\Groups;
/**
* @ORM\Table(name="BalanceAmateur", indexes={
*
* @ORM\Index(name="created_at_idx", columns={"created_at"}),
* @ORM\Index(name="created_at_payout_idx", columns={"created_at", "payout"})
* })
*
* @ORM\HasLifecycleCallbacks()
*
* @ORM\Entity(repositoryClass="App\Repository\BalanceAmateurRepository")
*/
class BalanceAmateur
{
/**
* @Groups({"adminindex"})
*
* @ORM\Id()
*
* @ORM\GeneratedValue()
*
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Payment")
*
* @ORM\JoinColumn(name="payment_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $payment;
/**
* @Groups({"adminindex"})
*
* @ORM\Column(type="smallint")
*/
private $type;
/**
* @Groups({"adminindex"})
*
* @ORM\Column(type="datetime")
*/
private $created_at;
/**
* @ORM\Column(type="datetime")
*/
private $updated_at;
/**
* @Groups({"adminindex"})
*
* @ORM\Column(type="decimal", precision=10, scale=4)
*/
private $amount = 0;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Member")
*
* @ORM\JoinColumn(name="member_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $member;
/**
* @Groups({"adminindex"})
*
* @ORM\ManyToOne(targetEntity="App\Entity\Payout")
*
* @ORM\JoinColumn(name="payout", referencedColumnName="id", onDelete="SET NULL")
*/
private $payout;
/**
* @Groups({"adminindex"})
*
* @ORM\ManyToOne(targetEntity="App\Entity\BalanceDetail", cascade={"persist"})
*
* @ORM\JoinColumn(name="balance_detail_id", referencedColumnName="id", onDelete="SET NULL")
*/
private $balance_detail;
/**
* @ORM\PrePersist
*/
public function prePersist()
{
if (!$this->getCreatedAt()) {
$this->setCreatedAt(new \DateTime());
}
$this->setUpdatedAt(new \DateTime());
}
public function getBalanceDetail(): ?BalanceDetail
{
return $this->balance_detail;
}
public function setBalanceDetail(?BalanceDetail $balanceDetail): self
{
$this->balance_detail = $balanceDetail;
return $this;
}
public function getId(): ?int
{
return $this->id;
}
public function getPayment(): ?Payment
{
return $this->payment;
}
public function setPayment(?Payment $payment): self
{
$this->payment = $payment;
return $this;
}
public function getType(): ?int
{
return $this->type;
}
public function setType(int $type): self
{
$this->type = $type;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->created_at;
}
public function setCreatedAt(\DateTimeInterface $created_at): self
{
$this->created_at = $created_at;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updated_at;
}
public function setUpdatedAt(\DateTimeInterface $updated_at): self
{
$this->updated_at = $updated_at;
return $this;
}
public function getAmount()
{
return $this->amount;
}
public function setAmount($amount): self
{
$this->amount = $amount;
return $this;
}
public function getMember(): ?Member
{
return $this->member;
}
public function setMember(?Member $member): self
{
$this->member = $member;
return $this;
}
public function getPayout(): ?Payout
{
return $this->payout;
}
public function setPayout(?Payout $payout): self
{
$this->payout = $payout;
return $this;
}
public function isTypeCam(): bool
{
/** @var BalanceDetail|null $detail */
$detail = $this->balance_detail;
if (null === $detail) {
return false;
}
return BalanceDetailUsageType::CAM === $detail->getUsageType();
}
}