Entity/Payment.php
<?php
/**
* @author Rafał Muszyński <rafal.muszynski@sourcefabric.org>
* @copyright 2015 Sourcefabric z.ú.
* @license http://www.gnu.org/licenses/gpl-3.0.txt
*/
namespace Newscoop\PaywallBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Payment entity.
*
* @ORM\Entity(repositoryClass="Newscoop\PaywallBundle\Entity\Repository\PaymentRepository")
* @ORM\Table(name="plugin_paywall_payments")
*/
class Payment implements PaymentInterface
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="id")
*
* @var int
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Order", inversedBy="payments")
* @ORM\JoinColumn(name="order_id", referencedColumnName="id", nullable=false)
*
* @var OrderInterface
*/
protected $order;
/**
* @ORM\Column(type="string", name="method")
*
* @var string
*/
protected $method;
/**
* @ORM\Column(type="string", name="currency", length=3)
*
* @var string
*/
protected $currency;
/**
* @ORM\Column(type="integer", name="total")
*
* @var int
*/
protected $amount = 0;
/**
* @ORM\Column(type="string", name="state")
*
* @var string
*/
protected $state = PaymentInterface::STATE_NEW;
/**
* @ORM\Column(type="datetime", name="created_at")
*
* @var \DateTime
*/
protected $createdAt;
/**
* @ORM\Column(type="datetime", name="updated_at")
*
* @var \DateTime
*/
protected $updatedAt;
/**
* @ORM\Column(type="json_array", name="details")
*
* @var array
*/
protected $details = array();
/**
* Constructor.
*/
public function __construct()
{
$this->createdAt = new \DateTime();
$this->updatedAt = new \DateTime();
}
/**
* {@inheritdoc}
*/
public function getId()
{
return $this->id;
}
/**
* {@inheritdoc}
*/
public function getMethod()
{
return $this->method;
}
/**
* {@inheritdoc}
*/
public function setMethod($method = null)
{
$this->method = $method;
}
/**
* {@inheritdoc}
*/
public function getCurrency()
{
return $this->currency;
}
/**
* {@inheritdoc}
*/
public function setCurrency($currency)
{
$this->currency = $currency;
}
/**
* {@inheritdoc}
*/
public function getAmount()
{
return $this->amount / 100;
}
/**
* {@inheritdoc}
*/
public function setAmount($amount)
{
$this->amount = $amount * 100;
}
/**
* {@inheritdoc}
*/
public function getState()
{
return $this->state;
}
/**
* {@inheritdoc}
*/
public function setState($state)
{
$this->state = $state;
}
/**
* {@inheritdoc}
*/
public function getCreatedAt()
{
return $this->createdAt;
}
/**
* {@inheritdoc}
*/
public function setCreatedAt(\DateTime $createdAt)
{
$this->createdAt = $createdAt;
}
/**
* {@inheritdoc}
*/
public function getUpdatedAt()
{
return $this->updatedAt;
}
/**
* {@inheritdoc}
*/
public function setUpdatedAt(\DateTime $updatedAt)
{
$this->updatedAt = $updatedAt;
}
/**
* {@inheritdoc}
*/
public function setDetails($details)
{
if ($details instanceof \Traversable) {
$details = iterator_to_array($details);
}
if (!is_array($details)) {
throw new \InvalidArgumentException($details.' is not an array');
}
$this->details = $details;
}
/**
* {@inheritdoc}
*/
public function getDetails()
{
return $this->details;
}
/**
* Gets the order.
*
* @return OrderInterface Order
*/
public function getOrder()
{
return $this->order;
}
/**
* Sets the order.
*
* @param OrderInterface Order
*/
public function setOrder(OrderInterface $order)
{
$this->order = $order;
}
}