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 Adapter = require("./dbadapter.js");
const request = require("request");
class SAPAccountAdapter extends Adapter {
constructor() {
super();
}
/* ================= LIST ================= */
/* ================= LIST + PAGINATION ================= */
async queryList(req, callback) {
var apires = this.getApiResultDefined();
@ -246,6 +246,128 @@ class SAPAccountAdapter extends Adapter {
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;