<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
#[ORM\Entity]
class CartItemRental extends CartItem implements CartItemShopInterface
{
#[ORM\ManyToOne(targetEntity: ItemVariation::class, inversedBy: 'rentals')]
private $rentalItem;
#[ORM\OneToOne(inversedBy: 'cartItemRental', targetEntity: Rental::class, cascade: ['persist', 'remove'])]
private $rental;
public function getRentalItem(): ?ItemVariation
{
return $this->rentalItem;
}
public function setRentalItem(?ItemVariation $rentalItem): self
{
$this->rentalItem = $rentalItem;
return $this;
}
public function getVariation(): ItemVariation
{
return $this->rentalItem;
}
public function getName(): ?string
{
return parent::getName() ?? sprintf('%s (location)', $this->getRentalItem()?->getName());
}
public function getRental(): ?Rental
{
return $this->rental;
}
public function setRental(?Rental $rental): self
{
$this->rental = $rental;
return $this;
}
public static function createFromItemVariation(ItemVariation $variation): CartItem
{
return (new self())
->setPrice($variation->getPrice())
->setRentalItem($variation);
}
}