<?php
namespace App\Domain\MarginCheckList\Adapters\Gateway\Doctrine;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Domain\MarginCheckList\Adapters\Gateway\Doctrine\Repository\DoctrineMarginCheckListRepository;
use App\Entity\AbstractTransaction;
use App\Traits\TimeStampTrait;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=DoctrineMarginCheckListRepository::class)
* @ORM\Table( name="margin_check_list")
* @ApiResource(
* security= "is_granted('ROLE_AGENT') or is_granted('ROLE_MANAGER')",
* normalizationContext={"groups"={"margin:read"}, "swagger_definition_name"="Read"},
* denormalizationContext={"groups"={"margin:write"}, "swagger_definition_name"="Write"},
* itemOperations={
* "get"
* },
* collectionOperations={
* "get"
* },
* )
* @ORM\HasLifecycleCallbacks()
*/
class MarginCheckListEntity
{
use TimeStampTrait;
/**
*
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups({
* "transaction-item:read","transaction:collection:read","margin:read"
* })
*/
private ?int $id;
/**
* @var AbstractTransaction
*
* @ORM\OneToOne(targetEntity="App\Entity\AbstractTransaction", inversedBy="marginCheckLists")
* @ORM\JoinColumn(name="transaction_id", referencedColumnName="id", nullable=false, onDelete="cascade")
* @Groups({
* "margin:read"
* })
*/
private $transaction;
/**
* @var float
*
* @ORM\Column(name="total_commission", type="float", scale=2)
* @Groups({
* "transaction-item:read","transaction:collection:read","margin:read"
* })
*/
private float $totalCommission;
/**
* @var \DateTimeInterface|null
*
* @ORM\Column(type="datetime", nullable=true)
* @Groups({
* "transaction-item:read","transaction:collection:read","margin:read"
* })
*/
private ?\DateTimeInterface $paidAt;
/**
* @return int|null
*/
public function getId(): ?int
{
return $this->id;
}
/**
* @param int|null $id
* @return MarginCheckListEntity
*/
public function setId(?int $id): self
{
$this->id = $id;
return $this;
}
/**
* @return AbstractTransaction
*/
public function getTransaction()
{
return $this->transaction;
}
/**
* @param AbstractTransaction $transaction
* @return MarginCheckListEntity
*/
public function setTransaction(AbstractTransaction $transaction)
{
$this->transaction = $transaction;
return $this;
}
/**
* @return float
*/
public function getTotalCommission(): float
{
return $this->totalCommission;
}
/**
* @param float $totalCommission
* @return MarginCheckListEntity
*/
public function setTotalCommission(float $totalCommission): MarginCheckListEntity
{
$this->totalCommission = $totalCommission;
return $this;
}
/**
* @return \DateTimeInterface|null
*/
public function getPaidAt(): ?\DateTimeInterface
{
return $this->paidAt;
}
/**
* @param \DateTimeInterface|null $paidAt
*/
public function setPaidAt(?\DateTimeInterface $paidAt): void
{
$this->paidAt = $paidAt;
}
}