<?php declare(strict_types=1);
namespace App\Entity;
use App\Repository\OrderRequestRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
use Gedmo\Timestampable\Traits\TimestampableEntity;
#[ORM\Table]
#[ORM\Index(columns: ['service_id'], name: 'service_id')]
#[ORM\Entity(repositoryClass: OrderRequestRepository::class)]
class OrderRequestLineItem
{
use TimestampableEntity;
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column(type: 'integer')]
private int $id;
#[ORM\ManyToOne(targetEntity: OrderRequestLineItem::class, inversedBy: 'abilities')]
private ?OrderRequestLineItem $parent;
#[ORM\OneToMany(mappedBy: 'parent', targetEntity: OrderRequestLineItem::class, cascade: ['all'])]
private iterable $abilities;
#[ORM\Column(type: 'string')]
private string $serviceId;
#[ORM\Column(type: 'string')]
private string $serviceName;
#[ORM\Column(type: 'integer')]
private int $quantity;
#[ORM\Column(type: 'float')]
private float $price;
#[ORM\Column(type: 'string', nullable: true)]
private ?string $surchargeType;
#[ORM\Column(type: 'float', nullable: true)]
private ?float $surchargeValue;
#[ORM\Column(type: 'integer', nullable: true)]
private ?int $surchargeDays;
#[ORM\ManyToOne(targetEntity: OrderRequest::class, inversedBy: 'lineItems')]
private OrderRequest $order;
public function __construct()
{
$this->abilities = new ArrayCollection();
}
public function getId(): int
{
return $this->id;
}
public function setId(int $id): OrderRequestLineItem
{
$this->id = $id;
return $this;
}
public function getParent(): ?OrderRequestLineItem
{
return $this->parent;
}
public function setParent(?OrderRequestLineItem $parent): OrderRequestLineItem
{
$this->parent = $parent;
return $this;
}
public function getServiceId(): string
{
return $this->serviceId;
}
public function setServiceId(string $serviceId): OrderRequestLineItem
{
$this->serviceId = $serviceId;
return $this;
}
public function getServiceName(): string
{
return $this->serviceName;
}
public function setServiceName(string $serviceName): OrderRequestLineItem
{
$this->serviceName = $serviceName;
return $this;
}
public function getQuantity(): int
{
return $this->quantity;
}
public function setQuantity(int $quantity): OrderRequestLineItem
{
$this->quantity = $quantity;
return $this;
}
public function getPrice(): float
{
return $this->price;
}
public function setPrice(float $price): OrderRequestLineItem
{
$this->price = $price;
return $this;
}
public function getOrder(): OrderRequest
{
return $this->order;
}
public function setOrder(OrderRequest $order): OrderRequestLineItem
{
$this->order = $order;
return $this;
}
public function getAbilities(): Collection
{
return $this->abilities;
}
public function getSurchargeType(): ?string
{
return $this->surchargeType;
}
public function setSurchargeType(?string $surchargeType): OrderRequestLineItem
{
$this->surchargeType = $surchargeType;
return $this;
}
public function getSurchargeValue(): ?float
{
return $this->surchargeValue;
}
public function setSurchargeValue(?float $surchargeValue): OrderRequestLineItem
{
$this->surchargeValue = $surchargeValue;
return $this;
}
public function getSurchargeDays(): ?int
{
return $this->surchargeDays;
}
public function setSurchargeDays(?int $surchargeDays): OrderRequestLineItem
{
$this->surchargeDays = $surchargeDays;
return $this;
}
}