<?php
namespace App\Entity\ECommerce;
use Doctrine\ORM\Mapping as ORM;
use App\Entity\ECommerce\Traits\DatesTrait;
/**
* Synonym
*
* @ORM\Table(
* name="product_synonym",
* indexes={
* @ORM\Index(name="synonym_title", columns={"title"})
* }
* )
* @ORM\Entity(repositoryClass="App\Repository\ECommerce\SynonymRepository")
* @ORM\Cache(usage="READ_ONLY", region="public")
*/
class Synonym
{
const GREEN = 0;
const BLUE = 1;
const ORANGE = 2;
const RED = 3;
const CATEGORIES = [
'full' => self::GREEN,
'partial' => self::BLUE,
'fair' => self::ORANGE,
'poor' => self::RED,
];
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
/**
* @var int
*
* @ORM\Column(name="category", type="smallint")
*/
private $category = self::RED;
/**
* @var string
*
* @ORM\Column(name="manufacturer", type="string", length=30)
*/
private $manufacturer;
/**
* @var string
*
* @ORM\Column(name="description", type="string", length=255, nullable=true)
*/
private $description;
/**
* @var SynonymProduct
*
* @ORM\ManyToOne(targetEntity="App\Entity\ECommerce\SynonymProduct", inversedBy="synonyms")
* @ORM\JoinColumn(name="synonym_product", referencedColumnName="id")
*/
private $synonymProduct;
use DatesTrait {
DatesTrait::__construct as __DT_Construct;
}
/**
* Synonym constructor.
*/
public function __construct()
{
$this->__DT_Construct();
$this->createdAt = new \DateTime();
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set title
*
* @param string $title
*/
public function setTitle($title): static
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set category
*
* @param integer $category
*/
public function setCategory($category): static
{
$this->category = $category;
return $this;
}
/**
* Get category
*/
public function getCategory(): int
{
return $this->category;
}
/**
* Get category name
*/
public function getCategoryName(): string
{
$categories = array_flip(self::CATEGORIES);
return $categories[$this->category];
}
public function isPartial(): bool
{
return $this->category === self::BLUE;
}
/**
* Set manufacturer
*
*
*/
public function setManufacturer(string $manufacturer = ''): static
{
$this->manufacturer = $manufacturer;
return $this;
}
/**
* Get manufacturer
*/
public function getManufacturer(): string
{
return (string)$this->manufacturer;
}
/**
* Set description
*
* @param string $description
*/
public function setDescription($description): static
{
$this->description = $description;
return $this;
}
/**
* Get description
*
* @return string
*/
public function getDescription()
{
return $this->description;
}
/**
* Set synonymProduct
*
*
*/
public function setSynonymProduct(SynonymProduct $synonymProduct = null): static
{
$this->synonymProduct = $synonymProduct;
return $this;
}
/**
* Get synonymProduct
*
* @return SynonymProduct
*/
public function getSynonymProduct()
{
return $this->synonymProduct;
}
}