vizCard.ctrl.js 4.05 KB
var parseJson = require('xml-js');

var stats = require('../helper/stats.js'); 
var messageSOAP = require('../helper/messageSOAP.js'); 
var validatorHelper = require('../helper/validator.js');
var connection = require('../helper/connection.js');
var responseMsg = require('../helper/responseMsg.js');
var log = require('../helper/log.js');
var constant = require('../helper/constants.js')

exports.vizcard = async function (req, res, next) {
    var getCmd = "VIZCard";
    var sendCmd = "SearchCustomer";
    var sacf = "SACF";
    var method = constant.METHOD.GET;

    if(req.query.clientName && req.query.commandId){
        var customerId = req.query.clientName+"@"+req.query.commandId;
    }
    log.startlog(req,method+"_"+getCmd,req.query.commandId,customerId);
    log.logDetail.addInput(req,req.query.clientName,method+"_"+getCmd,constant.REQUEST,req,req.body);
    
    var err = validator(req,getCmd);
    
    if(err.length > 0)
    {
        log.addErrorSummary(req,req.query.clientName,method+"_"+getCmd,"null","Fail");
        // log.log(err,'error'); 
        var response = responseMsg.error(req,getCmd,40300);
        // res.status(200).json(response);
    }else
    {        
        log.addSuccessSummary(req,req.query.clientName,method+"_"+getCmd,"null","Success");
        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
        };

        const result = await connection.requestSoapToSACF(objectData,sendCmd,constant.METHOD.POST);
        // console.log(result.err)

        if(typeof result.err === 'undefined'){  

            try {
                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 resultSet = messageSOAP.soapToArray(req,resultSoap);
                stats.receiveSACFResponse(sacf,sendCmd,"Success");
                var response = responseMsg.success(req,getCmd,{resultData:resultSet.returnData,rowCount:resultSet.returnData.length});

                log.addSuccessSummary(req,sacf,method+"_"+sendCmd,response.resultCode,response.developerMessage);
            }
            catch(error) {
                log.log(error,'error')
                stats.receiveSACFBadResponse(sacf,sendCmd);
                response = responseMsg.error(req,getCmd,50000);
                log.addErrorSummary(req,sacf,method+"_"+sendCmd,response.resultCode,response.developerMessage);
                var resultSet = {rawDataJson : ""}
            }
            
        } else {
            stats.receiveSACFResponse(sacf,sendCmd,"Error");
            response = responseMsg.error(req,getCmd,50000);
            // log.addErrorSummary(sacf,method+"_"+sendCmd,response.resultCode,response.developerMessage);
            var resultSet = {rawDataJson : ""}
        }

        log.logDetail.addInput(req,sacf,method+"_"+sendCmd,constant.RESPONSE,result,resultSet.rawDataJson);
    }

    // console.log(response);
    log.logDetail.addOutput(req,sacf,method+"_"+getCmd,constant.RESPONSE,response,response); 
    res.status(200).json(response);
    next();
};


function validator(req,cmd)
{
    var list = [];
    list.push([true,"queryStr","commandId","string"]);
    list.push([true,"queryStr","clientName","string"]);
    // list.push([true,"queryStr","lastName","string"]);
    // list.push([true,"queryStr","emailAddress","string"]);
    // list.push([true,"queryStr","mobileNo","string"]);
    // list.push([false,"queryStr","mobileNo","string"]);

    var err = validatorHelper(req,list);
    if(err.length > 0)    
        stats.receiveBadRequest(req.method,cmd);    
    else
        stats.receiveRequest(req.method,cmd);

    return err;
}