<?php
namespace App\Entity;
use App\Repository\OrdenRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=OrdenRepository::class)
*/
class Orden
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="datetime", nullable=true)
*/
private $createdAt;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="ordenes")
*/
private $user;
/**
* @ORM\OneToMany(targetEntity=OrdenItem::class, mappedBy="orden", cascade={"persist"})
*/
private $ordenItems;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $isCompleted;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $subTotal;
/**
* @ORM\OneToMany(targetEntity=Transaction::class, mappedBy="orden", cascade={"persist"})
*/
private $transactions;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $taxes;
/**
* @ORM\Column(type="float", options={"default": 0})
*/
private $ordenTotal;
public function __toString()
{
return $this->getId() . ': ' . $this->getUser();
}
/**
* @ORM\Column(type="float", options={"default": 0})
*/
private $balance;
/**
* @ORM\Column(type="boolean", options={"default": 0})
*/
private $hasSubsCreated;
/**
* @ORM\ManyToOne(targetEntity=PromoCode::class,cascade={"persist"})
*/
private $promoCode;
/**
* @ORM\ManyToOne(targetEntity=OrdenOrigen::class,cascade={"persist"})
*/
private $ordenOrigen;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $paymentIntent;
/**
* @ORM\Column(type="string", length=500, nullable=true)
*/
private $receiptUrl;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $currentPlace;
public function __construct()
{
$this->ordenItems = new ArrayCollection();
if(!$this->currentPlace) $this->setCurrentPlace('Abierta');
if(!$this->createdAt) $this->createdAt = new \DateTime();
$this->transactions = new ArrayCollection();
if(!$this->balance) $this->balance = 0;
if(!$this->hasSubsCreated) $this->hasSubsCreated = 0;
if(!$this->isCompleted) $this->isCompleted = 0;
}
public function getId(): ?int
{
return $this->id;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(?\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
/**
* @return Collection<int, OrdenItem>
*/
public function getOrdenItems(): Collection
{
return $this->ordenItems;
}
public function addOrdenItem(OrdenItem $ordenItem): self
{
if (!$this->ordenItems->contains($ordenItem)) {
$this->ordenItems[] = $ordenItem;
$ordenItem->setOrden($this);
}
return $this;
}
public function removeOrdenItem(OrdenItem $ordenItem): self
{
if ($this->ordenItems->removeElement($ordenItem)) {
// set the owning side to null (unless already changed)
if ($ordenItem->getOrden() === $this) {
$ordenItem->setOrden(null);
}
}
return $this;
}
public function getIsCompleted(): ?bool
{
return $this->isCompleted;
}
public function setIsCompleted(bool $isCompleted): self
{
$this->isCompleted = $isCompleted;
return $this;
}
public function getSubTotal(): ?float
{
return $this->subTotal;
}
public function setSubTotal(?float $subTotal): self
{
$this->subTotal = $subTotal;
return $this;
}
/**
* @return Collection<int, Transaction>
*/
public function getTransactions(): Collection
{
return $this->transactions;
}
public function addTransaction(Transaction $transaction): self
{
if (!$this->transactions->contains($transaction)) {
$this->transactions[] = $transaction;
$transaction->setOrden($this);
}
return $this;
}
public function removeTransaction(Transaction $transaction): self
{
if ($this->transactions->removeElement($transaction)) {
// set the owning side to null (unless already changed)
if ($transaction->getOrden() === $this) {
$transaction->setOrden(null);
}
}
return $this;
}
public function getTaxes(): ?float
{
return $this->taxes;
}
public function setTaxes(?float $taxes): self
{
$this->taxes = $taxes;
return $this;
}
public function getOrdenTotal(): ?float
{
return $this->ordenTotal;
}
public function setOrdenTotal(?float $ordenTotal): self
{
$this->ordenTotal = number_format($ordenTotal, 2);
return $this;
}
public function calcOrdenTotal(): self
{
$this->ordenTotal = number_format($this->subTotal + $this->taxes, 2);
return $this;
}
public function getBalance(): ?float
{
return $this->balance;
}
public function setBalance(?float $balance): self
{
$this->balance = number_format($balance, 2);
return $this;
}
public function isHasSubsCreated(): ?bool
{
return $this->hasSubsCreated;
}
public function setHasSubsCreated(bool $hasSubsCreated): self
{
$this->hasSubsCreated = $hasSubsCreated;
return $this;
}
public function getPromoCode(): ?PromoCode
{
return $this->promoCode;
}
public function setPromoCode(?PromoCode $promoCode): self
{
$this->promoCode = $promoCode;
return $this;
}
public function getOrdenOrigen(): ?OrdenOrigen
{
return $this->ordenOrigen;
}
public function setOrdenOrigen(?OrdenOrigen $ordenOrigen): self
{
$this->ordenOrigen = $ordenOrigen;
return $this;
}
public function getPaymentIntent(): ?string
{
return $this->paymentIntent;
}
public function setPaymentIntent(string $paymentIntent): self
{
$this->paymentIntent = $paymentIntent;
return $this;
}
public function getReceiptUrl(): ?string
{
return $this->receiptUrl;
}
public function setReceiptUrl(?string $receiptUrl): self
{
$this->receiptUrl = $receiptUrl;
return $this;
}
public function getCurrentPlace(): ?string
{
return $this->currentPlace;
}
public function setCurrentPlace(?string $currentPlace): self
{
$this->currentPlace = $currentPlace;
return $this;
}
}