buy.js 1.52 KB
const moment = require('moment');

const logger = require('komodo-sdk/logger');

const commands = require('../command-group');
const commandError = require('./error');
const destinationCorrector = require('../destination-corrector');
const coreapi = require('../coreapi');

const coreEndpoint = '/prepaid/buy';

function generateRequestId(product, destination) {
    return `AUTO_${ product.toUpperCase() }_${ destination }_${ moment().format('YYYYMMDD') }`;
}

function help() {
    return `Untuk pembelian, ketik perintah dengan format: <KODEPRODUK>.<NOMORTUJUAN>.<PIN>`;
}

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

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

    if (commands[ tokens[0] ] !== 'buy') {
        tokens.unshift('buy');
        logger.verbose('Rearrange tokens', {tokens: tokens});
    }

    const destination = destinationCorrector((tokens[2] || '').trim());

    const coreParams = {
        origin: params.origin,
        report_ip: params.report_ip,
        report_port: params.report_port,
        terminal_name: params.from,
        product_name: (tokens[1] || '').trim().toUpperCase(),
        destination,
        password: tokens[3],
        request_id: `${generateRequestId(tokens[1], destination)}${Number(tokens[4]) ? '_req' + Number(tokens[4]) : ''}`,
        postpaid: 0
    };

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

module.exports = execute;