<?php
namespace App\Entity;
use App\Service\Helper\DateTimeHelper;
use DateTime;
use Doctrine\ORM\Mapping as ORM;
use Exception;
/**
* @ORM\Table(name="orders__elements_payments",
* indexes={
* @ORM\Index(name="created_at", columns={"created_at"})
* },
* uniqueConstraints={
* @ORM\UniqueConstraint(name="unique_payment_element_id", columns={"payment_order_id", "order_element_id"}),
* }
* )
* @ORM\Entity(repositoryClass="App\Repository\PaymentOrderElementRepository")
*/
class PaymentOrderElement
{
use IdTrait;
/**
* @ORM\Column(name="created_at", type="datetime")
*/
private DateTime $createdAt;
/**
* @ORM\ManyToOne(targetEntity="PaymentOrder")
* @ORM\JoinColumn(referencedColumnName="id", name="payment_order_id")
*/
private PaymentOrder $paymentOrder;
/**
* @ORM\ManyToOne(targetEntity="OrderElement")
* @ORM\JoinColumn(referencedColumnName="id", name="order_element_id")
*/
private OrderElement $orderElement;
/**
* @ORM\Column(name="price", type="integer")
*/
private int $price;
/**
* @ORM\Column(name="reward_margin", type="integer", options={"default":0})
*/
private int $rewardMargin = 0;
/**
* @throws Exception
*/
public function __construct(PaymentOrder $paymentOrder, OrderElement $orderElement, $price)
{
$this->paymentOrder = $paymentOrder;
$this->orderElement = $orderElement;
$this->price = $price;
$this->createdAt = DateTimeHelper::getNowDateTime();
}
public function getCreatedAt(): DateTime
{
return $this->createdAt;
}
public function setCreatedAt(DateTime $createdAt): PaymentOrderElement
{
$this->createdAt = $createdAt;
return $this;
}
public function getPaymentOrder(): PaymentOrder
{
return $this->paymentOrder;
}
public function getOrderElement(): OrderElement
{
return $this->orderElement;
}
public function getPrice(): int
{
return $this->price;
}
public function setPrice($price): PaymentOrderElement
{
$this->price = $price;
return $this;
}
public function setOrderElement($orderElement): PaymentOrderElement
{
$this->orderElement = $orderElement;
return $this;
}
public function getRewardMargin(): int
{
return $this->rewardMargin;
}
public function setRewardMargin(int $rewardMargin): PaymentOrderElement
{
$this->rewardMargin = $rewardMargin;
return $this;
}
}