messageSOAP.js 2.55 KB
var soap = [];

soap.objectToSOAP = function (objectData,tag){
    var header = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/"><soap:Header/><soap:Body>';   
    var footer = "</soap:Body></soap:Envelope>";  
    var body = "<tem:"+tag+">"+getBodySOAP(objectData)+"</tem:"+tag+">";

    return header+body+footer;
    
};

soap.soapToArray = function(req,resultSoap)
{  
    var returnData = [];
   
    if(req.query.fields){
        var listFields = req.query.fields.split(",");
        console.log(listFields)
    }

        var resultSet = [];
        if(Array.isArray(resultSoap))
        {
            for(var i=0;i<resultSoap.length;i++)
            {
                var row = resultSoap[i];         
                delete row._comment;
                resultSet.push(row);              
                
            }
        }else
        {
            delete resultSoap._comment;
            resultSet.push(resultSoap);
        }

        
        // console.log(resultSet);       

        var rawDataArr = [];

        for(var i=0;i<resultSet.length;i++)
        {            
            var data = {}
            var rawData = {}
            for(var key in resultSet[i]){
                var keyObj = capitalizeFirstLetter(key.replace('tem:',''))
                // console.log(keyObj+' : '+resultSet[i][key]['_text']);
                if(listFields){
                    if(listFields.includes(keyObj)){
                        data[keyObj] = resultSet[i][key]['_text'];
                    }
                } else {
                    data[keyObj] = resultSet[i][key]['_text'];
                }
                rawData[keyObj] = resultSet[i][key]['_text'];
            }
            rawDataArr.push(rawData);
            returnData.push(data);
        }

        return { returnData : returnData, rawDataJson : rawDataArr};
};

function getBodySOAP(objectData)
{
    var body = "";
    if(typeof objectData != 'undefined')
    {
        var keyList = Object.keys(objectData);
        for(var i=0;i<keyList.length;i++)
        {
            if(objectData[keyList[i]]){
                if(typeof objectData[keyList[i]] != 'object')
                    body += "<tem:"+keyList[i]+">"+objectData[keyList[i]]+"</tem:"+keyList[i]+">";
                else
                    body += "<tem:"+keyList[i]+">"+getBodySOAP(objectData[keyList[i]])+"</tem:"+keyList[i]+">";
            }
        }
    }
    return body;
}

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

module.exports = soap;