'is_main::json_boolean', ); /** * @param null $expand * @param array $fields * @param array $relations * @param array $params * @return array */ public function serialize($expand = null, array $fields = array(), array $relations = array(), array $params = array() ) { $values = parent::serialize($expand, $fields, $relations, $params); $venue = $this->object; if(!$venue instanceof SummitVenue) return []; // rooms $rooms = []; foreach($venue->getRooms() as $room) { $rooms[] = $room->getId(); } if(count($rooms) > 0) $values['rooms'] = $rooms; // floors $floors = []; foreach($venue->getFloors() as $floor) { $floors[] = $floor->getId(); } if(count($floors) > 0) $values['floors'] = $floors; if (!empty($expand)) { foreach (explode(',', $expand) as $relation) { $relation = trim($relation); switch ($relation) { case 'rooms': { if($venue->hasRooms()) { $rooms = []; foreach ($venue->getRooms() as $room) { $rooms[] = SerializerRegistry::getInstance()->getSerializer($room)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); } $values['rooms'] = $rooms; } } break; case 'floors': { if($venue->hasFloors()) { $floors = []; foreach ($venue->getFloors() as $floor) { $floors[] = SerializerRegistry::getInstance()->getSerializer($floor)->serialize(AbstractSerializer::filterExpandByPrefix($expand, $relation)); } $values['floors'] = $floors; } } break; } } } return $values; } }