getMembership.ctrl.js 5.43 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.getMembership = async function (req, res, next) {
    var getCmd = "CustomerMembership";
    var sendCusCmd = "Customer";
    var sendMemCmd = "MemberCard";
    var d01 = "D01";
    var method = constant.METHOD.GET;

    if(req.params.customerId){
        var customerId = req.params.customerId
    } else if(req.params.userData && req.params.userType){
        var customerId = req.params.userData+"@"+req.params.userType
    } else if(req.query.clientName && req.query.commandId){
        var customerId = req.query.clientName+"@"+req.query.commandId;
    }

    log.startlog(method+"_"+getCmd,req.query.commandId,customerId);
    log.logDetail.addInput(req.query.clientName,method+"_"+getCmd,constant.REQUEST,req,req.body);
    
    var err = validator(req,getCmd);
    
    if(err.length > 0)
    {
        log.addErrorSummary(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.query.clientName,method+"_"+getCmd,"null","Success");
        var objectData = Object.assign(req.query,req.params);
        const result = await connection.requestJsonToD01(objectData,sendCusCmd,method);
        log.logDetail.addInput(d01,method+"_"+sendCusCmd,constant.RESPONSE,result,result.response);
        if(typeof result.err === 'undefined'){  
            var resultObj = result.response;
            if(resultObj.resultCode.startsWith("2"))
            {
                if(resultObj.resultData && resultObj.resultData.length>0)
                {
                    log.addSuccessSummary(d01,method+"_"+sendCusCmd,resultObj.resultCode,resultObj.resultDescription);
                    var cusIdArr = [];
                    stats.receiveRestResponse(d01,method,sendCusCmd,constant.SUCCESS);
                    for(var i = 0; i < resultObj.resultData.length; i++){
                        cusIdArr.push(resultObj.resultData[i].customerId)
                    }
                    objectData = {customerId : cusIdArr}
                    // console.log(objectData)
                    const resultMemberCard = await connection.requestJsonToD01(objectData,sendMemCmd,method);
                    stats.receiveRestResponse(d01,method,sendMemCmd,constant.SUCCESS);
                    log.logDetail.addInput(d01,method+"_"+sendCusCmd,constant.RESPONSE,resultMemberCard,resultMemberCard.response);
                    // console.log(JSON.stringify(resultMemberCard));
                    var resultMemberCardObj = resultMemberCard.response;
                    console.log(JSON.stringify(resultMemberCardObj))
                    log.addSuccessSummary(d01,method+"_"+sendMemCmd,resultMemberCardObj.resultCode,resultMemberCardObj.resultDescription);

                    for(var i = 0; i < resultObj.resultData.length; i++){
                        for(var j = 0; j < resultMemberCardObj.resultData.length; j++){
                            if(resultMemberCardObj.resultData[j].cardOwnerIdList.includes(resultObj.resultData[i].customerId)){
                                resultObj.resultData[i] = Object.assign(resultObj.resultData[i],{cardId : resultMemberCardObj.resultData[j].cardId});
                            }
                        }
                    }
                    var response = responseMsg.success(req,getCmd,resultObj);
                }else
                {
                    stats.receiveRestResponse(d01,method,sendCusCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage);
                    var response = responseMsg.error(req,getCmd,40300);
                    log.addErrorSummary(d01,method+"_"+sendCusCmd,response.resultCode,response.developerMessage);
                }
            } else {
                stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR);
                var response = responseMsg.direct(req,getCmd,resultObj);
                log.addErrorSummary(d01,method+"_"+sendCusCmd,resultObj.resultCode,resultObj.developerMessage);
            }
        } else {
            stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR);
            var response = responseMsg.error(req,getCmd,50000);
            // log.addErrorSummary(d01,method+"_"+sendCmd,response.resultCode,response.developerMessage);
        }
    }

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


function validator(req,cmd)
{
    var list = [];
    list.push([true,"queryStr","commandId","int"]);
    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;
}