'summit_hall_checked_in:json_boolean', 'SummitHallCheckedInDate' => 'summit_hall_checked_in_date:datetime_epoch', 'SharedContactInfo' => 'shared_contact_info:json_boolean', 'MemberId' => 'member_id:json_int', ]; /** * @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()) { if(!count($relations)) $relations = $this->getAllowedRelations(); $attendee = $this->object; if(!$attendee instanceof SummitAttendee) return []; $serializer_type = SerializerRegistry::SerializerType_Public; if(isset($params['serializer_type'])) $serializer_type = $params['serializer_type']; $summit = $attendee->getSummit(); $values = parent::serialize($expand, $fields, $relations, $params); $member = null; $speaker = null; $tickets = []; foreach($attendee->getTickets() as $t) { if(!$t->hasTicketType()) continue; $tickets[] = intval($t->getTicketType()->getId()); } $values['tickets'] = $tickets; if($attendee->hasMember()) { $member = $attendee->getMember(); $values['member_id'] = $member->getId(); $speaker = $summit->getSpeakerByMember($member); if (!is_null($speaker)) { $values['speaker_id'] = intval($speaker->getId()); } } if (!empty($expand)) { $exp_expand = explode(',', $expand); foreach ($exp_expand as $relation) { switch (trim($relation)) { case 'tickets': { unset($values['tickets']); $tickets = []; foreach($attendee->getTickets() as $t) { $tickets[] = SerializerRegistry::getInstance()->getSerializer($t)->serialize($expand); } $values['tickets'] = $tickets; } break; case 'speaker': { if (!is_null($speaker)) { unset($values['speaker_id']); $values['speaker'] = SerializerRegistry::getInstance()->getSerializer($speaker)->serialize(); } } break; case 'member':{ if($attendee->hasMember()) { unset($values['member_id']); $values['member'] = SerializerRegistry::getInstance() ->getSerializer($attendee->getMember(), $serializer_type) ->serialize( $expand, [], [], ['summit' => $attendee->getSummit()]); } } break; } } } return $values; } }