Untitled

mail@pastecode.io avatar
unknown
javascript
a year ago
4.5 kB
11
Indexable
let bankValid = async (req, res) => {
    try{
        if(autoPass == 'Y'){
            log.debug('autoPass', autoPass);
            return res.send({success: true, result: 'P', comment: ''});
        }

        log.debug('[Bank] Start check bank-valid', req.body);
        let {ApplicationId, BankNo, AccNo, AccountName, AccType = 0 } = req.body;
        
        const channelConfig = {
            params: 'CHANNELTYPE',
            table_name: 'APP_PROCESS',
            cond_keyword: 'APPLICATIONID',
            cond_value: ApplicationId
        };
        const channelInfo = await customerModel.selectWTable(channelConfig, connection.lpms);
        
        if (channelInfo && channelInfo.length > 0) {
            const channelName = channelInfo[0].CHANNELTYPE;
            if (channelName === 'SPL') {
                log.debug('[Check bankValid] Auto Pass SPL');
                return res.send({success: true, result: 'P', comment: ''});
            }
        }
        
        if(!ApplicationId || ApplicationId == ''){
            log.debug('ApplicationId ', ApplicationId);
            return res.send({
                success: false,
                result: null,
                comment: 'Invalid application id'
            });
        }

        if(![0,1,'0','1'].includes(AccType)){
            log.debug('AccType ', AccType);
            return res.send({
                success: true,
                result: 'D',
                comment: 'Lỗi vận hành trong quá trình xác thực tài khoản. Vui lòng liên hệ IT xử lý và thử lại (120)'
            });
        }

        if(!BankNo || BankNo == ''){
            log.debug('BankNo ', BankNo);
            return res.send({
                success: true,
                result: 'D',
                comment: 'Lỗi vận hành trong quá trình xác thực tài khoản. Vui lòng liên hệ IT xử lý và thử lại (115)'
            });
        }

        if(!AccNo || AccNo.length < 4 || AccNo.length > 22){
            log.debug('AccNo ', AccNo);
            return res.send({
                success: true,
                result: 'D',
                comment: 'Số tài khoản bắt buộc có độ dài từ 4-22 ký tự'
            });
        }
        
        if(!AccountName || AccountName == ''){
            log.debug('AccountName ', AccountName);
            return res.send({
                success: true,
                result: 'D',
                comment: 'Lỗi vận hành trong quá trình xác thực tài khoản. Vui lòng liên hệ IT xử lý và thử lại (134)'
            });
        }

        // check bank exist
        const bankConfigJson = fs.readFileSync(`${directoryPath}/bankConfig.json`);
        const bank = JSON.parse(bankConfigJson);
        let bankList = bank['BANK_LIST'];

        let existInBankList = bankList.find(ele => { return ele.BANK_NO === BankNo.trim()});
        if(!existInBankList){
            return res.send({
                success: true,
                result: 'D',
                comment: 'Lỗi vận hành trong quá trình xác thực tài khoản. Vui lòng liên hệ IT xử lý và thử lại (116)'
            });
        }

        let checkName = await helper.containsSpecialChars(AccountName, /[']/);
        
        let out = await service.bankValidationOTM(ApplicationId, BankNo, AccNo, AccountName, AccType, checkName ? 2 : 1);

        log.debug('Bank validation - out', out);
        if(out.success){
            if(out.result == 'P' || out.result == 'R'){
                if(out.result == 'R'){
                    await commonModels.insertRiskRulesLogs(ApplicationId, null, RISK_MESSAGE['700']['data']['701']);
                }
                return res.send({success: true, result: out.result, comment: out.result == 'R' ? 'UND:-SEPERATOR-Risk:' + RISK_MESSAGE['700']['data']['701']['sale_message'] : ''});
            }else{
                return res.send({success: true, result: out.result, comment: out.message});
            }
        }else{
            log.debug('Bank validation - error', out.message);
            return res.send({
                success: false,
                result: null,
                comment: out.message
            });
        }
    }catch(error){
        log.error('Error bank valid - error', req.body, error);
        return res.send({
            success: false,
            result: null,
            comment: error.hasOwnProperty('message') ? error.message : error
        });
    }
}