<?phpdeclare(strict_types=1);namespace App\Order\Doctrine\Entity;use ApiPlatform\Core\Annotation\ApiProperty;use App\Program\Doctrine\Entity\Profile;use App\Shop\Doctrine\Entity\Price;use App\Shop\Doctrine\Entity\Product;use Doctrine\ORM\Mapping\Column;use Doctrine\ORM\Mapping\Entity;use Doctrine\ORM\Mapping\GeneratedValue;use Doctrine\ORM\Mapping\Id;use Doctrine\ORM\Mapping\JoinColumn;use Doctrine\ORM\Mapping\ManyToOne;use Doctrine\ORM\Mapping\Table;use Symfony\Component\Serializer\Annotation\Groups;use Symfony\Component\Validator\Constraints\GreaterThan;use Symfony\Component\Validator\Constraints\NotBlank;use Symfony\Component\Validator\Constraints\NotNull;#[Entity]#[Table(name: 'order_line')]class Line{ #[Id] #[Column(type: 'integer')] #[GeneratedValue] private ?int $id = null; #[Column(type: 'integer')] #[Groups(['read', 'write'])] #[NotBlank] #[GreaterThan(0)] private int $quantity; #[Column(type: 'integer')] #[Groups(['read', 'write'])] #[NotBlank] #[GreaterThan(0)] private int $points; #[ManyToOne(targetEntity: Order::class, inversedBy: 'lines')] #[JoinColumn(nullable: false, onDelete: 'CASCADE')] private Order $order; #[ManyToOne(targetEntity: Product::class)] #[JoinColumn(nullable: false)] #[ApiProperty(readableLink: true, writableLink: false)] #[Groups(['read', 'write'])] #[NotNull] private Product $product; #[ManyToOne(targetEntity: Price::class)] #[JoinColumn(nullable: false)] private Price $price; public function getId(): ?int { return $this->id; } public function getQuantity(): int { return $this->quantity; } public function setQuantity(int $quantity): void { $this->quantity = $quantity; } public function getPoints(): int { return $this->points; } public function setPoints(int $points): void { $this->points = $points; } public function getOrder(): Order { return $this->order; } public function setOrder(Order $order): void { $this->order = $order; } public function getProduct(): Product { return $this->product; } public function setProduct(Product $product): void { $this->product = $product; } public function getPrice(): Price { return $this->price; } public function setPrice(Price $price): void { $this->price = $price; } public function getUnitPrice(): int { return $this->order->getShop()->getPriceValuation()->evaluate($this->product, $this->price); } public function getTotalPrice(): int { return $this->order->getShop()->getPriceValuation()->evaluate($this->product, $this->price) * $this->quantity; } public function getTotalPoints(): int { return $this->quantity * $this->points; }}