vizCard.ctrl.js 3.91 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://10.1.3.74:8080`;

var stats = require('../helper/stats.js'); 
var messageSOAP = require('../helper/messageSOAP.js'); 
var validatorHelper = require('../helper/validator.js');

exports.vizcard = async function (req, res, next) {

    var err = validator(req,"GET VIZCard");
    
    if(err.length > 0)
    {
        console.log(err);
        
        var response = {
            resultCode : "40300",
            developerMessage : "Missing or invalid parameter"
        };

        res.status(200).json(response);
    }else
    {        
        // 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>`

        var objectData = {
            Username : "axviz",
            Password : "1234",
            SystemName : "30",
            QueryType : "1",
            CardId : req.query.commandId,
            firstName : req.query.firstName,
            lastName : req.query.lastName,
            emailAddress : req.query.emailAddress,
            moblieNo : req.query.moblieNo
        };

        var soap = messageSOAP.objectToSOAP(objectData,"SearchCustomer")
        // console.log(soap);

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

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

        // console.log(result.err)

        if(typeof result.err === 'undefined'){
            var resultSoap = parseJson.xml2json(result.body, {compact: true, spaces: 4})
            resultSoap = JSON.parse(resultSoap)
            resultSoap = resultSoap['soap:Envelope']['soap:Body']['tem:SearchCustomerResponse']['tem:SearchCustomerResult']['tem:CustomerSearchResult'];

            var resultData = messageSOAP.soapToArray(req,resultSoap);

            var response = {
                resultCode : "20000",
                developerMessage : "Success",
                resultData : resultData,
                rowCount : resultData.length
            };
        } else {
            var response = {
                resultCode : "50000",
                developerMessage : "System error"
            };
        }
        
        res.status(200).json(response);
    }
};


function validator(req,api)
{
    var list = [];
    list.push([true,"commandId","int"]);
    list.push([true,"firstName","string"]);
    list.push([true,"lastName","string"]);
    list.push([true,"emailAddress","string"]);
    list.push([true,"mobileNo","string"]);
    list.push([false,"mobileNo","string"]);

    return validatorHelper(req,list,api);
}


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