index.js 4.33 KB
const logger = require('tektrans-logger');

const commandParser = require('../command-parser');

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

const handlerAddBalance = require('./addbalance');
const handlerAddDownline = require('./adddownline');
const handlerAddTerminal = require('./addterminal');
const handlerBalance = require('./balance');
const handlerBuy = require('./buy');
const handlerChangePin = require('./changepin');
const handlerClaimBonus = require('./claimbonus');
const handlerComplain = require('./complain');
const handlerDaySummary = require('./daysummary');
const handlerDepositTicket = require('./depositticket');
const handlerDisableDownline = require('./disabledownline');
const handlerDownlineInfo = require('./downlineinfo');
const handlerEnableDownline = require('./enabledownline');
const handlerHelp = require('./help');
const handlerInquiry = require('./inquiry');
const handlerListComplain = require('./listcomplain');
const handlerListDeposit = require('./listdeposit');
const handlerListDownline = require('./listdownline');
const handlerListTerminal = require('./listterminal');
const handlerListTrx = require('./listtrx');
const handlerPay = require('./pay');
const handlerPrice = require('./price');
const handlerSupplierBalances = require('./supplierbalances');
const handlerTemporaryBonus = require('./temporarybonus');
const handlerTransferBalance = require('./transferbalance');

function execute(msg, params, cb) {
    if (typeof msg !== 'string' || !msg.trim()) {
        cb(commandError.ERR_EMPTY_MESSAGE);
        return;
    }

    const tokens = commandParser.splitToken(msg);
    const commandGroup = commandParser.extractCommandGroup(tokens);

    // eslint-disable-next-line no-param-reassign
    params.commandGroup = commandGroup;

    logger.info('Processing message from partner', {
        msg, params, tokens, commandGroup,
    });

    if (!commandGroup || commandGroup === 'buy') {
        handlerBuy(tokens, params, cb);
    } else if (commandGroup === 'balance') {
        handlerBalance(tokens, params, cb);
    } else if (commandGroup === 'addbalance') {
        handlerAddBalance(tokens, params, cb);
    } else if (commandGroup === 'transferbalance') {
        handlerTransferBalance(tokens, params, cb);
    } else if (commandGroup === 'price') {
        handlerPrice(tokens, params, cb);
    } else if (commandGroup === 'listdownline') {
        handlerListDownline(tokens, params, cb);
    } else if (commandGroup === 'downlineinfo') {
        handlerDownlineInfo(tokens, params, cb);
    } else if (commandGroup === 'adddownline') {
        handlerAddDownline(tokens, params, cb);
    } else if (commandGroup === 'listterminal') {
        handlerListTerminal(tokens, params, cb);
    } else if (commandGroup === 'listtrx' || commandGroup === 'listtrxall') {
        handlerListTrx(tokens, params, cb);
    } else if (commandGroup === 'listdeposit') {
        handlerListDeposit(tokens, params, cb);
    } else if (commandGroup === 'addterminal') {
        handlerAddTerminal(tokens, params, cb);
    } else if (commandGroup === 'changepin') {
        handlerChangePin(tokens, params, cb);
    } else if (commandGroup === 'enabledownline') {
        handlerEnableDownline(tokens, params, cb);
    } else if (commandGroup === 'daysummary' || commandGroup === 'daysummaryall') {
        handlerDaySummary(tokens, params, cb);
    } else if (commandGroup === 'depositticket') {
        handlerDepositTicket(tokens, params, cb);
    } else if (commandGroup === 'disabledownline') {
        handlerDisableDownline(tokens, params, cb);
    } else if (commandGroup === 'supplierbalances') {
        handlerSupplierBalances(tokens, params, cb);
    } else if (commandGroup === 'claimbonus') {
        handlerClaimBonus(tokens, params, cb);
    } else if (commandGroup === 'temporarybonus') {
        handlerTemporaryBonus(tokens, params, cb);
    } else if (commandGroup === 'inquiry') {
        handlerInquiry(tokens, params, cb);
    } else if (commandGroup === 'pay') {
        handlerPay(tokens, params, cb);
    } else if (commandGroup === 'complain') {
        handlerComplain(tokens, params, cb);
    } else if (commandGroup === 'listcomplain') {
        handlerListComplain(tokens, params, cb);
    } else if (commandGroup === 'help') {
        handlerHelp(tokens, params, cb);
    } else {
        cb(commandError.ERR_NOT_IMPLEMENTED);
    }
}

module.exports = execute;