const db = require("../config/dbproc.js"); const Adapter = require("./dbadapter.js"); const fs = require("fs"); const baseUrl = process.env.URLPDFFILE; class BastAdapter extends Adapter { constructor() { super(); } async queryBastActivityList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; let qry = "select * from vw_bastactivitylist "; qry = qry + "where activityname like '%" + keyword + "%' "; qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; // let qry = "select * from vw_basthandoverlist "; // qry = qry + "where bastnumber like '%" + keyword + "%' "; // qry = qry + "order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_bastactivitylist "; qry = qry + "where activityname like '%" + keyword + "%' "; qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; // qry = "select * from vw_basthandoverlist "; // qry = qry + "where bastnumber like '%" + keyword + "%' "; // qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); 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); } } async queryBastHandoverList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; // let qry = "select * from vw_bastactivitylist "; // qry = qry + "where activityname like '%" + keyword + "%' "; // qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; let qry = "select * from vw_basthandoverlist "; qry = qry + "where bastnumber like '%" + keyword + "%' "; qry = qry + "order by _idx asc"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); // qry = "select * from vw_bastactivitylist "; // qry = qry + "where activityname like '%" + keyword + "%' "; // qry = qry + "order by idxbudget asc limit " + offset + ", " + limit; qry = "select * from vw_basthandoverlist "; qry = qry + "where bastnumber like '%" + keyword + "%' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); 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); } } async queryBastActivityListDetail(req, callback) { var apires = this.getApiResultDefined(); try { let idxpr = req.query.idxpr; let qry = "select * from vw_bastactivitylistdetail "; qry = qry + "where idxpr='" + idxpr + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); } 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); } } async queryCreateBAST(filedoctemplate, req, callback) { var apires = this.getApiResultDefined(); try { let idxpoboq = req.body.idxpoboq; let idxpo = req.body.idxpo; let totalpo = req.body.totalpo; let bastnumber = req.body.bastnumber; let bastdates = req.body.bastdates; let description = req.body.description; let idxvendor = req.body.idxvendor; let vendorcode = req.body.vendorcode; let vendorname = req.body.vendorname; let povendornumber = req.body.povendornumber; let status = 0; let statusdescription = "Submitted"; let nik = req.body.nik; // let qry = "insert into tbl_bast set idxpo='"+idxpo+"',bastnumber='"+bastnumber+"',bastdates='"+bastdates+"',"; // qry = qry + "description='"+description+"',idxvendor='"+idxvendor+"',vendorcode='"+vendorcode+"',vendorname='"+vendorname+"',"; // qry = qry + "totalpo='"+totalpo+"',povendornumber='"+povendornumber+"',filedoctemplate='"+filedoctemplate+"',status='"+status+"',"; // qry = qry + "statusdescription='"+statusdescription+"',laststatusupdate=now(),iby='"+nik+"',idt=now()"; let qry = "insert into tbl_bast set idxpo='" + idxpo + "',bastnumber='" + bastnumber + "',bastdates='" + bastdates + "',"; qry = qry + "description='" + description + "',idxvendor='" + idxvendor + "',vendorcode='" + vendorcode + "',vendorname='" + vendorname + "',"; qry = qry + "totalpo='" + totalpo + "',povendornumber='" + povendornumber + "',filepdf='" + filedoctemplate + "',ismergedoc=1,status='" + status + "',"; qry = qry + "statusdescription='" + statusdescription + "',laststatusupdate=now(),iby='" + nik + "',idt=now()"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { var idxheader = result.insertId; // qry ="insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) "; // qry = qry + "select '"+idxheader+"', _idx , description, qty, units, poamount, '"+nik+"',now() "; // qry = qry + "from tbl_poboq where _idx in("+idxpoboq+")"; qry = "insert into tbl_bastdetail(idxheader,idxpoboq,description,qty,units,poamount,iby,idt) "; qry = qry + "select '" + idxheader + "', _idx , description, qty, units, poamount, '" + nik + "',now() "; qry = qry + "from tbl_poboq where _idx in(" + idxpoboq + ")"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); apires.meta.code = 200; callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUploadHandoverSign(filehandoversign, req, callback) { var apires = this.getApiResultDefined(); try { let idxbast = req.body.idxbast; let nik = req.body.nik; let bastdates = req.body.bastdates; let description = req.body.description; let qry = "update tbl_bast set status=1,statusdescription='Upload Handover',bastdateshandover='" + bastdates + "',descriptionhandover='" + description + "',"; qry += "filehandoversign='" + filehandoversign + "',uby='" + nik + "',udt=now() where _idx='" + idxbast + "'"; // let qry = "update tbl_bast set filehandoversign='"+filehandoversign+"',uby='"+nik+"',udt=now() where _idx='"+idxbast+"'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { let qryHistory = "insert into tbl_bastfilehistory set statusdescription='Upload Handover', bastdateshandover='" + bastdates + "',descriptionhandover='" + description + "', filehandoversign='" + filehandoversign + "',iby='" + nik + "',idt=now(), idxbast='" + idxbast + "'"; db.query(qryHistory, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.meta.code = 200; callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryBastList(req, callback) { var apires = this.getApiResultDefined(); try { let limit = req.query.limit; let offset = req.query.offset; let keyword = req.query.keyword; let qry = "select * from vw_bast "; qry = qry + "where description like '%" + keyword + "%' and status=0 "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { if (result.length > 0) { let pagination = result.length / limit; if (!Number.isInteger(pagination)) { pagination = Math.floor(result.length / limit) + 1; } // let pagination = Adapter.getPagination(result.length, limit); apires.success = true; apires.data.push({ "totalpage": pagination, "totalrows": result.length, }); qry = "select * from vw_bast "; qry = qry + "where description like '%" + keyword + "%' "; qry = qry + "order by _idx asc limit " + offset + ", " + limit; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); 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); } } async queryBastDetailList(req, callback) { var apires = this.getApiResultDefined(); try { let idxbast = req.query.idxbast; let qry = "select * from vw_bast "; qry = qry + "where _idx='" + idxbast + "'"; // console.log(qry); db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { let qryHistory = `select statusdescription, bastdateshandover, descriptionhandover, CONCAT('${baseUrl}?route=bast&name=', filehandoversign) AS filehandoversign, iby, idt from tbl_bastfilehistory where idxbast = ${result[0]._idx} order by _idx desc`; db.query(qryHistory, [], function (err, resultHistory, fields) { console.log(err); console.log(resultHistory); if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { result[0].history_handover = resultHistory; apires.data.push({ "results": JSON.parse(JSON.stringify(result)), }); callback(null, apires); } }); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } async queryUpdateHandover(req, filehandover, callback) { try { var apires = this.getApiResultDefined(); var idxbast = req.body.idxbast; var status = req.body.status; var statusdescription = req.body.statusdescription; var nik = req.body.nik; var qry = "update tbl_bast set filehandover='" + filehandover + "',status='" + status + "',statusdescription='" + statusdescription + "',uby='" + nik + "',udt=now() "; qry = qry + "where _idx='" + idxbast + "'"; db.query(qry, [], function (err, result, fields) { if (err) { apires.meta["message"] = err.toString(); apires.meta["code"] = 500; callback("err", apires); } else { apires.success = true; apires.data = JSON.parse(JSON.stringify(result)); callback(null, apires); } }); } catch (err) { apires.meta.code = 500; apires.meta.message = err.toString(); callback("error", apires); } } } module.exports = BastAdapter;