<?php
namespace App\Entity;
use App\Repository\PaymentRepository;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity(repositoryClass: PaymentRepository::class)]
class Payment
{
public const STATUS_PAID = 'pagado';
public const STATUS_NOT_PAID = 'no pagado';
public const STATUS_CANCELLED = 'cancelado';
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private ?int $id = null;
#[ORM\Column(type: 'float')]
private float $amount;
#[ORM\Column(type: 'datetime')]
private \DateTimeInterface $paidAt;
#[ORM\Column(type: 'string', length: 20)]
private string $status;
#[ORM\OneToOne(targetEntity: Order::class, inversedBy: 'payment', cascade: ['persist', 'remove'])]
#[ORM\JoinColumn(nullable: false)]
private Order $order;
// Getters y setters
public function getId(): ?int
{
return $this->id;
}
public function getAmount(): ?float
{
return $this->amount;
}
public function setAmount(float $amount): self
{
$this->amount = $amount;
return $this;
}
public function getPaidAt(): ?\DateTimeInterface
{
return $this->paidAt;
}
public function setPaidAt(\DateTimeInterface $paidAt): self
{
$this->paidAt = $paidAt;
return $this;
}
public function getStatus(): ?string
{
return $this->status;
}
public function setStatus(string $status): self
{
$allowed = [
self::STATUS_PAID,
self::STATUS_NOT_PAID,
self::STATUS_CANCELLED
];
if (!in_array($status, $allowed, true)) {
throw new \InvalidArgumentException("Estado de pago no vĂ¡lido.");
}
$this->status = $status;
return $this;
}
public function getOrder(): ?Order
{
return $this->order;
}
public function setOrder(Order $order): self
{
$this->order = $order;
return $this;
}
public function getOrderName(): ?string
{
if ($this->getOrder()) {
return $this->getOrder()->getName() . ' ' . $this->getOrder()->getSurename();
}
return null;
}
public function getOrderEmail(): ?string
{
return $this->getOrder() ? $this->getOrder()->getEmail() : null;
}
public function getOrderId()
{
return $this->getOrder() ? $this->getOrder()->getId() : null;
}
}