src/Entity/Transaction.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Component\Serializer\Normalizer\ProxyAwareObjectNormalizer;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use Symfony\Component\Serializer\Annotation as SA;
  6. /**
  7.  * Transaction
  8.  *
  9.  * @ORM\Table(name="transactions", uniqueConstraints={@ORM\UniqueConstraint(name="ref_id", columns={"ref_id"}), @ORM\UniqueConstraint(name="ipn_id", columns={"ipn_id", "type"})}, indexes={@ORM\Index(name="status", columns={"status"}), @ORM\Index(name="account_id", columns={"account_id"}), @ORM\Index(name="type", columns={"type"})})
  10.  * @ORM\Entity(repositoryClass="App\Repository\TransactionRepository")
  11.  */
  12. class Transaction extends Entity
  13. {
  14.     public const STATUS = [
  15.         'pending' => 'pending',
  16.         'completed' => 'completed',
  17.         'canceled' => 'cancelled',
  18.         'suspended' => 'suspended',
  19.     ];
  20.     public const TYPE = [
  21.         'manual' => 'manual',
  22.         'paypal' => 'paypal',
  23.     ];
  24.     const SERIALIZATION_CONTEXT = [
  25.         'search' => ['groups' => ['transaction_general''account_general'],
  26.             ProxyAwareObjectNormalizer::RESOLVE_PROXY_CLASSES => [Transaction::class, Account::class]],
  27.     ];
  28.     /**
  29.      * @var int
  30.      *
  31.      * @ORM\Column(name="id", type="bigint", nullable=false, options={"unsigned"=true})
  32.      * @ORM\Id
  33.      * @ORM\GeneratedValue(strategy="IDENTITY")
  34.      * @SA\Groups({"transaction_general", "account_admin_details"})
  35.      */
  36.     private $id;
  37.     /**
  38.      * @var \DateTime
  39.      *
  40.      * @ORM\Column(name="created", type="datetime", nullable=false, options={"default"="CURRENT_TIMESTAMP"})
  41.      * @SA\Groups({"transaction_general", "account_admin_details"})
  42.      */
  43.     private $created 'CURRENT_TIMESTAMP';
  44.     /**
  45.      * @var \DateTime|null
  46.      *
  47.      * @ORM\Column(name="modified", type="datetime", nullable=true)
  48.      * @SA\Groups({"transaction_general"})
  49.      */
  50.     private $modified;
  51.     /**
  52.      * @var string
  53.      *
  54.      * @ORM\Column(name="type", type="string", length=0, nullable=false)
  55.      * @SA\Groups({"transaction_general", "account_admin_details"})
  56.      */
  57.     private $type;
  58.     /**
  59.      * @var string
  60.      *
  61.      * @ORM\Column(name="status", type="string", length=0, nullable=false, options={"default"="pending"})
  62.      * @SA\Groups({"transaction_general"})
  63.      */
  64.     private $status self::STATUS['pending'];
  65.     /**
  66.      * @var string|null
  67.      *
  68.      * @ORM\Column(name="description", type="string", length=255, nullable=true)
  69.      */
  70.     private $description;
  71.     /**
  72.      * @var string|null
  73.      *
  74.      * @ORM\Column(name="reason", type="string", length=255, nullable=true)
  75.      */
  76.     private $reason;
  77.     /**
  78.      * @var string
  79.      *
  80.      * @ORM\Column(name="amount", type="decimal", precision=18, scale=9, nullable=false, options={"default"="0.000000000"})
  81.      * @SA\Groups({"transaction_general", "account_admin_details"})
  82.      */
  83.     private $amount '0.000000000';
  84.     /**
  85.      * @var int|null
  86.      *
  87.      * @ORM\Column(name="ipn_id", type="bigint", nullable=true, options={"unsigned"=true})
  88.      */
  89.     private $ipnId;
  90.     /**
  91.      * @var string|null
  92.      *
  93.      * @ORM\Column(name="ref_id", type="string", length=40, nullable=true)
  94.      */
  95.     private $refId;
  96.     /**
  97.      * @var \Account
  98.      *
  99.      * @ORM\ManyToOne(targetEntity="Account")
  100.      * @ORM\JoinColumns({
  101.      *   @ORM\JoinColumn(name="account_id", referencedColumnName="id")
  102.      * })
  103.      * @SA\Groups({"account_general"})
  104.      */
  105.     private $account;
  106.     /**
  107.      * @var IpnPaypal|null
  108.      * @ORM\OneToOne(targetEntity="IpnPaypal", inversedBy="transaction")
  109.      * @ORM\JoinColumns({
  110.         @ORM\JoinColumn(name="ipn_id", referencedColumnName="id")
  111.      * })
  112.      * @SA\Ignore
  113.      */
  114.     private $ipn;
  115.     public function getId(): ?int
  116.     {
  117.         return $this->id;
  118.     }
  119.     public function getCreated(): ?\DateTimeInterface
  120.     {
  121.         return $this->created;
  122.     }
  123.     public function setCreated(\DateTimeInterface $created): self
  124.     {
  125.         $this->created $created;
  126.         return $this;
  127.     }
  128.     public function getModified(): ?\DateTimeInterface
  129.     {
  130.         return $this->modified;
  131.     }
  132.     public function setModified(?\DateTimeInterface $modified): self
  133.     {
  134.         $this->modified $modified;
  135.         return $this;
  136.     }
  137.     public function getType(): ?string
  138.     {
  139.         return $this->type;
  140.     }
  141.     public function setType(string $type): self
  142.     {
  143.         $this->type $type;
  144.         return $this;
  145.     }
  146.     public function getStatus(): ?string
  147.     {
  148.         return $this->status;
  149.     }
  150.     public function setStatus(string $status): self
  151.     {
  152.         $this->status $status;
  153.         return $this;
  154.     }
  155.     public function getDescription(): ?string
  156.     {
  157.         return $this->description;
  158.     }
  159.     public function setDescription(?string $description): self
  160.     {
  161.         $this->description $description;
  162.         return $this;
  163.     }
  164.     public function getReason(): ?string
  165.     {
  166.         return $this->reason;
  167.     }
  168.     public function setReason(?string $reason): self
  169.     {
  170.         $this->reason $reason;
  171.         return $this;
  172.     }
  173.     public function getAmount(): ?string
  174.     {
  175.         return $this->amount;
  176.     }
  177.     public function setAmount(string $amount): self
  178.     {
  179.         $this->amount $amount;
  180.         return $this;
  181.     }
  182.     public function getIpnId(): ?string
  183.     {
  184.         return $this->ipnId;
  185.     }
  186.     public function setIpnId(?string $ipnId): self
  187.     {
  188.         $this->ipnId $ipnId;
  189.         return $this;
  190.     }
  191.     public function getRefId(): ?string
  192.     {
  193.         return $this->refId;
  194.     }
  195.     public function setRefId(?string $refId): self
  196.     {
  197.         $this->refId $refId;
  198.         return $this;
  199.     }
  200.     public function getAccount(): ?Account
  201.     {
  202.         return $this->account;
  203.     }
  204.     public function setAccount(?Account $account): self
  205.     {
  206.         $this->account $account;
  207.         return $this;
  208.     }
  209.     /**
  210.      * @return IpnPaypal|null
  211.      */
  212.     public function getIpn(): ?IpnPaypal
  213.     {
  214.         return $this->ipn;
  215.     }
  216.     /**
  217.      * @param IpnPaypal|null $ipn
  218.      * @return Transaction
  219.      */
  220.     public function setIpn(?IpnPaypal $ipn): Transaction
  221.     {
  222.         $this->ipn $ipn;
  223.         return $this;
  224.     }
  225. }