const db = require("../config/dbproc.js"); const Adapter = require("./dbadapter.js"); class SAPAccountAdapter extends Adapter { constructor() { super(); } /* ================= LIST ================= */ /* ================= LIST + PAGINATION ================= */ async queryList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = parseInt(req.query.limit) || 10; let offset = parseInt(req.query.offset) || 0; let keyword = req.query.keyword || ""; /* ===== QUERY TOTAL ROW ===== */ let qry = ` SELECT * FROM tbl_sap_connections WHERE deleted_at IS NULL AND ( host LIKE '%${keyword}%' OR sap_user LIKE '%${keyword}%' OR ket_sap LIKE '%${keyword}%' ) `; db.query(qry, [], function (err, result) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } apires.success = true; apires.data.push({ totalpage: pagination, totalrows: result.length, }); /* ===== QUERY DATA WITH LIMIT ===== */ let qryData = ` SELECT * FROM tbl_sap_connections WHERE deleted_at IS NULL AND ( host LIKE '%${keyword}%' OR sap_user LIKE '%${keyword}%' OR ket_sap LIKE '%${keyword}%' ) ORDER BY id ASC LIMIT ${offset}, ${limit} `; db.query(qryData, [], function (err, resultData) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { apires.data.push({ results: JSON.parse(JSON.stringify(resultData)), }); callback(null, apires); } }); } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; callback(null, apires); } } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } /* ================= CREATE ================= */ async queryCreate(req, callback) { var apires = this.getApiResultDefined(); try { const {sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi} = req.body; let qry = ` INSERT INTO tbl_sap_connections (sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi, created_at, created_by, status) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), ?, 'Not_Active') `; db.query( qry, [ sap_id, host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi, req.body.createdby || "system", ], function (err, result) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { apires.success = true; apires.data = {insertId: result.insertId}; callback(null, apires); } }, ); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } /* ================= UPDATE ================= */ async queryUpdate(req, callback) { var apires = this.getApiResultDefined(); try { const id = req.params.id; const {host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi} = req.body; let qry = ` UPDATE tbl_sap_connections SET host = ?, sysnr = ?, client = ?, codepage = ?, ket_sap = ?, sap_user = ?, sap_password = ?, aktivasi = ?, updated_at = NOW(), updated_by = ? WHERE id = ? AND deleted_at IS NULL `; db.query( qry, [ host, sysnr, client, codepage, ket_sap, sap_user, sap_password, aktivasi, req.body.updatedby || "system", id, ], function (err, result) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { apires.success = true; apires.data = {affectedRows: result.affectedRows}; callback(null, apires); } }, ); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } /* ================= DELETE (SOFT) ================= */ async queryDelete(req, callback) { var apires = this.getApiResultDefined(); try { const id = req.params.id; let qry = ` UPDATE tbl_sap_connections SET deleted_at = NOW(), deleted_by = ? WHERE id = ? AND deleted_at IS NULL `; db.query(qry, [req.body.deletedby || "system", id], function (err, result) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { apires.success = true; apires.data = {affectedRows: result.affectedRows}; callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } /* ================= DETAIL ================= */ async queryDetail(req, callback) { var apires = this.getApiResultDefined(); try { const id = req.params.id; let qry = ` SELECT * FROM tbl_sap_connections WHERE id = ? AND deleted_at IS NULL LIMIT 1 `; db.query(qry, [id], function (err, result) { if (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = result[0]; } else { apires.meta.code = 200; apires.meta.message = "Record Not Found"; apires.data = null; } callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } } module.exports = SAPAccountAdapter;