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(req,method+"_"+getCmd,req.query.commandId,customerId); log.logDetail.addInput(req,req.query.clientName,method+"_"+getCmd,constant.REQUEST,req,req.body); var err = await 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); }else { log.addSuccessSummary(req,req.query.clientName,method+"_"+getCmd,"null","Success"); var objectData = Object.assign(req.query,req.params); const result = await connection.requestJsonToD01(req,objectData,sendCusCmd,method); log.logDetail.addInput(req,d01,method+"_"+sendCusCmd,constant.RESPONSE,result,result.response); //Get Customer if(typeof result.err === 'undefined'){ var resultObj = result.response; if(resultObj.resultCode.startsWith("2")) { if(resultObj.resultData && resultObj.resultData.length>0) { log.addSuccessSummary(req,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) } var objectMemberCardData = {customerId : cusIdArr} const resultMemberCard = await connection.requestJsonToD01(req,objectMemberCardData,sendMemCmd,method); //Get MemberCard handler if(typeof resultMemberCard.err === 'undefined'){ var resultMemberCardObj = resultMemberCard.response; if(resultMemberCardObj.resultCode.startsWith("2")){ if(resultMemberCardObj.resultData && resultMemberCardObj.resultData.length>0){ stats.receiveRestResponse(d01,method,sendMemCmd,constant.SUCCESS); log.logDetail.addInput(req,d01,method+"_"+sendMemCmd,constant.RESPONSE,resultMemberCard,resultMemberCard.response); log.addSuccessSummary(req,d01,method+"_"+sendMemCmd,resultMemberCardObj.resultCode,resultMemberCardObj.resultDescription); try{ 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); } catch(err){ log.log(err); stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR); var response = responseMsg.error(req,getCmd,50000); } } else { stats.receiveRestResponse(d01,method,sendCusCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage); var response = responseMsg.error(req,getCmd,40401); log.addErrorSummary(req,d01,method+"_"+sendCusCmd,response.resultCode,response.developerMessage); } } else if(resultObj.resultCode.startsWith("404")){ stats.receiveRestResponse(d01,method,sendCusCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage); var response = responseMsg.direct(req,getCmd,resultObj); log.addErrorSummary(req,d01,method+"_"+sendCusCmd,response.resultCode,response.developerMessage); } else if(resultObj.resultCode.startsWith("5")){ stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR); var response = responseMsg.direct(req,getCmd,resultObj); log.addErrorSummary(req,d01,method+"_"+sendCusCmd,response.resultCode,response.developerMessage); } else { stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR); var response = responseMsg.error(req,getCmd,50000); } } else { stats.receiveRestResponse(d01,method,sendCusCmd,constant.ERROR); var response = responseMsg.error(req,getCmd,50000); // log.addErrorSummary(d01,method+"_"+sendCusCmd,resultObj.resultCode,resultObj.developerMessage); }//End get MemberCard } else { stats.receiveRestResponse(d01,method,sendCusCmd,constant.RESPONSERESULT.DATA_NOT_FOUND.developerMessage); var response = responseMsg.error(req,getCmd,40300); log.addErrorSummary(req,d01,method+"_"+sendCusCmd,response.resultCode,response.developerMessage); } } else if(resultObj.resultCode.startsWith("404")){ stats.receiveRestResponse(d01,method,sendMemCmd,constant.ERROR); var response = responseMsg.direct(req,getCmd,resultObj); log.addErrorSummary(req,d01,method+"_"+sendMemCmd,response.resultCode,response.developerMessage); } else if(resultObj.resultCode.startsWith("5")){ stats.receiveRestResponse(d01,method,sendMemCmd,constant.ERROR); var response = responseMsg.direct(req,getCmd,resultObj); log.addErrorSummary(req,d01,method+"_"+sendMemCmd,response.resultCode,response.developerMessage); } else { stats.receiveRestResponse(d01,method,sendMemCmd,constant.ERROR); var response = responseMsg.error(req,getCmd,50000); } } 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,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; }