This commit is contained in:
Rizki
2026-01-08 17:20:26 +07:00
parent 0221a6fb04
commit c00dc40f43
3 changed files with 157 additions and 4 deletions

View File

@ -1,12 +1,12 @@
const db = require("../config/dbproc.js"); const db = require("../config/dbproc.js");
const Adapter = require("./dbadapter.js"); const Adapter = require("./dbadapter.js");
const request = require("request");
class SAPAccountAdapter extends Adapter { class SAPAccountAdapter extends Adapter {
constructor() { constructor() {
super(); super();
} }
/* ================= LIST ================= */
/* ================= LIST + PAGINATION ================= */ /* ================= LIST + PAGINATION ================= */
async queryList(req, callback) { async queryList(req, callback) {
var apires = this.getApiResultDefined(); var apires = this.getApiResultDefined();
@ -246,6 +246,128 @@ class SAPAccountAdapter extends Adapter {
callback("error", apires); callback("error", apires);
} }
} }
/* ================= ACTIVATE ================= */
async queryActivate(req, callback) {
var apires = this.getApiResultDefined();
try {
const id = req.params.id;
/* 1⃣ Ambil SAP connection dari DB */
let qry = `
SELECT *
FROM tbl_sap_connections
WHERE id = ?
AND deleted_at IS NULL
LIMIT 1
`;
db.query(qry, [id], (err, result) => {
if (err || result.length === 0) {
apires.meta.code = 404;
apires.meta.message = "SAP Connection not found";
return callback("err", apires);
}
const sap = result[0];
/* 2⃣ Build SAP API URL (host + query) */
const sapUrl =
process.env.SAP_API_BASE_URL +
"/sapConnection" +
`?user=${sap.sap_user}` +
`&password=${sap.sap_password}` +
`&sysnr=${sap.sysnr}` +
`&client=${sap.client}` +
`&codepage=${sap.codepage}` +
`&ket_sap=${sap.ket_sap}` +
`&host=${encodeURIComponent(sap.host)}`;
const options = {
method: "POST",
url: sapUrl,
timeout: 10000, // ⏱️ 10 detik
};
/* 3⃣ Call SAP API */
request(options, (error, response, body) => {
if (error) {
apires.meta.code = 500;
apires.meta.message = error.toString();
return callback("err", apires);
}
if (response.statusCode !== 200) {
apires.meta.code = response.statusCode;
apires.meta.message = "SAP API failed";
apires.data = body;
return callback("err", apires);
}
/* 4⃣ Set semua Not_Active */
db.query("UPDATE tbl_sap_connections SET status='Not_Active'", [], () => {
/* 5⃣ Set Active untuk ID terpilih */
db.query(
`UPDATE tbl_sap_connections
SET status='Active',
updated_at=NOW(),
updated_by=?
WHERE id=?`,
[req.body.updatedby || "system", id],
(err2) => {
if (err2) {
apires.meta.code = 500;
apires.meta.message = err2.toString();
return callback("err", apires);
}
apires.success = true;
apires.data = {
message: "SAP Connection Activated",
sap_id: sap.sap_id,
};
callback(null, apires);
},
);
});
});
});
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback("error", apires);
}
}
/* ================= CURRENT ================= */
async queryCurrent(req, callback) {
var apires = this.getApiResultDefined();
try {
let qry = `
SELECT *
FROM tbl_sap_connections
WHERE status='Active'
AND deleted_at IS NULL
LIMIT 1
`;
db.query(qry, [], function (err, result) {
if (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback("err", apires);
} else {
apires.success = true;
apires.data = result.length > 0 ? result[0] : null;
callback(null, apires);
}
});
} catch (err) {
apires.meta.code = 500;
apires.meta.message = err.toString();
callback("error", apires);
}
}
} }
module.exports = SAPAccountAdapter; module.exports = SAPAccountAdapter;

View File

@ -74,8 +74,37 @@ exports.detail = (req, res) => {
}); });
} catch (err) { } catch (err) {
apireshandler.meta.code = 502; apireshandler.meta.code = 502;
apireshandler.meta.message = apireshandler.meta.message = " [24] : SAP Account detail, " + err.toString();
" [24] : SAP Account detail, " + err.toString(); sapaccountadapter.sendResponse(502, apireshandler, res);
}
};
/* ================= ACTIVATE SAP ================= */
exports.activate = (req, res) => {
try {
sapaccountadapter.queryActivate(req, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
sapaccountadapter.sendResponse(statusCode, data, res);
});
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [25] : SAP Account activate, " + err.toString();
sapaccountadapter.sendResponse(502, apireshandler, res);
}
};
/* ================= CURRENT SAP ================= */
exports.current = (req, res) => {
try {
sapaccountadapter.queryCurrent(req, function (err, data) {
let statusCode = data != null ? data.meta.code : 200;
if (err) statusCode = 500;
sapaccountadapter.sendResponse(statusCode, data, res);
});
} catch (err) {
apireshandler.meta.code = 502;
apireshandler.meta.message = " [26] : SAP Account current, " + err.toString();
sapaccountadapter.sendResponse(502, apireshandler, res); sapaccountadapter.sendResponse(502, apireshandler, res);
} }
}; };

View File

@ -8,5 +8,7 @@ router.post("/create", [jwtauth], sapcontroller.create);
router.put("/update/:id", [jwtauth], sapcontroller.update); router.put("/update/:id", [jwtauth], sapcontroller.update);
router.delete("/delete/:id", [jwtauth], sapcontroller.delete); router.delete("/delete/:id", [jwtauth], sapcontroller.delete);
router.get("/detail/:id", [jwtauth], sapcontroller.detail); router.get("/detail/:id", [jwtauth], sapcontroller.detail);
router.post("/activate/:id", [jwtauth], sapcontroller.activate);
router.get("/current", [jwtauth], sapcontroller.current);
module.exports = router; module.exports = router;