<?php
namespace App\Entity;
use ApiPlatform\Core\Annotation\ApiFilter;
use ApiPlatform\Core\Annotation\ApiResource;
use App\Repository\OrderRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\BooleanFilter;
use Symfony\Component\Serializer\Annotation\Groups;
/**
* @ORM\Entity(repositoryClass=OrderRepository::class)
* @ORM\Table(name="`order`")
* @ApiResource(
* collectionOperations={"get","post"},
* itemOperations={"get", "put"},
* normalizationContext={"groups"={"order"}},
* denormalizationContext={"groups"={"order"}},
* attributes={"pagination_enabled"=false}
* )
* @ApiFilter(
* BooleanFilter::class, properties={"isArchived", "isSaved"}
* )
*/
class Order
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
* @Groups("order")
*/
private $id;
/**
* @ORM\Column(type="datetime", nullable = true)
* @Groups("order")
*/
private $date;
/**
* @ORM\Column(type="float")
* @Groups("order")
*/
private $amount;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("order")
*/
private $comment;
/**
* @ORM\OneToMany(targetEntity=OrderMovement::class, mappedBy="command", cascade={"persist", "remove"})
* @Groups("order")
*/
private $orderMovement;
/**
* @ORM\Column(type="boolean")
* @Groups("order")
*/
private $isValidated;
/**
* @ORM\Column(type="boolean")
* @Groups("order")
*/
private $isSaved;
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="orders")
* @Groups("order")
*/
private $user;
/**
* @ORM\Column(type="boolean")
* @Groups("order")
*/
private $isArchived;
/**
* @ORM\Column(type="integer", nullable=true)
* @Groups("order")
*/
private $orderNumber;
/**
* @ORM\Column(type="datetime", nullable=true)
* @Groups("order")
*/
private $deliveryDate;
/**
* @ORM\Column(type="text", nullable=true)
* @Groups("order")
*/
private $adminComment;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $shippingCosts;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $customerAdmin;
public function __construct()
{
$this->orderMovement = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
public function getAmount(): ?float
{
return $this->amount;
}
public function setAmount(float $amount): self
{
$this->amount = $amount;
return $this;
}
public function getComment(): ?string
{
return $this->comment;
}
public function setComment(?string $comment): self
{
$this->comment = $comment;
return $this;
}
/**
* @return Collection|OrderMovement[]
*/
public function getOrderMovement(): Collection
{
return $this->orderMovement;
}
public function addOrderMovement(OrderMovement $orderMovement): self
{
if (!$this->orderMovement->contains($orderMovement)) {
$this->orderMovement[] = $orderMovement;
$orderMovement->setCommand($this);
}
return $this;
}
public function removeOrderMovement(OrderMovement $orderMovement): self
{
if ($this->orderMovement->removeElement($orderMovement)) {
// set the owning side to null (unless already changed)
if ($orderMovement->getCommand() === $this) {
$orderMovement->setCommand(null);
}
}
return $this;
}
public function getIsValidated(): ?bool
{
return $this->isValidated;
}
public function setIsValidated(bool $isValidated): self
{
$this->isValidated = $isValidated;
return $this;
}
public function getIsSaved(): ?bool
{
return $this->isSaved;
}
public function setIsSaved(bool $isSaved): self
{
$this->isSaved = $isSaved;
return $this;
}
public function getUser(): ?User
{
return $this->user;
}
public function setUser(?User $user): self
{
$this->user = $user;
return $this;
}
public function getIsArchived(): ?bool
{
return $this->isArchived;
}
public function setIsArchived(bool $isArchived): self
{
$this->isArchived = $isArchived;
return $this;
}
public function getOrderNumber(): ?int
{
return $this->orderNumber;
}
public function setOrderNumber(?int $orderNumber): self
{
$this->orderNumber = $orderNumber;
return $this;
}
public function getDeliveryDate(): ?\DateTimeInterface
{
return $this->deliveryDate;
}
public function setDeliveryDate(\DateTimeInterface $deliveryDate): self
{
$this->deliveryDate = $deliveryDate;
return $this;
}
public function getAdminComment(): ?string
{
return $this->adminComment;
}
public function setAdminComment(?string $adminComment): self
{
$this->adminComment = $adminComment;
return $this;
}
public function getShippingCosts(): ?float
{
return $this->shippingCosts;
}
public function setShippingCosts(?float $shippingCosts): self
{
$this->shippingCosts = $shippingCosts;
return $this;
}
public function getCustomerAdmin(): ?string
{
return $this->customerAdmin;
}
public function setCustomerAdmin(?string $customerAdmin): self
{
$this->customerAdmin = $customerAdmin;
return $this;
}
}