123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- /**
- * @api
- */
- define([
- 'jquery',
- 'Magento_Checkout/js/model/new-customer-address',
- 'Magento_Customer/js/customer-data',
- 'mage/utils/objects'
- ], function ($, address, customerData, mageUtils) {
- 'use strict';
- var countryData = customerData.get('directory-data');
- return {
- /**
- * Convert address form data to Address object
- * @param {Object} formData
- * @returns {Object}
- */
- formAddressDataToQuoteAddress: function (formData) {
- // clone address form data to new object
- var addressData = $.extend(true, {}, formData),
- region,
- regionName = addressData.region;
- if (mageUtils.isObject(addressData.street)) {
- addressData.street = this.objectToArray(addressData.street);
- }
- addressData.region = {
- 'region_id': addressData['region_id'],
- 'region_code': addressData['region_code'],
- region: regionName
- };
- if (addressData['region_id'] &&
- countryData()[addressData['country_id']] &&
- countryData()[addressData['country_id']].regions
- ) {
- region = countryData()[addressData['country_id']].regions[addressData['region_id']];
- if (region) {
- addressData.region['region_id'] = addressData['region_id'];
- addressData.region['region_code'] = region.code;
- addressData.region.region = region.name;
- }
- } else if (
- !addressData['region_id'] &&
- countryData()[addressData['country_id']] &&
- countryData()[addressData['country_id']].regions
- ) {
- addressData.region['region_code'] = '';
- addressData.region.region = '';
- }
- delete addressData['region_id'];
- if (addressData['custom_attributes']) {
- addressData['custom_attributes'] = Object.entries(addressData['custom_attributes'])
- .map(function (customAttribute) {
- return {
- 'attribute_code': customAttribute[0],
- 'value': customAttribute[1]
- };
- });
- }
- return address(addressData);
- },
- /**
- * Convert Address object to address form data.
- *
- * @param {Object} addrs
- * @returns {Object}
- */
- quoteAddressToFormAddressData: function (addrs) {
- var self = this,
- output = {},
- streetObject;
- $.each(addrs, function (key) {
- if (addrs.hasOwnProperty(key) && !$.isFunction(addrs[key])) {
- output[self.toUnderscore(key)] = addrs[key];
- }
- });
- if ($.isArray(addrs.street)) {
- streetObject = {};
- addrs.street.forEach(function (value, index) {
- streetObject[index] = value;
- });
- output.street = streetObject;
- }
- return output;
- },
- /**
- * @param {String} string
- */
- toUnderscore: function (string) {
- return string.replace(/([A-Z])/g, function ($1) {
- return '_' + $1.toLowerCase();
- });
- },
- /**
- * @param {Object} formProviderData
- * @param {String} formIndex
- * @return {Object}
- */
- formDataProviderToFlatData: function (formProviderData, formIndex) {
- var addressData = {};
- $.each(formProviderData, function (path, value) {
- var pathComponents = path.split('.'),
- dataObject = {};
- pathComponents.splice(pathComponents.indexOf(formIndex), 1);
- pathComponents.reverse();
- $.each(pathComponents, function (index, pathPart) {
- var parent = {};
- if (index == 0) { //eslint-disable-line eqeqeq
- dataObject[pathPart] = value;
- } else {
- parent[pathPart] = dataObject;
- dataObject = parent;
- }
- });
- $.extend(true, addressData, dataObject);
- });
- return addressData;
- },
- /**
- * Convert object to array
- * @param {Object} object
- * @returns {Array}
- */
- objectToArray: function (object) {
- var convertedArray = [];
- $.each(object, function (key) {
- return typeof object[key] === 'string' ? convertedArray.push(object[key]) : false;
- });
- return convertedArray.slice(0);
- },
- /**
- * @param {Object} addrs
- * @return {*|Object}
- */
- addressToEstimationAddress: function (addrs) {
- var self = this,
- estimatedAddressData = {};
- $.each(addrs, function (key) {
- estimatedAddressData[self.toUnderscore(key)] = addrs[key];
- });
- return this.formAddressDataToQuoteAddress(estimatedAddressData);
- }
- };
- });
|