/**
  * @param AbstractQueryDesigner $abstractQueryDesigner
  * @param object $entity
  * @param string $type
  *
  * @return string[]
  */
 public function getQueryContactInformationFields(AbstractQueryDesigner $abstractQueryDesigner, $entity, $type)
 {
     $contactInformationFields = $this->contactInformationFieldHelper->getEntityContactInformationColumns(ClassUtils::getRealClass($entity));
     if (empty($contactInformationFields)) {
         return [];
     }
     $definitionColumns = [];
     $definition = $abstractQueryDesigner->getDefinition();
     if ($definition) {
         $definition = json_decode($definition, JSON_OBJECT_AS_ARRAY);
         if (!empty($definition['columns'])) {
             $definitionColumns = array_map(function (array $columnDefinition) {
                 return $columnDefinition['name'];
             }, $definition['columns']);
         }
     }
     $typedFields = array_keys(array_filter($contactInformationFields, function ($contactInformationField) use($type) {
         return $contactInformationField === $type;
     }));
     if (!empty($definitionColumns)) {
         $typedFields = array_intersect($typedFields, $definitionColumns);
     }
     $propertyAccessor = PropertyAccess::createPropertyAccessor();
     return array_map(function ($typedField) use($propertyAccessor, $entity) {
         return (string) $propertyAccessor->getValue($entity, $typedField);
     }, $typedFields);
 }
 public function testGetEntityContactInformationColumns()
 {
     $entity = '\\stdClass';
     $columns = array($this->fields['one'], $this->fields['two'], $this->fields['three'], $this->fields['four']);
     $this->assertEntityMetadataCall($entity, $columns);
     $this->assertContactInformationConfig($entity);
     $this->assertEquals(array($this->fields['one'] => 'email', $this->fields['two'] => 'phone'), $this->helper->getEntityContactInformationColumns($entity));
 }
 /**
  * @param string|object $entityOrClass
  * @param string|null $type
  * @return array
  */
 public function getEntityTypedFields($entityOrClass, $type = null)
 {
     $entityOrClass = ClassUtils::getRealClass($entityOrClass);
     $contactInformationFields = $this->contactInformationFieldHelper->getEntityContactInformationColumns($entityOrClass);
     if (empty($contactInformationFields)) {
         return [];
     }
     if ($type) {
         $contactInformationFields = $this->filterByType($contactInformationFields, $type);
     }
     return $contactInformationFields;
 }