<?phpnamespace App\Entity;use App\Entity\Interfaces\DefaultLinkedEntity;use App\Entity\Traits\ActiveTrait;use App\Entity\Traits\DeleteTrait;use App\Entity\Traits\ImageUploadTrait;use App\Entity\Traits\LinkTrait;use App\Entity\Traits\MetaTrait;use App\Entity\Traits\TitleAndContentTrait;use App\Entity\Traits\TranslateTrait;use Doctrine\ORM\Mapping as ORM;use Gedmo\Mapping\Annotation as Gedmo;use Gedmo\Timestampable\Traits\TimestampableEntity;use Symfony\Component\Validator\Constraints as Assert;/** * Catalog. * * @Gedmo\Loggable * * @Gedmo\TranslationEntity(class="App\Entity\CatalogProductsTranslations") */#[ORM\Entity(repositoryClass: \App\Repository\CatalogRepository::class)]#[ORM\Table(name: 'catalog_products')]class CatalogProducts implements DefaultLinkedEntity{ use TitleAndContentTrait; use MetaTrait; use LinkTrait; use ActiveTrait; use DeleteTrait; use ImageUploadTrait; use TimestampableEntity; use TranslateTrait; #[ORM\Column(name: 'id', type: 'integer')] #[ORM\Id] #[ORM\GeneratedValue(strategy: 'AUTO')] private readonly int $id; /** * @Gedmo\Translatable */ #[ORM\Column(name: 'description', type: 'text', nullable: true)] private ?string $description = null; /** * @var string */ #[Assert\NotBlank(message: 'The price should not be blank')] #[ORM\Column(type: 'decimal', precision: 8, scale: 2)] private $price; #[ORM\ManyToOne(targetEntity: 'CatalogCategories', inversedBy: 'products')] #[ORM\JoinColumn(name: 'category_id', referencedColumnName: 'id')] private ?CatalogCategories $category = null; /** * Get fullSlugPath. * * @return string */ public function getFullSlugPath() { // this function generates a full url category path $url = []; $cat = $this->category; while (null != $cat) { $cat = $cat->getParent(); if (null != $cat) { $url[] = $cat->getSlug(); } } $urlrev = array_reverse($url); return '/'.implode('/', $urlrev).'/'.$this->category->getSlug().'/'.$this->getSlug(); } /** * Get id. * * @return int */ public function getId() { return $this->id; } /** * Set description. * * @param string $description * * @return CatalogProducts */ public function setDescription($description) { $this->description = $description; return $this; } /** * Get description. * * @return string */ public function getDescription() { return $this->description; } /** * Set price. * * @param string $price * * @return CatalogProducts */ public function setPrice($price) { $this->price = $price; return $this; } /** * Get price. * * @return string */ public function getPrice() { return $this->price; } /** * Set category. * * @return CatalogProducts */ public function setCategory(CatalogCategories $category = null) { $this->category = $category; return $this; } /** * Get category. * * @return \App\Entity\CatalogCategories */ public function getCategory() { return $this->category; } // REQUIRED BY THE META LINKS TRAIT public function getLinkedPageId(): int { // CW TODO _ SET THIS CORRECTLY return 0; }}