<?php
namespace App\Entity\System;
use App\Application\DTO\ControlPanel\Api\Payment\PaymentMethodAttributes;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
* PaymentMethod
*
* @ORM\Table(name="ps_payment_method")
*
* @ORM\Entity(repositoryClass="App\Repository\System\PaymentMethodRepository")
*/
class PaymentMethod
{
public const PAYMENT_METHOD_MONEYBOX = 'monedero';
public const PAYMENT_METHOD_BANKWIRE = 'transferencia';
public const PAYMENT_METHOD_PAYPAL = 'paypal';
public const PAYMENT_METHOD_CREDIT_CARD = 'credit-card';
public const PAYMENT_METHOD_PAYCOMET = 'paycomet';
public const PAYMENT_METHOD_PAYPAL_REVIEW = 'paypal-revisando';
public const PAYMENT_METHOD_ADYEN = 'adyen';
public const PAYMENT_METHOD_CREDIT_SERVICE = 'credit_service';
public const PAYMENT_METHOD_CREDIT = 'credito';
public const PAYMENT_CASH_ON_DELIVERY = 'contrarrembolso';
public const PAYMENT_FLEXIBLE_PAYMENT = 'pago_flexible';
public const PAYPAL_PAYMENT_METHOD_ID = 2;
public const MONEYBOX_PAYMENT_METHOD_ID = 4;
public const TRANSFER_PAYMENT_METHOD_ID = 5;
public const CREDIT_PAYMENT_METHOD_ID = 7;
public const ADYEN_AMERICAN_EXPRESS_PAYMENT_METHOD_ID = 10;
public const ADYEN_IDEAL_PAYMENT_METHOD_ID = 11;
public const ADYEN_MASTERCARD_PAYMENT_METHOD_ID = 12;
public const ADYEN_VISA_PAYMENT_METHOD_ID = 13;
public const PAYPAL_CREDIT_CARD_PAYMENT_METHOD_ID = 14;
public const ADYEN_BANK_TRANSFER_PAYMENT_METHOD_ID = 15;
public const ADYEN_BANKCONTACT_PAYMENT_METHOD_ID = 16;
public const ADYEN_ELECTRONIC_PAYMENT_METHOD_ID = 18;
public const ADYEN_MBWAY_PAYMENT_METHOD_ID = 19;
public const ADYEN_TRUSTLY_PAYMENT_METHOD_ID = 20;
public const ADYEN_ONLINE_BANKING_PAYMENT_METHOD_ID = 21;
public const ADYEN_BUYNOW_PAYLATER_PAYMENT_METHOD_ID = 22;
public const ADYEN_GOOGLE_PAY_PAYMENT_METHOD_ID = 23;
public const ADYEN_FINISH_EBANKING_PAYMENT_METHOD_ID = 24;
public const PAYMENT_METHOD_ATTRIBUTE_NAMES_INDEXED_BY_ID = [
self::PAYPAL_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_PAYPAL,
self::MONEYBOX_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_WALLET,
self::TRANSFER_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_BANKWIRE,
self::CREDIT_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ON_CREDIT,
self::ADYEN_AMERICAN_EXPRESS_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_AMERICAN_EXPRESS,
self::ADYEN_IDEAL_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_IDEAL,
self::ADYEN_MASTERCARD_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_MASTERCARD,
self::ADYEN_VISA_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_VISA,
self::PAYPAL_CREDIT_CARD_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_CREDIT_CARD,
self::ADYEN_BANK_TRANSFER_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_BANK_TRANSFER,
self::ADYEN_BANKCONTACT_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_BANKCONTACT,
self::ADYEN_ELECTRONIC_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_ELECTRONIC,
self::ADYEN_MBWAY_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_MBWAY,
self::ADYEN_TRUSTLY_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_TRUSTLY,
self::ADYEN_ONLINE_BANKING_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_ONLINE_BANKING,
self::ADYEN_BUYNOW_PAYLATER_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_BUYNOW_PAYLATER,
self::ADYEN_GOOGLE_PAY_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_GOOGLE_PAY,
self::ADYEN_FINISH_EBANKING_PAYMENT_METHOD_ID => PaymentMethodAttributes::KEY_ADYEN_FINISH_EBANKING,
];
/**
* @ORM\Id()
*
* @ORM\GeneratedValue()
*
* @ORM\Column(type="integer", name="id_payment_method")
*/
private $id;
/**
* @var string
*
* @ORM\Column(type="string", length=255, name="id_text")
*/
private $payment;
/**
* @var string
*
* @ORM\Column(type="string", length=128, name="title")
*/
private $title;
/**
* @var string|null
*
* @ORM\Column(type="string", length=128, name="subtitle", nullable=true)
*/
private $subtitle;
/**
* @var string
*
* @ORM\Column(type="string", length=512, name="image_url")
*/
private $imageUrl;
/**
* @var string
*
* @ORM\Column(type="string", length=64, name="slug")
*/
private $slug;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="recurring", options={"default" : 0})
*/
private $recurring;
/**
* @var float
*
* @ORM\Column(type="decimal", scale=2, options={"default" : 0.00}, name="fixed_rate")
*/
private $fixedRate;
/**
* @var float
*
* @ORM\Column(type="decimal", scale=2, options={"default" : 0.00}, name="variable_rate")
*/
private $variableRate;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="active", options={"default" : 0})
*/
private $active;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="moneybox", options={"default" : 0})
*/
private $moneybox;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="csv", options={"default" : 0})
*/
private $csv;
/**
* @var bool
*
* @ORM\Column(type="boolean", name="activeByRole", options={"default" : 0})
*/
private $activeByRole;
/**
* @var ArrayCollection<int, Cart>|Cart[]
*
* @ORM\OneToMany(targetEntity="App\Entity\System\Cart", mappedBy="packPaymentMethod")
*/
private $packCarts;
/**
* @var ArrayCollection<int, Cart>|Cart[]
*
* @ORM\OneToMany(targetEntity="App\Entity\System\Cart", mappedBy="servicesPaymentMethod")
*/
private $servicesCarts;
public function __construct(string $type, string $name)
{
$this->active = false;
$this->moneybox = false;
$this->activeByRole = false;
$this->slug = $type;
$this->title = $name;
$this->payment = self::PAYMENT_METHOD_ADYEN;
$this->subtitle = $type;
$this->imageUrl = $type.'.svg';
$this->recurring = false;
$this->fixedRate = 0;
$this->variableRate = 0;
$this->csv = false;
}
/**
* @return int
*/
public function getId(): int
{
return $this->id;
}
/**
* @param int $id
*
* @return PaymentMethod
*/
public function setId(int $id): PaymentMethod
{
$this->id = $id;
return $this;
}
/**
* @return string
*/
public function getPayment(): string
{
return $this->payment;
}
/**
* @param string $payment
*
* @return PaymentMethod
*/
public function setPayment(string $payment): PaymentMethod
{
$this->payment = $payment;
return $this;
}
/**
* @return string
*/
public function getTitle(): string
{
return $this->title;
}
/**
* @param string $title
*
* @return PaymentMethod
*/
public function setTitle(string $title): self
{
$this->title = $title;
return $this;
}
/**
* @return string|null
*/
public function getSubtitle(): ?string
{
return $this->subtitle;
}
/**
* @param string|null $subtitle
*
* @return PaymentMethod
*/
public function setSubtitle(?string $subtitle): self
{
$this->subtitle = $subtitle;
return $this;
}
/**
* @return string
*/
public function getImageUrl(): string
{
return $this->imageUrl;
}
/**
* @param string $imageUrl
*
* @return PaymentMethod
*/
public function setImageUrl(string $imageUrl): self
{
$this->imageUrl = $imageUrl;
return $this;
}
/**
* @return string
*/
public function getSlug(): string
{
return $this->slug;
}
/**
* @param string $slug
*
* @return PaymentMethod
*/
public function setSlug(string $slug): self
{
$this->slug = $slug;
return $this;
}
/**
* @return bool
*/
public function isRecurring(): bool
{
return $this->recurring;
}
/**
* @param bool $recurring
*
* @return PaymentMethod
*/
public function setRecurring(bool $recurring): self
{
$this->recurring = $recurring;
return $this;
}
/**
* @return float
*/
public function getFixedRate(): float
{
return $this->fixedRate;
}
/**
* @param float $fixedRate
*
* @return PaymentMethod
*/
public function setFixedRate(float $fixedRate): self
{
$this->fixedRate = $fixedRate;
return $this;
}
/**
* @return float
*/
public function getVariableRate(): float
{
return $this->variableRate;
}
/**
* @param float $variableRate
*
* @return PaymentMethod
*/
public function setVariableRate(float $variableRate): self
{
$this->variableRate = $variableRate;
return $this;
}
/**
* @return bool
*/
public function isActive(): bool
{
return $this->active;
}
/**
* @param bool $active
*
* @return PaymentMethod
*/
public function setActive(bool $active): self
{
$this->active = $active;
return $this;
}
public function isMoneybox(): bool
{
return $this->moneybox;
}
public function setMoneybox(bool $moneybox): self
{
$this->moneybox = $moneybox;
return $this;
}
public function isCsv(): bool
{
return $this->csv;
}
public function setCsv(bool $csv): PaymentMethod
{
$this->csv = $csv;
return $this;
}
/**
* @return string
*/
public function getNameToShow(): string
{
if (strtolower($this->title) === 'credit card') {
return $this->subtitle;
}
return $this->title;
}
public function isActiveByRole(): bool
{
return $this->activeByRole;
}
public function setActiveByRole(bool $activeByRole): PaymentMethod
{
$this->activeByRole = $activeByRole;
return $this;
}
public function getRole(): string
{
return 'ROLE_ADYEN_PAYMENT_METHOD_'.strtoupper($this->slug);
}
/**
* @return Cart[]|ArrayCollection<int, Cart>
*/
public function getPackCarts()
{
return $this->packCarts;
}
/**
* @param Cart[]|ArrayCollection<int, Cart> $packCarts
*/
public function setPackCarts($packCarts): PaymentMethod
{
$this->packCarts = $packCarts;
return $this;
}
/**
* @return Cart[]|ArrayCollection<int, Cart>
*/
public function getServicesCarts()
{
return $this->servicesCarts;
}
/**
* @param Cart[]|ArrayCollection<int, Cart> $servicesCarts
*/
public function setServicesCarts($servicesCarts): PaymentMethod
{
$this->servicesCarts = $servicesCarts;
return $this;
}
}