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;