adddownline.js 2.1 KB
"use strict";

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

const coreEndpoint = '/stores/create';

function help(keyword) {
    return `
        Untuk membuat downline baru, ketik dgn format:
        ${ keyword.toUpperCase() }.<NAMADOWNLINE>.<PIN>
        atau
        ${ keyword.toUpperCase() }.<NAMADOWNLINE>.<TERMINAL>.<PIN>
        atau
        ${ keyword.toUpperCase() }.<NAMADOWNLINE>.<TERMINAL>.<MARKUP>.<PIN>
    `.replace(/^\s+/mg, '').replace(/\s+$/mg, '').trim();
}

function execute(tokens, params, cb) {

    if (!tokens || tokens.length < 3) {
        const responseParams = {
            body: `${ commandError.ERR_INVALID_FORMAT }. ${ help(tokens[0]) }`
        }

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

    const coreParams = {
        asker_terminal_name: params.from,
        asker_terminal_password: null,
        new_store_name: tokens[1],
        new_terminal_name: null,
        markup: null,
    };

    if (tokens.length === 3) {
        coreParams.asker_terminal_password = tokens[2];
    } else if (tokens.length === 4) {
        coreParams.new_terminal_name = tokens[2];
        coreParams.asker_terminal_password = tokens[3];
        coreParams.generate_password = 1;
    } else if (tokens.length === 5) {
        coreParams.new_terminal_name = tokens[2];
        coreParams.markup = tokens[3];
        coreParams.asker_terminal_password = tokens[4];
        coreParams.generate_password = 1;
    }

    if (typeof coreParams.new_terminal_name === 'string' && coreParams.new_terminal_name.indexOf('@') < 0) {
        let suffix = '';
        if (common.isPhoneNumber(coreParams.new_terminal_name)) {
            coreParams.new_terminal_name = common.indonesiaIntlNumberToZeroPrefix(coreParams.new_terminal_name);
            suffix = '@phonenumber';
        } else {
            suffix = common.guessSuffix(coreParams.asker_terminal_name);
        }
    
        if (suffix) {
            coreParams.new_terminal_name += suffix;
        }
    }

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

module.exports = execute;