public function getAttributeCollection()
{
if ($this->attributeCollection === null) {
$this->attributeCollection = $this->attributeCollectionFactory->create();
$mapping = $this->getMapping();
$attributeNameMapping = array_flip($this->fieldNameMapping);
$arrayNameCb = function (FieldInterface $field) use($attributeNameMapping) {
$attributeName = $field->getName();
if (isset($attributeNameMapping[$attributeName])) {
$attributeName = $attributeNameMapping[$attributeName];
}
return $attributeName;
};
$attributeFilterCb = function (FieldInterface $field) use($mapping) {
try {
$fieldName = $field->getName();
$optionTextFieldName = $this->mappingHelper->getOptionTextFieldName($fieldName);
$field = $mapping->getField($optionTextFieldName);
} catch (\Exception $e) {
}
return $field->isFilterable() || $field->isSearchable();
};
$fieldNames = array_map($arrayNameCb, array_filter($this->getMapping()->getFields(), $attributeFilterCb));
$this->attributeCollection->addFieldToFilter('attribute_code', $fieldNames)->addFieldToFilter('backend_type', ['neq' => 'datetime']);
}
return $this->attributeCollection;
}