<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use SpecShaper\EncryptBundle\Annotations\Encrypted;
/**
* @ORM\Entity(repositoryClass="App\Repository\CompanyPaymentRepository")
*/
class CompanyPayment
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="smallint")
*/
private $type;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Encrypted
*/
private $fullname;
/**
* @ORM\Column(type="string", length=255, nullable=true)
* @Encrypted
*/
private $creditCardNumber;
/**
* @ORM\Column(type="date", nullable=true)
*/
private $creditCardExpiration;
/**
* @ORM\Column(type="string", length=5, nullable=true)
*/
private $creditCardCVV;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $contactName;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Company", inversedBy="payments")
* @ORM\JoinColumn(nullable=false)
*/
private $company;
/**
* @ORM\Column(type="datetime")
*/
private $date;
/**
* @ORM\Column(type="boolean")
*/
private $invoice=false;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $stripeAccountId;
public $forceDisplayNumbers=false;
public function __construct(){
$this->date = new \DateTime();
}
public function getId(): ?int
{
return $this->id;
}
public function getType(): ?int
{
return $this->type;
}
public function setType(int $type): self
{
$this->type = $type;
return $this;
}
public function getFullname(): ?string
{
return $this->fullname;
}
public function setFullname(?string $fullname): self
{
$this->fullname = $fullname;
return $this;
}
public function getCreditCardNumberHidden(): ?string
{
if(!empty($this->creditCardNumber) && !$this->forceDisplayNumbers){
$lastDigits = substr($this->creditCardNumber, -4);
return '0000 0000 0000 '.$lastDigits;
}
return $this->creditCardNumber;
}
public function setCreditCardNumberHidden($cc): self
{
if (strpos($cc, '0000 0000') === false) {
$this->creditCardNumber = $cc;
}
return $this;
}
public function getCreditCardNumber(): ?string
{
return $this->creditCardNumber;
}
public function setCreditCardNumber(?string $creditCardNumber): self
{
$this->creditCardNumber = $creditCardNumber;
return $this;
}
public function getCreditCardExpirationMonth()
{
return $this->getCreditCardExpiration()->format('m');
}
public function getCreditCardExpirationYear()
{
return $this->getCreditCardExpiration()->format('Y');
}
public function getCreditCardExpiration(): ?\DateTimeInterface
{
return $this->creditCardExpiration;
}
public function setCreditCardExpiration(?\DateTimeInterface $creditCardExpiration): self
{
$this->creditCardExpiration = $creditCardExpiration;
return $this;
}
public function getCreditCardCVV(): ?string
{
return $this->creditCardCVV;
}
public function setCreditCardCVV($creditCardCVV): self
{
$this->creditCardCVV = str_pad($creditCardCVV, 3, '0', STR_PAD_LEFT);
return $this;
}
public function getContactName(): ?string
{
return $this->contactName;
}
public function setContactName(?string $contactName): self
{
$this->contactName = $contactName;
return $this;
}
public function getCompany(): ?Company
{
return $this->company;
}
public function setCompany(?Company $company): self
{
$this->company = $company;
return $this;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getInvoiced(): ?bool
{
return $this->invoiced;
}
public function setInvoiced(bool $invoiced): self
{
$this->invoiced = $invoiced;
return $this;
}
public function getStripeAccountId(): ?string
{
return $this->stripeAccountId;
}
public function setStripeAccountId(string $stripeAccountId): self
{
$this->stripeAccountId = $stripeAccountId;
return $this;
}
}