src/Entity/CreditTransaction.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Entity;
  3. use App\Repository\CreditTransactionRepository;
  4. use Doctrine\ORM\Mapping as ORM;
  5. use DateTime;
  6. use DateTimeZone;
  7. /**
  8.  * @ORM\Entity(repositoryClass=CreditTransactionRepository::class)
  9.  */
  10. class CreditTransaction
  11. {
  12.     /**
  13.      * @ORM\Id
  14.      * @ORM\GeneratedValue
  15.      * @ORM\Column(type="integer")
  16.      */
  17.     private $id;
  18.     /**
  19.      * @ORM\Column(type="float")
  20.      */
  21.     private $amount;
  22.     /**
  23.      * @ORM\Column(type="string", length=255)
  24.      */
  25.     private $status;
  26.     /**
  27.      * @ORM\Column(type="string", length=255, nullable=true)
  28.      */
  29.     private $description;
  30.     /**
  31.      * @ORM\Column(type="string", length=255, nullable=true)
  32.      */
  33.     private $paymentIntentId;
  34.     /**
  35.      * @ORM\Column(type="string", length=255, nullable=true)
  36.      */
  37.     private $cardType;
  38.     /**
  39.      * @ORM\Column(type="string", length=255, nullable=true)
  40.      */
  41.     private $cardNumber;
  42.     /**
  43.      * @ORM\Column(type="datetime")
  44.      */
  45.     private $createdAt;
  46.     /**
  47.      * @ORM\Column(type="string", length=10)
  48.      */
  49.     private $transactionType;
  50.     /**
  51.      * @ORM\Column(type="string", length=255, unique=true, nullable=true)
  52.      */
  53.     private $transactionNumber;
  54.     /**
  55.      * @ORM\ManyToOne(targetEntity=User::class, inversedBy="creditTransactions")
  56.      * @ORM\JoinColumn(nullable=false)
  57.      */
  58.     private $user;
  59.     /**
  60.      * @ORM\OneToOne(targetEntity=Invoice::class, mappedBy="creditTransaction", cascade={"remove"})
  61.      */
  62.     private $invoice;
  63.     /**
  64.      * @ORM\Column(type="string", length=255, nullable=true)
  65.      */
  66.     private $cardHolder;
  67.     /**
  68.      * @ORM\Column(type="string", length=255, nullable=true)
  69.      */
  70.     private $cardExpiration;
  71.     public function __construct()
  72.     {
  73.         $timezone = new DateTimeZone('Europe/Paris'); 
  74.         $this->createdAt = new DateTime('now'$timezone);
  75.     }
  76.     public function generateTransactionNumber()
  77.     {
  78.         if ($this->id) {
  79.             if ($this->transactionType === 'credit') {
  80.                 $prefix 'CB';
  81.             } else {
  82.                 $prefix 'CRD';
  83.             }
  84.             
  85.             $this->transactionNumber $prefix str_pad((string) $this->id5'0'STR_PAD_LEFT);
  86.         }
  87.     }
  88.     public function getId(): ?int
  89.     {
  90.         return $this->id;
  91.     }
  92.     public function getAmount(): ?float
  93.     {
  94.         return $this->amount;
  95.     }
  96.     public function setAmount(float $amount): self
  97.     {
  98.         $this->amount $amount;
  99.         return $this;
  100.     }
  101.     public function getStatus(): ?string
  102.     {
  103.         return $this->status;
  104.     }
  105.     public function setStatus(string $status): self
  106.     {
  107.         $this->status $status;
  108.         return $this;
  109.     }
  110.     public function getDescription(): ?string
  111.     {
  112.         return $this->description;
  113.     }
  114.     public function setDescription(?string $description): self
  115.     {
  116.         $this->description $description;
  117.         return $this;
  118.     }
  119.     public function getPaymentIntentId(): ?string
  120.     {
  121.         return $this->paymentIntentId;
  122.     }
  123.     public function setPaymentIntentId(?string $paymentIntentId): self
  124.     {
  125.         $this->paymentIntentId $paymentIntentId;
  126.         return $this;
  127.     }
  128.     
  129.     public function getCardType(): ?string
  130.     {
  131.         return $this->cardType;
  132.     }
  133.     public function setCardType(?string $cardType): self
  134.     {
  135.         $this->cardType $cardType;
  136.         return $this;
  137.     }
  138.     public function getCardNumber(): ?string
  139.     {
  140.         return $this->cardNumber;
  141.     }
  142.     public function setCardNumber(?string $cardNumber): self
  143.     {
  144.         $this->cardNumber $cardNumber;
  145.         return $this;
  146.     }
  147.     
  148.     public function getCreatedAt(): ?\DateTimeInterface
  149.     {
  150.         return $this->createdAt;
  151.     }
  152.     public function setCreatedAt(\DateTimeInterface $createdAt): self
  153.     {
  154.         $this->createdAt $createdAt;
  155.         return $this;
  156.     }
  157.     public function getTransactionType(): ?string
  158.     {
  159.         return $this->transactionType;
  160.     }
  161.     public function setTransactionType(string $transactionType): self
  162.     {
  163.         $this->transactionType $transactionType;
  164.         return $this;
  165.     }
  166.     public function getTransactionNumber(): ?string
  167.     {
  168.         return $this->transactionNumber;
  169.     }
  170.     public function setTransactionNumber(?string $transactionNumber): self
  171.     {
  172.         $this->transactionNumber $transactionNumber;
  173.         return $this;
  174.     }
  175.     public function getUser(): ?User
  176.     {
  177.         return $this->user;
  178.     }
  179.     public function setUser(?User $user): self
  180.     {
  181.         $this->user $user;
  182.         return $this;
  183.     }
  184.     public function getInvoice(): ?Invoice
  185.     {
  186.         return $this->invoice;
  187.     }
  188.     public function setInvoice(?Invoice $invoice): self
  189.     {
  190.         $this->invoice $invoice;
  191.         return $this;
  192.     }
  193.     public function getCardHolder(): ?string
  194.     {
  195.         return $this->cardHolder;
  196.     }
  197.     public function setCardHolder(?string $cardHolder): self
  198.     {
  199.         $this->cardHolder $cardHolder;
  200.         return $this;
  201.     }
  202.     public function getCardExpiration(): ?string
  203.     {
  204.         return $this->cardExpiration;
  205.     }
  206.     public function setCardExpiration(?string $cardExpiration): self
  207.     {
  208.         $this->cardExpiration $cardExpiration;
  209.         return $this;
  210.     }
  211. }