transferbalance.js 1.6 KB
const CORE_ENDPOINT = '/stores/transfer-balance';

const common = require('../common');
const commandError = require('./error');
const coreapi = require('../coreapi');

function help(keyword) {
    return `
Untuk transfer saldo ke downline, ketik perintah dengan format:

${keyword.toUpperCase()}.#<IDDOWNLINE>.<JUMLAH>.<PIN>
atau
${keyword.toUpperCase()}.<TERMINALDOWNLINE>.<JUMLAH>.<PIN>
    `.trim();
}

function execute(tokens, params, cb) {
    if (!tokens || tokens.length < 4) {
        const responseParams = {
            body: `
${commandError.ERR_INVALID_FORMAT}: ${params.msg}

${ help(tokens[0]) }`.trim(),
        }

        cb(null, null, responseParams);
        return;
    }

    let destinationStoreId;
    let destinationTerminalName;
    if (tokens[1].indexOf('#') === 0) {
        destinationStoreId = tokens[1].replace(/^#/, '');
    } else {
        destinationTerminalName = tokens[1];
    }

    const coreParams = {
        asker_terminal_name: params.from,
        destination_store_id: destinationStoreId,
        destination_terminal_name: destinationTerminalName,
        amount: tokens[2],
        asker_terminal_password: tokens[3],
        additional_note: tokens.slice(4).join(' ') || '',
        origin: params.origin
    };

    if (typeof coreParams.destination_terminal_name === 'string' && common.isPhoneNumber(coreParams.destination_terminal_name) && coreParams.destination_terminal_name.indexOf('0') === 0) {
        coreParams.destination_terminal_name = coreParams.destination_terminal_name.replace(/^0/, '62');
    }

    coreapi(CORE_ENDPOINT, coreParams, 'GET', cb);
}

module.exports = execute;