<?php
/**
* Created by PhpStorm.
* User: adv
* Date: 15.12.15
* Time: 23:33
*/
namespace Slivki\Entity;
use Doctrine\Common\Collections\ArrayCollection;
class EntityDescription extends Entity implements \JsonSerializable {
const TYPE = 0;
const TYPE_OFFER_CONDITIONS_ID = 1;
const TYPE_OFFER_FEATURES_ID = 2;
const TYPE_OFFER_LOCATION_ID = 3;
const TYPE_OFFER_DESCRIPTION_ID = 4;
const TYPE_OFFER_LOGO_ID = 6;
const TYPE_OFFER_LEGAL_ID = 7;
const TYPE_OFFER_WORKING_HOURS_ID = 8;
const TYPE_SALE_DESCRIPTION_ID = 9;
const TYPE_SALE_FANCY_DESCRIPTION_ID = 10;
const TYPE_FOOD_ORDER_DESCRIPTION_ID = 11;
public const TYPE_VENDOR_CONDITION = 12;
public const TYPE_BRIEF_DELIVERY_CONDITION = 13;
protected $typeID;
protected $entityID;
protected $description;
protected $offer;
protected $entityDescriptionSliderImages;
protected $sortOrder;
public function __construct() {
if (!defined('static::TYPE')) {
throw new \Exception('Constant TYPE is not defined in ' . get_class($this));
}
$this->entityDescriptionSliderImages = new ArrayCollection();
}
public function getTypeID() {
return $this->typeID;
}
public function setTypeID($typeID) {
$this->typeID = $typeID;
}
public function getEntityID() {
return $this->entityID;
}
public function setEntityID($entityID) {
$this->entityID = $entityID;
}
public function getDescription() {
return $this->description;
}
public function setDescription($description) {
$this->description = $description;
}
public function getSortOrder() {
return $this->sortOrder;
}
public function setSortOrder($sortOrder) {
$this->sortOrder = $sortOrder;
}
/**
* @return \Slivki\Entity\Offer
*/
public function getOffer() {
return $this->offer;
}
public function setOffer(Offer $offer) {
$this->offer = $offer;
$this->entityID = $offer->getID();
}
public function getEntityDescriptionSliderImages() {
return $this->entityDescriptionSliderImages;
}
public function addEntityDescriptionSliderImage(EntityDescriptionSliderImage $entityDescriptionSliderImage) {
if (!$this->entityDescriptionSliderImages->contains($entityDescriptionSliderImage)) {
$this->entityDescriptionSliderImages->add($entityDescriptionSliderImage);
}
}
public function getType() {
return static::TYPE;
}
public function jsonSerialize(): array
{
return [
'ID' => $this->ID,
'sortOrder' => $this->sortOrder,
'typeID' => $this->typeID,
'description' => $this->description,
'entityDescriptionSliderImages' => $this->entityDescriptionSliderImages->toArray()
];
}
public static function fromJSON($data) {
$class = static::class;
$description = new $class();
$description->setDescription($data->description);
$description->setTypeID($data->typeID);
$description->setID($data->ID);
$description->setSortOrder($data->sortOrder);
foreach ($data->entityDescriptionSliderImages as $sliderImage) {
$description->addEntityDescriptionSliderImage(EntityDescriptionSliderImage::fromJSON($sliderImage));
}
return $description;
}
public static function getDescriptionClass($type) {
$classes = ['EntityDescription', 'SaleDescription', 'SaleFancyDescription', 'SaleLoadMoreBtnDescription', 'SaleLoadMoreBtnDescription'];
if (!isset($classes[$type])) {
throw new \Exception('Class not found. ' . $type);
}
return "Slivki\Entity\\" . $classes[$type];
}
}