<?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]; }}