Zend certified PHP/Magento developer

custom customer address attibute not saved with admin customer save(M2.2)

I have created one custom customer address attribute create extenssion for admin.It create attribute and showed at admin address but it is not saving value for any attribute from admin side.
This is how i m saving address attribute on create form.

    <?php
namespace VendorCustomerAdminControllerAdminhtmlAttribute;
use MagentoFrameworkExceptionAlreadyExistsException;
use MagentoFrameworkControllerResultFactory;
use VendorCustomerAdminControllerAdminhtmlCustomerAttribute as CustomerAttribute;
use MagentoBackendAppActionContext;
use MagentoFrameworkRegistry;
use MagentoFrameworkViewResultPageFactory;
use MagentoCustomerModelAttributeFactory;
use MagentoEavModelAdminhtmlSystemConfigSourceInputtypeValidatorFactory;
use VendorCustomerAdminHelperData;
use MagentoFrameworkViewLayoutFactory;
use MagentoEavModelEntityAttributeSetFactory;
use MagentoCatalogModelProductUrlFactory;
use MagentoBackendModelViewResultRedirect;
use MagentoEavModelConfigFactory as EavConfig;
use VendorCustomerAdminHelperCustomerattribute as HelperData;
class Save extends CustomerAttribute
{
/**
* @var Data
*/
protected $customerAttributeHelper;
/**
* @var ValidatorFactory
*/
protected $validatorFactory;
/**
* @var LayoutFactory
*/
private $layoutFactory;
/**
* @param Context $context
* @param Registry $coreRegistry
* @param PageFactory $resultPageFactory
* @param UrlFactory $urlFactory
* @param ValidatorFactory $validatorFactory
* @param Data $customerAttributeHelper
* @param LayoutFactory $layoutFactory
* @param AttributeFactory $attributeFactory
* @param SetFactory $setFactory
* @param HelperData $helperData
* @param EavConfig $eavConfig
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
*/
public function __construct(
Context $context,
Registry $coreRegistry,
PageFactory $resultPageFactory,
UrlFactory $urlFactory,
ValidatorFactory $validatorFactory,
Data $customerAttributeHelper,
LayoutFactory $layoutFactory,
AttributeFactory $attributeFactory,
SetFactory $setFactory,
HelperData $helperData,
EavConfig $eavConfig
) {
parent::__construct($context, $coreRegistry, $resultPageFactory, $urlFactory, $helperData);
$this->validatorFactory        = $validatorFactory;
$this->customerAttributeHelper = $customerAttributeHelper;
$this->layoutFactory           = $layoutFactory;
$this->attributeFactory        = $attributeFactory;
$this->setFactory              = $setFactory;
$this->eavConfig               = $eavConfig;
}
public function execute()
{
$data = $this->getRequest()->getPostValue();
if ($data) {
$attributeId = $this->getRequest()->getParam('attribute_id');
$attributeCode = $this->getRequest()->getParam('attribute_code')
?: $this->generateCode($this->getRequest()->getParam('frontend_label')[0]);
/*Validate attribute code*/
if (strlen($attributeCode) > 0) {
$validatorAttrCode = new Zend_Validate_Regex(['pattern' => '/^[a-z][a-z_0-9]{0,30}$/']);
if (!$validatorAttrCode->isValid($attributeCode)) {
$this->messageManager->addError(
__(
'Attribute code "%1" is invalid. Please use only letters (a-z), ' .
'numbers (0-9) or underscore(_) in this field, first character should be a letter.',
$attributeCode
)
);
return $this->returnResult(
'customeradmin/*/edit',
['attribute_id' => $attributeId, '_current' => true],
['error' => true]
);
}
}
$data['attribute_code'] = $attributeCode;
if (isset($data['frontend_input'])) {
/** @var $inputType MagentoEavModelAdminhtmlSystemConfigSourceInputtypeValidator */
$inputType = $this->validatorFactory->create();
if (!$inputType->isValid($data['frontend_input'])) {
foreach ($inputType->getMessages() as $message) {
$this->messageManager->addError($message);
}
return $this->returnResult(
'customeradmin/*/edit',
['attribute_id' => $attributeId, '_current' => true],
['error' => true]
);
}
}
$model = $this->attributeFactory->create();
if ($attributeId) {
$model->load($attributeId);
if (!$model->getId()) {
$this->messageManager->addError(__('This attribute no longer exists.'));
return $this->returnResult('customeradmin/*/', [], ['error' => true]);
}
if ($model->getEntityTypeId() != $this->_entityTypeId) {
$this->messageManager->addError(__('We can't update the attribute.'));
$this->_session->setAttributeData($data);
return $this->returnResult('customeradmin/*/', [], ['error' => true]);
}
$data['attribute_code'] = $model->getAttributeCode();
$data['is_user_defined'] = $model->getIsUserDefined();
$data['frontend_input'] = $model->getFrontendInput();
} else {
$data['source_model'] = $this->customerAttributeHelper->getAttributeSourceModelByInputType(
$data['frontend_input']
);
$data['backend_model'] = $this->customerAttributeHelper->getAttributeBackendModelByInputType(
$data['frontend_input']
);
}
if (is_null($model->getIsUserDefined()) || $model->getIsUserDefined() != 0) {
$data['backend_type'] = $model->getBackendTypeByInput($data['frontend_input']);
}
$defaultValueField = $model->getDefaultValueByInput($data['frontend_input']);
if ($defaultValueField) {
$data['default_value'] = $this->getRequest()->getParam($defaultValueField);
}
$usedInForms = [];
if (isset($data['customer_account_create']) && $data['customer_account_create'] == 1) {
$usedInForms[] = 'customer_account_create';
}
if (isset($data['customer_account_edit']) && $data['customer_account_edit'] == 1) {
$usedInForms[] = 'customer_account_edit';
}
if (isset($data['adminhtml_customer']) && $data['adminhtml_customer'] == 1) {
$usedInForms[] = 'adminhtml_customer';
}
$data['used_in_forms'] = $usedInForms;
$this->entityTypeId = $this->helperData->getAddressTypeId();
$defaultAttributeSetId = $this->eavConfig->create()
->getEntityType($this->entityTypeId)
->getDefaultAttributeSetId();
$data['attribute_set_id'] = $defaultAttributeSetId;
//Get default attribute group id
$defaultAttributeGroupId = $this->setFactory->create()
->getDefaultGroupId($defaultAttributeSetId);
$data['attribute_group_id'] = $defaultAttributeGroupId;
$model->addData($data);
if (!$attributeId) {
$model->setEntityTypeId($this->_entityTypeId);
$model->setIsUserDefined(1);
}
try {
$model->save();
$this->messageManager->addSuccess(__('You saved the customer address attribute.'));
$this->_session->setAttributeData(false);
if ($this->getRequest()->getParam('back', false)) {
return $this->returnResult(
'customeradmin/*/edit',
['attribute_id' => $model->getId(), '_current' => true],
['error' => false]
);
}
return $this->returnResult('customeradmin/*/', [], ['error' => false]);
} catch (Exception $e) {
$this->messageManager->addError($e->getMessage());
$this->_session->setAttributeData($data);
return $this->returnResult(
'customeradmin/*/edit',
['attribute_id' => $attributeId, '_current' => true],
['error' => true]
);
}
}
return $this->returnResult('customeradmin/*/', [], ['error' => true]);
}
}