vizCard.ctrl.js 2.62 KB
var fs = require('fs'); 
var moment = require('moment');
var _ = require('lodash');  
var env = process.env.NODE_ENV || 'development'; 
var rp = require('request-promise'); 
var logger = require('../../logger/logger');
var cfg = require('../../config/config.js').get(env);
var request = require('request');
var parseJson = require('xml-js');
var _url = `http://localhost:8080`

exports.vizcard = async function (req, res, next) {
    var requestXml = `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/">
    <soap:Header/>
    <soap:Body>
        <tem:SearchCustomer>
            <tem:username>axviz</tem:username>
            <tem:password>1234</tem:password>
            <tem:systemName>30</tem:systemName>
            <tem:queryType>1</tem:queryType>
            <tem:cardId>${req.params.id}</tem:cardId>
        </tem:SearchCustomer>
    </soap:Body>
    </soap:Envelope>`

    // console.log(requestXml);
    // console.log(req.query.fields)

    const result = await asyncRequest({
        url               : _url,
        body              : requestXml,
        method            : 'POST'
    });

    // parseString(result.body, function (err, result1) {
    //     console.log(result1);
    // });

    var result1 = parseJson.xml2json(result.body, {compact: true, spaces: 4})
    result1 = JSON.parse(result1)
    result1 = result1['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult'];
    delete result1._comment;

    var response = {};

    response['resultCode'] = '20000';
    response['developerMessage'] = 'Success';

    if(req.query.fields){
        var listFields = req.query.fields.split(",");
        // console.log(listFields)
    }

    for(var key in result1){
        var keyObj = capitalizeFirstLetter(key.replace('tem:',''))
        // console.log(keyObj+' : '+result1[key]['_text']);
        if(listFields){
            if(listFields.includes(keyObj)){
                response[keyObj] = result1[key]['_text'];
            }
        } else {
            response[keyObj] = result1[key]['_text'];
        }
    }
    
    res.status(200).json(response);
};

function capitalizeFirstLetter(string) {
    return string.charAt(0).toLowerCase() + string.slice(1);
}

function asyncRequest (params = {}) {
    return new Promise((resolve, reject) => {
        request(params, function (error, response, body) {
            if (error) {
                reject(error);
            } else {
                resolve({
                    'body'    : body,
                    'response': response
                });
            }
        });
    });
}