Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/packages / core / auth / user / privacySection / transform.js
Size: Mime:
import { autofixSafe as autofix } from '@exotic/presets';
import { toBoolean, isNonEmptyArray } from 'exotic';
import { getTyped } from 'composition';
import { wording } from './fixture';
const objToString = (obj) => {
    const objString = {
        value: '',
    };
    Object.keys(obj).forEach(key => {
        if (key !== 'label' && key !== '__typename') {
            objString.value += obj[key] + ' ';
        }
    });
    return objString.value;
};
const transformCard = (card) => {
    const { lastfourdigits, expirationmonth, expirationyear } = card;
    const paymentMethod = lastfourdigits && expirationmonth && expirationyear
        ? '"' +
            wording.visaEnding +
            ' *' +
            lastfourdigits +
            wording.expire +
            expirationmonth +
            '/' +
            expirationyear.slice(-2) +
            '"'
        : '';
    return paymentMethod;
};
const transformAddress = (address) => {
    const { addressLine1, addressLine2, city, state, country, postalCode } = address;
    const userAddress = [addressLine1, addressLine2, city, state, country, postalCode];
    const addressValue = userAddress.filter(data => data);
    const addressMethod = '"' + addressValue.join(',') + '"';
    return addressMethod;
};
const isDefaultPayment = (card) => toBoolean(card.isdefault) === true;
const isDefaultAddress = (address) => toBoolean(address.isDefault) === true;
const emptyCsv = (text) => {
    // const formatData = [text, '']
    // const csv = formatData.join(',') + '\n'
    const csv = `${text},\n`;
    return csv;
};
const transformProfileData = (props, addressInfo, profileDetails) => {
    const profileInformation = {
        csv: '',
        paymentDetails: [],
        addressDetails: [],
    };
    const basicDetails = (addressCardDetails) => {
        const { cards, userinfo } = addressCardDetails;
        const addressAndPaymentInfo = {
            defaultAddress: '',
            defaultPayment: '',
        };
        /**
         * if some data are not available spreadsheet fill the cell with next available data
         * so misalignment occurs in exported data to fix that issue defaul data provided (emptyData)
         */
        const emptyData = '-';
        const { firstName, lastName, phoneNumber, email } = userinfo;
        const profileData = wording.profileData;
        if (cards.length > 0) {
            profileInformation.paymentDetails = cards.map(transformCard);
            const defaultPaymentIndex = cards.findIndex(isDefaultPayment);
            addressAndPaymentInfo.defaultPayment =
                profileInformation.paymentDetails[defaultPaymentIndex] || '';
        }
        if (addressInfo.length > 0) {
            profileInformation.addressDetails = addressInfo.map(transformAddress);
            const defaultAddressIndex = addressInfo.findIndex(isDefaultAddress);
            addressAndPaymentInfo.defaultAddress =
                profileInformation.addressDetails[defaultAddressIndex] || '';
        }
        const userData = [
            firstName || emptyData,
            lastName || emptyData,
            phoneNumber || emptyData,
            email || emptyData,
            addressAndPaymentInfo.defaultAddress || emptyData,
            addressAndPaymentInfo.defaultPayment || emptyData,
        ];
        for (let i = 0 && profileData.length === userData.length; i < profileData.length; i++) {
            const formatData = [profileData[i], userData[i]];
            profileInformation.csv += formatData.join(',') + '\n';
        }
    };
    const preferencesDetails = () => {
        profileInformation.csv += '\n';
        const sendemails = autofix(profileDetails.sendemails) ? 'ON' : 'OFF';
        const permission = autofix(profileDetails.permission) ? 'ON' : 'OFF';
        const sendSMS = autofix(profileDetails.sendSMS) ? 'ON' : 'OFF';
        const emailText = [wording.preferences, sendemails];
        profileInformation.csv += emailText.join(',') + '\n';
        const permissionText = [wording.permission, permission];
        profileInformation.csv += permissionText.join(',') + '\n';
        const sendSMSText = [wording.sendSMS, sendSMS];
        profileInformation.csv += sendSMSText.join(',') + '\n';
    };
    const addressPaymentDetails = () => {
        profileInformation.csv += '\n';
        if (profileInformation.addressDetails.length) {
            profileInformation.addressDetails.forEach((addressDetail, index) => {
                const formatData = [wording.address + (index + 1), addressDetail];
                profileInformation.csv += formatData.join(',') + '\n';
            });
        }
        else {
            const emptyData = [wording.address, '-'];
            profileInformation.csv += emptyData.join(',') + '\n';
        }
        profileInformation.csv += '\n';
        if (profileInformation.paymentDetails.length) {
            profileInformation.paymentDetails.forEach((paymentMethod, index) => {
                const formatData = [wording.paymentMethod + (index + 1), paymentMethod];
                profileInformation.csv += formatData.join(',') + '\n';
            });
        }
        else {
            const emptyData = [wording.paymentMethod, '-'];
            profileInformation.csv += emptyData.join(',') + '\n';
        }
    };
    profileInformation.csv = '';
    basicDetails(props);
    preferencesDetails();
    addressPaymentDetails();
    return profileInformation.csv;
};
const transformOrderHistory = (orderList) => {
    const orderHistory = {
        options: [],
        fields: [],
        csv: '',
    };
    const orderHistoryHeaders = () => {
        const fields = [
            'Order #',
            'Order Placed',
            'Order Status',
            'Image URL',
            'SKU #',
            'Shipping Address',
            'Shipping Method',
            'Payment Method',
            'SKU Quantity',
            'Price/Item',
            'Estimated Overall Sales Tax for Order',
            'Order Total',
        ];
        return fields;
    };
    const orderHistoryOptions = (orderInfo) => {
        const orderItems = orderInfo.productItems[0];
        const paymentInfo = '';
        const { string } = getTyped(paymentInfo);
        const emptyData = '-';
        const { array } = getTyped(orderInfo);
        const items = array('productItems.0.productItem');
        const item = isNonEmptyArray(items) ? items : [];
        const orderHistoryOption = item.map(function (product) {
            const options = [
                orderInfo.orderId || emptyData,
                '"' + orderInfo.orderCreatedTime + '"' || emptyData,
                orderInfo.status || emptyData,
                product.image || emptyData,
                product.skuId || emptyData,
                objToString(product.shippingAddress) || emptyData,
                product.shippingMethod || emptyData,
                string('carddetails.cardNumber') || emptyData,
                product.quantity || emptyData,
                product.price || emptyData,
                orderInfo.math.tax || emptyData,
                orderInfo.math.grandTotal || emptyData,
            ];
            return options;
        });
        return orderHistoryOption;
    };
    const handleOrderHistoryItem = (item) => {
        orderHistory.csv += item.join(',') + '\n';
    };
    // @note this type must be wrong
    const handleOrderHistoryList = (option) => {
        if (option.length > 1) {
            option.forEach(handleOrderHistoryItem);
            orderHistory.csv += '\n';
        }
        else {
            orderHistory.csv += option.join(',') + '\n' + '\n';
        }
    };
    orderHistory.csv = '';
    orderHistory.options = orderList.orders.map(orderHistoryOptions);
    orderHistory.fields = orderHistoryHeaders();
    orderHistory.csv = orderHistory.fields.join(',') + '\n';
    orderHistory.options.forEach(handleOrderHistoryList);
    return orderHistory.csv;
};
export { transformProfileData, transformOrderHistory };
//# sourceMappingURL=transform.js.map