From 099ce6f7f6c9fe82be75f56daead1be96c654bc2 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Wed, 3 Jul 2019 16:54:59 +0700
Subject: [PATCH] transferBalance handler

---
 lib/command-handler/index.js           |  4 ++++
 lib/command-handler/transferbalance.js | 35 ++++++++++++++++++++++++++++++++++
 lib/default-command.js                 |  2 +-
 3 files changed, 40 insertions(+), 1 deletion(-)
 create mode 100644 lib/command-handler/transferbalance.js

diff --git a/lib/command-handler/index.js b/lib/command-handler/index.js
index a35a94a..6612320 100644
--- a/lib/command-handler/index.js
+++ b/lib/command-handler/index.js
@@ -14,6 +14,7 @@ const handlerListDownline = require('./listdownline');
 const handlerDownlineInfo = require('./downlineinfo');
 const handlerAddDownline = require('./adddownline');
 const handlerAddBalance = require('./addbalance');
+const handlerTransferBalance = require('./transferbalance');
 
 function execute(msg, params, cb) {
 
@@ -35,6 +36,9 @@ function execute(msg, 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);
     }
diff --git a/lib/command-handler/transferbalance.js b/lib/command-handler/transferbalance.js
new file mode 100644
index 0000000..dde3a35
--- /dev/null
+++ b/lib/command-handler/transferbalance.js
@@ -0,0 +1,35 @@
+"use strict";
+
+const commandError = require('./error');
+const coreapi = require('../coreapi');
+
+const coreEndpoint = '/stores/transfer-balance';
+
+function help(keyword) {
+    return `Untuk transfer saldo ke downline, ketik perintah dengan format: ${ keyword.toUpperCase() }.<IDDOWNLINE>.<JUMLAH>.<PIN>`;
+}
+
+function execute(tokens, params, cb) {
+    
+    if (!tokens || tokens.length < 4) {
+        const responseParams = {
+            body: `${ commandError.ERR_INVALID_FORMAT }. ${ help(tokens[0]) }`
+        }
+
+        cb(null, null, responseParams);
+        return;
+    }
+
+    const coreParams = {
+        asker_terminal_name: params.from,
+        destination_store_id: tokens[1],
+        amount: tokens[2],
+        asker_terminal_password: tokens[3],
+        additional_note: tokens.slice(4).join(' ') || '',
+        origin: params.origin
+    };
+
+    coreapi(coreEndpoint, coreParams, 'GET', cb);
+}
+
+module.exports = execute;
\ No newline at end of file
diff --git a/lib/default-command.js b/lib/default-command.js
index aeccc27..7c82687 100644
--- a/lib/default-command.js
+++ b/lib/default-command.js
@@ -27,7 +27,7 @@ module.exports = {
         "ceksaldo",
         "checksaldo"
     ],
-    _transferbalance: [
+    transferbalance: [
         "transfer",
         "trf"
     ],
-- 
1.9.0