first commit
419
adapter/bastadapter.js
Normal file
@ -0,0 +1,419 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
570
adapter/budgetadapter.js
Normal file
@ -0,0 +1,570 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
|
||||||
|
|
||||||
|
class BudgetAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryBudgetList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
|
||||||
|
let qry = "select * from vw_budgetcapexinfo ";
|
||||||
|
qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') order by id 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_budgetcapexinfo ";
|
||||||
|
qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') order by id 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 queryBudgetDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_budgetcapexinfo ";
|
||||||
|
qry = qry +"where id='"+id+"' order by id asc limit 1";
|
||||||
|
|
||||||
|
// 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 queryDeleteBudget(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_budgetcapexinfo ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryBudgetType(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select _idx id,budgettype from tbl_budgettype ";
|
||||||
|
qry = qry +"where isdeleted=0 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){
|
||||||
|
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 queryNewBudget(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxbudgettype= req.body.idbudgettype;
|
||||||
|
let budgetid = req.body.budgetid;
|
||||||
|
let activityname = req.body.activityname;
|
||||||
|
let amount = req.body.amount;
|
||||||
|
let targetrfs = req.body.targetrfs;
|
||||||
|
let months = req.body.months;
|
||||||
|
let years = req.body.years;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_budgetcapexinfo ";
|
||||||
|
qry = qry +"set idxbudgettype='"+idxbudgettype+"', budgetid='"+budgetid+"',activityname='"+activityname+"',amount='"+amount+"',months='"+months+"',";
|
||||||
|
qry = qry +"targetrfs='"+targetrfs+"',years='"+years+"', 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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryUpdateBudget(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxbudgettype= req.body.idbudgettype;
|
||||||
|
let budgetid = req.body.budgetid;
|
||||||
|
let activityname = req.body.activityname;
|
||||||
|
let amount = req.body.amount;
|
||||||
|
let targetrfs = req.body.targetrfs;
|
||||||
|
let months = req.body.months;
|
||||||
|
let years = req.body.years;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let id = req.body.id;
|
||||||
|
|
||||||
|
let qry = "update tbl_budgetcapexinfo ";
|
||||||
|
qry = qry +"set idxbudgettype='"+idxbudgettype+"', budgetid='"+budgetid+"',activityname='"+activityname+"',amount='"+amount+"',months='"+months+"',";
|
||||||
|
qry = qry +"targetrfs='"+targetrfs+"',years='"+years+"', uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+id+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// === Request budget
|
||||||
|
|
||||||
|
async queryReqBudget(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let trxid= req.body.trxid;
|
||||||
|
let justificationnumber= req.body.justificationnumber;
|
||||||
|
let yearstgt= req.body.years;
|
||||||
|
let transactiondate = req.body.transactiondate;
|
||||||
|
let idxbudgettype= req.body.idbudgettype;
|
||||||
|
let budgettype = req.body.budgettype;
|
||||||
|
let idxbudgetid = req.body.idxbudgetid;
|
||||||
|
let budgetid = req.body.budgetid;
|
||||||
|
let activityname = req.body.activityname;
|
||||||
|
let idcoa = req.body.idcoa;
|
||||||
|
let glacc = req.body.coacode;
|
||||||
|
let amount = req.body.amount;
|
||||||
|
let targetrfs = req.body.targetrfs;
|
||||||
|
let crdb = "K";
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_requestbudget ";
|
||||||
|
qry = qry +"set trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',yearstgt='"+yearstgt+"',transactiondate='"+transactiondate+"',idxbudgettype='"+idxbudgettype+"',budgettype='"+budgettype+"',";
|
||||||
|
qry = qry +"idxbudgetid='"+idxbudgetid+"',budgetid='"+budgetid+"',activityname='"+activityname+"',idcoa='"+idcoa+"',glacc='"+glacc+"',targetrfs='"+targetrfs+"',";
|
||||||
|
qry = qry +"amount='"+amount+"',crdb='"+crdb+"',months=month(now()),years=year(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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryGetTrxIdReqBudget(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let nik = req.query.nik;
|
||||||
|
let qry = "select count(_idx) totalrows,date_format(now(),'%Y%m%d') dates from tbl_requestbudget where iby='"+nik+"' and year(idt)=year(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 resp = JSON.parse(JSON.stringify(result));
|
||||||
|
// console.log(resp[0]['dates']);
|
||||||
|
var ymd = resp[0]['dates'];
|
||||||
|
ymd = ymd.toString().trim().replace("-","");
|
||||||
|
var counter = resp[0]['totalrows']+1;
|
||||||
|
var counterstr = ("0000000000"+counter);
|
||||||
|
counterstr = counterstr.substring(counterstr.length-4, counterstr.length);
|
||||||
|
var trxid = "TRX/"+ymd+"/"+nik+"/"+counterstr;
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = trxid
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateReqBudget(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let trxid= req.body.trxid;
|
||||||
|
let yearstgt= req.body.years;
|
||||||
|
let transactiondate = req.body.transactiondate;
|
||||||
|
let idxbudgettype= req.body.idbudgettype;
|
||||||
|
let budgettype = req.body.budgettype;
|
||||||
|
let idxbudgetid = req.body.idxbudgetid;
|
||||||
|
let budgetid = req.body.budgetid;
|
||||||
|
let activityname = req.body.activityname;
|
||||||
|
let idcoa = req.body.idcoa;
|
||||||
|
let glacc = req.body.coacode;
|
||||||
|
let amount = req.body.amount;
|
||||||
|
let targetrfs = req.body.targetrfs;
|
||||||
|
let crdb = "K";
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let idreqbudget = req.body.idreqbudget;
|
||||||
|
|
||||||
|
let qry = "update tbl_requestbudget ";
|
||||||
|
qry = qry +"set trxid='"+trxid+"',yearstgt='"+yearstgt+"',transactiondate='"+transactiondate+"',idxbudgettype='"+idxbudgettype+"',budgettype='"+budgettype+"',";
|
||||||
|
qry = qry +"idxbudgetid='"+idxbudgetid+"',budgetid='"+budgetid+"',activityname='"+activityname+"',idcoa='"+idcoa+"',glacc='"+glacc+"',targetrfs='"+targetrfs+"',";
|
||||||
|
qry = qry +"amount='"+amount+"',crdb='"+crdb+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idreqbudget+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Data has been updated";
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryDeleteReqBudget(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_requestbudget ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryReqBudgetList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "select * from vw_requestbudget ";
|
||||||
|
qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and iby='"+nik+"' order by id 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_requestbudget ";
|
||||||
|
qry = qry +"where (trim(budgetid) like '%"+ keyword +"%' or trim(activityname) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and iby='"+nik+"' order by id 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 queryReqBudgetDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_requestbudget ";
|
||||||
|
qry = qry +"where id='"+id+"' order by id asc limit 1";
|
||||||
|
|
||||||
|
// 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 queryBudgetListbyRequest(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_budgetlistbyrequest 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){
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = BudgetAdapter;
|
||||||
345
adapter/coaadapter.js
Normal file
@ -0,0 +1,345 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
|
||||||
|
|
||||||
|
class CoaAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryCoaList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
|
||||||
|
let qry = "select * from vw_coa ";
|
||||||
|
qry = qry +"where (trim(coacode) like '%"+ keyword +"%' or trim(coaname) like '%"+ keyword +"%') order by id 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
|
||||||
|
});
|
||||||
|
qry = "select * from vw_coa ";
|
||||||
|
qry = qry +"where (trim(coacode) like '%"+ keyword +"%' or trim(coaname) like '%"+ keyword +"%') order by id 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 queryGetCostCenter(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_costcenter ";
|
||||||
|
qry = qry +"where (trim(costcentercode) like '%"+ keyword +"%' or trim(costcentername) like '%"+ keyword +"%') order by id 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
|
||||||
|
});
|
||||||
|
qry = "select * from vw_costcenter ";
|
||||||
|
qry = qry +"where (trim(costcentercode) like '%"+ keyword +"%' or trim(costcentername) like '%"+ keyword +"%') order by id 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 queryGetProfitCenter(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_profitcenter ";
|
||||||
|
qry = qry +"where (trim(profitcode) like '%"+ keyword +"%' or trim(profitname) like '%"+ keyword +"%') order by id 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
|
||||||
|
});
|
||||||
|
qry = "select * from vw_profitcenter ";
|
||||||
|
qry = qry +"where (trim(profitcode) like '%"+ keyword +"%' or trim(profitname) like '%"+ keyword +"%') order by id 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 queryCoaDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_coa ";
|
||||||
|
qry = qry +"where id='"+id+"' order by id asc limit 1";
|
||||||
|
|
||||||
|
// 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 queryDeleteCoa(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_coa ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryNewCoa(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let glacc = req.body.coacode;
|
||||||
|
let glaccname = req.body.coaname;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_coa ";
|
||||||
|
qry = qry +"set glacc='"+glacc+"',glaccname='"+glaccname+"',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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryUpdateCoa(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let glacc = req.body.coacode;
|
||||||
|
let glaccname = req.body.coaname;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let id = req.body.id;
|
||||||
|
|
||||||
|
let qry = "update tbl_coa ";
|
||||||
|
qry = qry +"set glacc='"+glacc+"',glaccname='"+glaccname+"',uby='"+nik+"',udt=now()";
|
||||||
|
qry = qry +"where _idx='"+id+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = CoaAdapter;
|
||||||
68
adapter/dbadapter.js
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
const e = require('express');
|
||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Controller = require('../controllers/controller.js');
|
||||||
|
|
||||||
|
class DbAdapter extends Controller {
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryDynamictable(columninfo,tablename,callback) {
|
||||||
|
db.query('SELECT '+columninfo+' from ?? where isdeleted=0 order by id asc', [tablename], function (error, results, fields) {
|
||||||
|
var apiResult = {};
|
||||||
|
if (error) {
|
||||||
|
apiResult.meta = {
|
||||||
|
table: tablename,
|
||||||
|
type: "collection",
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
apiResult.data = [];
|
||||||
|
callback(error,apiResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
//make results
|
||||||
|
var resultJson = JSON.stringify(results);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
|
||||||
|
apiResult.meta = {
|
||||||
|
table: tablename,
|
||||||
|
type: "collection",
|
||||||
|
total: resultJson.length,
|
||||||
|
total_entries: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
//add our JSON results to the data table
|
||||||
|
apiResult.data = resultJson;
|
||||||
|
callback(null, apiResult);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static async queryExistsTransactionHeader(fakturnumber,callback){
|
||||||
|
var qry="select h.id idheader,d.id iddetail from tbl_salesheader h inner join tbl_salesdetail d on h.id=d.idheader";
|
||||||
|
qry= qry +" where h.fakturnumber='"+fakturnumber+"' and h.isdeleted=0 and d.isdeleted=0";
|
||||||
|
db.query(qry, [], function (error, results) {
|
||||||
|
var res={"res":false,"id":0};
|
||||||
|
if(error){throw error;}
|
||||||
|
if(results.length>0)
|
||||||
|
{
|
||||||
|
var iddetail=[];
|
||||||
|
results.forEach(function(e){
|
||||||
|
iddetail.push(e.iddetail);
|
||||||
|
});
|
||||||
|
res={
|
||||||
|
"res":true,
|
||||||
|
"id" :results[0].idheader,
|
||||||
|
"iddetail" : iddetail
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
callback(res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = DbAdapter;
|
||||||
414
adapter/employeeadapter.js
Normal file
@ -0,0 +1,414 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const MainAdapter = require('./mainadapter.js');
|
||||||
|
const mainadapter = new MainAdapter();
|
||||||
|
const jwt = require('jsonwebtoken');
|
||||||
|
const request = require('request');
|
||||||
|
const baseldap="https://mw.telkomcel.tl/tcel/v1/portal/";
|
||||||
|
const basetokenldap="https://mw.telkomcel.tl/tcel/v1/portal/tokenLDAP/";
|
||||||
|
// const Controller = require('../../WebServicesWakepo/controllers/controller.js');
|
||||||
|
|
||||||
|
class EmployeeAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryEmployeeAuth(req,callback){
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
let resuri={
|
||||||
|
'method': 'post',
|
||||||
|
'url': baseldap+'loginLDAP',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932'
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
"nik":req.body.nik,
|
||||||
|
"pass":req.body.pass,
|
||||||
|
"app":"e-Procurement"
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
//console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = error.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var res = JSON.parse(response.body);
|
||||||
|
var token = res['data']['data']['token'];
|
||||||
|
// console.log(token);
|
||||||
|
// console.log(res['data']['status']);
|
||||||
|
if(res['data']['status']=='success'){
|
||||||
|
// if(200==200){
|
||||||
|
resuri={
|
||||||
|
'method': 'post',
|
||||||
|
'url': basetokenldap,
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932'
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
"nik":req.body.nik,
|
||||||
|
"token":token,
|
||||||
|
"otp":1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// console.log(resuri);
|
||||||
|
request(resuri, function (error, resp1) {
|
||||||
|
if (error) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = error.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var res=JSON.parse(resp1.body);
|
||||||
|
console.log(res);
|
||||||
|
if(res['data']['status']=='error'){
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = res['data']['message'].toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
mainadapter.queryGetToken(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
let message = data.meta.message;
|
||||||
|
let success = true;
|
||||||
|
// console.log(data);
|
||||||
|
if(err) {
|
||||||
|
statusCode = 500;
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
apires.meta.code = statusCode;
|
||||||
|
apires.meta.message = message;
|
||||||
|
apires.success = success;
|
||||||
|
apires.data = data.data;
|
||||||
|
// console.log(apires);
|
||||||
|
callback(null,apires);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.meta.code = 201;
|
||||||
|
apires.meta.message = "Get token failed or LDAP authentication not authorize";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryEmployeeWithoutAuth(req,callback){
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
let resuri={
|
||||||
|
'method': 'post',
|
||||||
|
'url': baseldap+'loginLDAP',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded',
|
||||||
|
'Authorization': 'Bearer isadjoijoij87y123jkj912839u1201932'
|
||||||
|
},
|
||||||
|
form: {
|
||||||
|
"nik":req.body.nik,
|
||||||
|
"pass":req.body.pass,
|
||||||
|
"app":"e-Procurement"
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log(resuri);
|
||||||
|
// request(resuri, function (error, response) {
|
||||||
|
// if (error) {
|
||||||
|
// apires.meta.code = 500;
|
||||||
|
// apires.meta.message = error.toString();
|
||||||
|
// callback('error',apires);
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// console.log(response.body);
|
||||||
|
// var res = JSON.parse(response.body);
|
||||||
|
// console.log(res);
|
||||||
|
// console.log(res['data']['res']);
|
||||||
|
// if(res['data']['res']==200){
|
||||||
|
if(200==200){
|
||||||
|
mainadapter.queryGetToken(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
let message = data.meta.message;
|
||||||
|
let success = true;
|
||||||
|
// console.log(data);
|
||||||
|
if(err) {
|
||||||
|
statusCode = 500;
|
||||||
|
success = false;
|
||||||
|
}
|
||||||
|
apires.meta.code = statusCode;
|
||||||
|
apires.meta.message = message;
|
||||||
|
apires.success = success;
|
||||||
|
apires.data = data.data;
|
||||||
|
// console.log(apires);
|
||||||
|
callback(null,apires);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.meta.code = 201;
|
||||||
|
apires.meta.message = "Get token failed or LDAP authentication not authorize";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryEmployeeAccessibility(req, callback){
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var nik = req.body.nik;
|
||||||
|
// let qry = "select * from vw_menusaccessibility where nik='"+nik+"'";
|
||||||
|
let qry = "select ifnull(t._idx,n._idx) _idx,ifnull(t.menutext,n.menutext) menutext,";
|
||||||
|
qry = qry +"ifnull(t.sort, n.sort) sort,ifnull(t.idemployee,0) idemployee,ifnull(t.nik,'') nik,ifnull(t.isactivated,0) isactivated from ";
|
||||||
|
qry = qry +"tbl_menus n left join (select * from vw_menusaccessibility where nik='"+nik+"') t on n._idx=t._idx or t._idx is null";
|
||||||
|
|
||||||
|
// 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 resultJson = JSON.stringify(result);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryEmployeeSetMenuAccessibility(req, callback){
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idemployee = req.body.idemployee;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
var datamenu = JSON.parse(req.body.datamenu);
|
||||||
|
var userby = req.body.userby;
|
||||||
|
|
||||||
|
// console.log(datamenu);return false;
|
||||||
|
var dataRows = datamenu.length;
|
||||||
|
Object.keys(datamenu).forEach(function(key){
|
||||||
|
var idxmenu =datamenu[key]['idxmenu'];
|
||||||
|
var isactivated = datamenu[key]['isactivated'];
|
||||||
|
let qrym="insert into tbl_employee_accessibility ";
|
||||||
|
qrym=qrym+"set idemployee='"+idemployee+"',nik='"+nik+"',idxmenu='"+idxmenu+"',isactivated='"+isactivated+"',";
|
||||||
|
qrym=qrym+"iby='"+userby+"',idt=now()";
|
||||||
|
|
||||||
|
let qry="select _idx from tbl_employee_accessibility where nik='"+nik+"' and idxmenu='"+idxmenu+"' and isdeleted=0 order by _idx asc limit 1";
|
||||||
|
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){
|
||||||
|
qrym="update tbl_employee_accessibility ";
|
||||||
|
qrym=qrym+"set isactivated='"+isactivated+"',uby='"+userby+"',udt=now()";
|
||||||
|
qrym=qrym+"where _idx='"+result[0]['_idx']+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(qrym);
|
||||||
|
db.query(qrym,[],function(err,result,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(0 === --dataRows){
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = "Data Has been Saved";
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
// console.log(qry);
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryListEmployee(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_employee order by id 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){
|
||||||
|
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 queryEmployeeMenus(req,callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let qry = "select * from vw_emp_accessibility where nik='" + nik + "' and menutype<>'D' order by sort,name 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
|
||||||
|
{
|
||||||
|
let menusRows = result.length;
|
||||||
|
if(menusRows>0){
|
||||||
|
Object.keys(result).forEach(function(key){
|
||||||
|
qry = "select * from vw_emp_accessibility where menuheader='"+result[key]['_idx']+"' and nik='" + nik + "' and menutype='D' order by _idx asc";
|
||||||
|
db.query(qry,[],function(err,resultsubmenus,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback(apires,null);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// result[key]['submenus'] = [];
|
||||||
|
if(resultsubmenus.length>0){
|
||||||
|
// result[key]['countSubmenus'] = resultsubmenus.length;
|
||||||
|
Object.keys(resultsubmenus).forEach(function(key){
|
||||||
|
delete resultsubmenus[key]['_idx'];
|
||||||
|
delete resultsubmenus[key]['menuid'];
|
||||||
|
delete resultsubmenus[key]['menuheader'];
|
||||||
|
delete resultsubmenus[key]['isactivated'];
|
||||||
|
delete resultsubmenus[key]['nik'];
|
||||||
|
delete resultsubmenus[key]['menutype'];
|
||||||
|
delete resultsubmenus[key]['class'];
|
||||||
|
delete resultsubmenus[key]['icon'];
|
||||||
|
})
|
||||||
|
result[key]['submenu'] = JSON.parse(JSON.stringify(resultsubmenus));
|
||||||
|
}
|
||||||
|
if(result[key]['menutype']=='H'){
|
||||||
|
delete result[key]['_idx'];
|
||||||
|
delete result[key]['menuid'];
|
||||||
|
delete result[key]['menuheader'];
|
||||||
|
delete result[key]['isactivated'];
|
||||||
|
delete result[key]['nik'];
|
||||||
|
delete result[key]['menutype'];
|
||||||
|
}
|
||||||
|
if(result[key]['menutype']=='H1'){
|
||||||
|
result[key]['navheader']=result[key]['name'];
|
||||||
|
delete result[key]['_idx'];
|
||||||
|
delete result[key]['menuid'];
|
||||||
|
delete result[key]['menuheader'];
|
||||||
|
delete result[key]['isactivated'];
|
||||||
|
delete result[key]['nik'];
|
||||||
|
delete result[key]['menutype'];
|
||||||
|
delete result[key]['i18n'];
|
||||||
|
delete result[key]['class'];
|
||||||
|
delete result[key]['url'];
|
||||||
|
delete result[key]['slug'];
|
||||||
|
delete result[key]['name'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(result[key]['menutype']=='S'){
|
||||||
|
delete result[key]['_idx'];
|
||||||
|
delete result[key]['menuid'];
|
||||||
|
delete result[key]['menuheader'];
|
||||||
|
delete result[key]['isactivated'];
|
||||||
|
delete result[key]['nik'];
|
||||||
|
delete result[key]['menutype'];
|
||||||
|
}
|
||||||
|
if(0 === --menusRows){
|
||||||
|
|
||||||
|
let resultJson = JSON.stringify(result);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.meta['message'] = "Menu not found for nik "+nik;
|
||||||
|
apires.meta['code'] = 201;
|
||||||
|
callback('err',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error', apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = EmployeeAdapter;
|
||||||
533
adapter/financeadapter.js
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
|
||||||
|
class FinanceAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPoPayList(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_popaylist ";
|
||||||
|
qry = qry + "where podescription like '%" + keyword + "%' ";
|
||||||
|
// qry = qry + "order by idxpo 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_popaylist ";
|
||||||
|
qry = qry + "where podescription like '%" + keyword + "%' ";
|
||||||
|
qry = qry + "order by idxpo 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 queryPoPayListDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpo = req.query.idxpo;
|
||||||
|
|
||||||
|
let qry = "select * from vw_popaylist ";
|
||||||
|
qry = qry + "where idxpo='" + idxpo + "' ";
|
||||||
|
qry = qry + "order by idxpo 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){
|
||||||
|
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 queryPayChecklist(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 _idx, checklistname from tbl_financechecklist where isdeleted=0";
|
||||||
|
|
||||||
|
// 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){
|
||||||
|
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 queryCurrencyList(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 _idx, currency from tbl_currency where isdeleted=0";
|
||||||
|
|
||||||
|
// 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){
|
||||||
|
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 querySubmitPayPo(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpo = req.body.idxpo;
|
||||||
|
let ponumber = req.body.ponumber;
|
||||||
|
let idxvendor = req.body.idxvendor;
|
||||||
|
let vendorname = req.body.vendorname;
|
||||||
|
let totalpo = req.body.totalpo;
|
||||||
|
let contractnumber = req.body.contractnumber;
|
||||||
|
let percentpay = req.body.percentpay;
|
||||||
|
let totalinvoice = req.body.totalinvoice;
|
||||||
|
let payto = req.body.payto;
|
||||||
|
let paymentdate = req.body.paymentdate;
|
||||||
|
let payperiod = req.body.payperiod;
|
||||||
|
let whtvalue = req.body.whtvalue;
|
||||||
|
let costcenter = req.body.costcenter;
|
||||||
|
let description = req.body.description;
|
||||||
|
let status = req.body.status;
|
||||||
|
let statusdescription = req.body.statusdescription;
|
||||||
|
let nikpreparedby = req.body.nikpreparedby;
|
||||||
|
let prepareddate = req.body.prepareddate;
|
||||||
|
let nikreviewby = req.body.nikreviewby;
|
||||||
|
let reviewdate = req.body.reviewdate;
|
||||||
|
let nikreviewdirby = req.body.nikreviewdirby;
|
||||||
|
let reviewdirdate = req.body.reviewdirdate;
|
||||||
|
let reviewdescription = req.body.reviewdescription;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let checklistdata = req.body.checklistdata;
|
||||||
|
|
||||||
|
// console.log(checklistdata)
|
||||||
|
|
||||||
|
let qry = "insert into tbl_finance set idxpo='"+idxpo+"',ponumber='"+ponumber+"',idxvendor='"+idxvendor+"',";
|
||||||
|
qry = qry + "vendorname='"+vendorname+"',totalpo='"+totalpo+"',contractnumber='"+contractnumber+"',";
|
||||||
|
qry = qry + "percentpay='"+percentpay+"',totalinvoice='"+totalinvoice+"',payto='"+payto+"',paymentdate='"+paymentdate+"',";
|
||||||
|
qry = qry + "payperiod='"+payperiod+"',whtvalue='"+whtvalue+"',costcenter='"+costcenter+"',";
|
||||||
|
qry = qry + "description='"+description+"',status='"+status+"',statusdescription='"+statusdescription+"',";
|
||||||
|
qry = qry + "laststatusupdate=now(),nikpreparedby='"+nikpreparedby+"',prepareddate='"+prepareddate+"',";
|
||||||
|
qry = qry + "nikreviewby='"+nikreviewby+"',reviewdate='"+reviewdate+"',nikreviewdirby='"+nikreviewdirby+"',";
|
||||||
|
qry = qry + "reviewdirdate='"+reviewdirdate+"',reviewdescription='"+reviewdescription+"',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;
|
||||||
|
Object.keys(checklistdata).forEach(function(key){
|
||||||
|
var idxchecklist = checklistdata[key]['idxchecklist'];
|
||||||
|
var checklistname = checklistdata[key]['checklistname'];
|
||||||
|
var iscomplete = checklistdata[key]['iscomplete'];
|
||||||
|
var isvalid = checklistdata[key]['isvalid'];
|
||||||
|
qry = "insert into tbl_financedetailchecklist set idxheader='"+idxheader+"',";
|
||||||
|
qry = qry + "idxchecklist='"+idxchecklist+"',checklistname='"+checklistname+"',";
|
||||||
|
qry = qry + "iscomplete='"+iscomplete+"',isvalid='"+isvalid+"',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err2,result2,fields2){return result2;});
|
||||||
|
});
|
||||||
|
|
||||||
|
apires.success = true;
|
||||||
|
apires.data={
|
||||||
|
"idxfinance":idxheader,
|
||||||
|
"status" : "Data Has Been Submitted"
|
||||||
|
};
|
||||||
|
callback(null, apires);
|
||||||
|
// if(result.length>0){
|
||||||
|
// 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 queryFinanceList(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_financelist ";
|
||||||
|
// qry = qry + "where podescription like '%" + keyword + "%' ";
|
||||||
|
// qry = qry + "order by idxpo asc limit " + offset + ", " + limit;
|
||||||
|
|
||||||
|
let qry = "select * from vw_financelist ";
|
||||||
|
qry = qry + "where podescription like '%" + keyword + "%' ";
|
||||||
|
qry = qry + "order by idxpo 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_financelist ";
|
||||||
|
qry = qry + "where podescription like '%" + keyword + "%' ";
|
||||||
|
qry = qry + "order by idxpo 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 queryFinanceListDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
let idxpo = req.query.idxpo;
|
||||||
|
|
||||||
|
let qry = "select * from vw_financelistdetail ";
|
||||||
|
qry = qry + "where idxpo='"+idxpo+"'";
|
||||||
|
|
||||||
|
// 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_financelistdetail ";
|
||||||
|
qry = qry + "where idxpo='"+idxpo+"' ";
|
||||||
|
qry = qry + "order by idxfinance 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 queryFinanceDetailUpload(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxfinance = req.query.idxfinance;
|
||||||
|
|
||||||
|
let qry = "select * from vw_financelistdetail ";
|
||||||
|
qry = qry + "where idxfinance='"+idxfinance+"'";
|
||||||
|
|
||||||
|
// 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.data = JSON.parse(JSON.stringify(result));
|
||||||
|
qry = "select _idx,idxchecklist,checklistname,iscomplete,isvalid ";
|
||||||
|
qry = qry +"from tbl_financedetailchecklist where idxheader='"+idxfinance+"' and isdeleted=0 ";
|
||||||
|
qry = qry +"order by _idx asc";
|
||||||
|
db.query(qry,[],function(err1,result1,fields1){
|
||||||
|
if(err1){
|
||||||
|
apires.meta['message'] = err1.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
apires.data[0]['checklistinfo'] = JSON.parse(JSON.stringify(result1));
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// apires.success = true;
|
||||||
|
// apires.data = 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 queryUploadDocFin(req,filedoc, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxfinance = req.body.idxfinance;
|
||||||
|
var paymentdate = req.body.paymentdate;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
|
||||||
|
var qry = "update tbl_finance set status=2,statusdescription='Verify By Fin',filedoc='"+filedoc+"',paymentdate='"+paymentdate+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxfinance +"'";
|
||||||
|
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 = FinanceAdapter;
|
||||||
|
|
||||||
|
|
||||||
221
adapter/invadapter.js
Normal file
@ -0,0 +1,221 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
|
||||||
|
|
||||||
|
class InventoryAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryNewInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let description= req.body.description;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_poboqdetail ";
|
||||||
|
qry = qry +"set description='"+description+"',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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let idxpoboqdetail= req.body.idxpoboqdetail;
|
||||||
|
let description= req.body.description;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_poboqdetail ";
|
||||||
|
qry = qry +"set description='"+description+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxpoboqdetail+"'";
|
||||||
|
|
||||||
|
// 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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryDelInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let idxpoboqdetail= req.body.idxpoboqdetail;
|
||||||
|
let remarkdeleted=req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_poboqdetail ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxpoboqdetail+"'";
|
||||||
|
|
||||||
|
// 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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryInventoryList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpoboq = req.query.idxpoboq;
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
// let keyword = req.query.keyword;
|
||||||
|
// let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "select * from vw_poboqdetail ";
|
||||||
|
qry = qry +"where idxpoboq='"+ idxpoboq +"' ";
|
||||||
|
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_poboqdetail ";
|
||||||
|
qry = qry +"where idxpoboq='"+ idxpoboq +"' ";
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = InventoryAdapter;
|
||||||
358
adapter/inventoryadapter.js
Normal file
@ -0,0 +1,358 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
|
||||||
|
|
||||||
|
class InventoryAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryNewInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let description= req.body.description;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let qty = req.body.qty;
|
||||||
|
let isbulk = req.body.isbulk;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_poboqdetail ";
|
||||||
|
qry = qry +"set idxpoboq='"+idxpoboq+"',description='"+description+"',qty='"+qty+"',isbulk='"+isbulk+"',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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let idxpoboqdetail= req.body.idxpoboqdetail;
|
||||||
|
let description= req.body.description;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_poboqdetail ";
|
||||||
|
qry = qry +"set description='"+description+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxpoboqdetail+"'";
|
||||||
|
|
||||||
|
// 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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryDelInventory(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpoboq= req.body.idxpoboq;
|
||||||
|
let idxpoboqdetail= req.body.idxpoboqdetail;
|
||||||
|
let remarkdeleted=req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_poboqdetail ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxpoboqdetail+"'";
|
||||||
|
|
||||||
|
// 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 qry = "select * from vw_poboqdetail where idxpoboq='"+idxpoboq+"'";
|
||||||
|
db.query(qry,[],function(err,result1,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(result1));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryInventoryList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpoboq = req.query.idxpoboq;
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
// let keyword = req.query.keyword;
|
||||||
|
// let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "select * from vw_poboqdetail ";
|
||||||
|
qry = qry +"where idxpoboq='"+ idxpoboq +"' ";
|
||||||
|
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_poboqdetail ";
|
||||||
|
qry = qry +"where idxpoboq='"+ idxpoboq +"' ";
|
||||||
|
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 queryInventoryHeaderList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
let keyword = req.query.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "select * from vw_poinventoryheader ";
|
||||||
|
qry = qry +"where identifyprojectnumber 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_poinventoryheader ";
|
||||||
|
qry = qry +"where identifyprojectnumber 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 queryInventoryDetailList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpo = req.query.idxpo;
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
let keyword = req.query.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "select * from vw_poinventorydetail ";
|
||||||
|
qry = qry +"where idxheader='"+idxpo+"' and items 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_poinventorydetail ";
|
||||||
|
qry = qry +"where idxheader='"+idxpo+"' and items 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = InventoryAdapter;
|
||||||
864
adapter/justificationadapter.js
Normal file
@ -0,0 +1,864 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
// const slashes = require('slashes');
|
||||||
|
const QRCode = require('qrcode');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const fs = require("fs");
|
||||||
|
const { callbackPromise } = require('nodemailer/lib/shared/index.js');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
// const { fs } = require('fs').promises;
|
||||||
|
|
||||||
|
const libre = require('libreoffice-convert');
|
||||||
|
libre.convertAsync = require('util').promisify(libre.convert);
|
||||||
|
|
||||||
|
|
||||||
|
function getToken(){
|
||||||
|
try {
|
||||||
|
var n1=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n2=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n3=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n4=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n5=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n6=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var otp=n1.toString()+n2.toString()+n3.toString()+n4.toString()+n5.toString()+n6.toString();
|
||||||
|
// console.log(otp);
|
||||||
|
return otp;
|
||||||
|
} catch (error) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function ConvertToPdf(inputPath, outputPath) {
|
||||||
|
// const ext = '.pdf'
|
||||||
|
// const inputPath = path.join(__dirname, '/resources/example.docx');
|
||||||
|
// const outputPath = path.join(__dirname, `/resources/example${ext}`);
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
const docxBuf = await fs.readFile(inputPath);
|
||||||
|
|
||||||
|
// Convert it to pdf format with undefined filter (see Libreoffice docs about filter)
|
||||||
|
let pdfBuf = await libre.convertAsync(docxBuf, '.pdf', undefined);
|
||||||
|
|
||||||
|
// Here in done you have pdf file which you can save or transfer in another stream
|
||||||
|
await fs.writeFile(outputPath, pdfBuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
class JustificationAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async queryJustificationBudgetRequestList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_requestbudget order by id 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){
|
||||||
|
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 queryNewJustification(filename, req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let textpurpose = "";//req.body.maksudtujuan;
|
||||||
|
let textintroduce = "";//req.body.latarbelakang;
|
||||||
|
let textstrategic = "";//req.body.strategis;
|
||||||
|
let textbussiness = "";//req.body.bisnis;
|
||||||
|
let textrisk = "";//req.body.risiko;
|
||||||
|
let textfund = "";//req.body.pembiayaan;
|
||||||
|
let textrecomendation = "";//req.body.rekomendasi;
|
||||||
|
let textschedule = "";//req.body.penjadwalan;
|
||||||
|
let filedoc = filename;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let boq = JSON.parse(req.body.boq);
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
let status = -1;
|
||||||
|
let statusdescription = "draft";
|
||||||
|
|
||||||
|
let qry = "insert into tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',";
|
||||||
|
qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',";
|
||||||
|
qry = qry +"textschedule='"+textschedule+"',status='"+status+"',statusdescription='"+statusdescription+"',filedoc='"+filedoc+"',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 res = JSON.parse(JSON.stringify(result));
|
||||||
|
var idjustification = res.insertId;
|
||||||
|
// ==== Add boq
|
||||||
|
// console.log(boq);
|
||||||
|
qry="";
|
||||||
|
Object.keys(boq).forEach(function(key){
|
||||||
|
var items = boq[key]['items'];
|
||||||
|
var qty = boq[key]['qty'];
|
||||||
|
var unitprice = boq[key]['unitprice'];
|
||||||
|
var units = boq[key]['units']||"";
|
||||||
|
var total = boq[key]['total'];
|
||||||
|
qry = "insert into tbl_justificationboq set idxjustification='"+idjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err2,result2,fields2){return result2;});
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
// ==== add ttd
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nikapproval = created[key]['nik'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nikapproval+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
// qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
// qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()";
|
||||||
|
// db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// // Printing the code
|
||||||
|
// // console.log(code)
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nik = approval[key]['nik'];
|
||||||
|
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
// qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
// qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()";
|
||||||
|
// db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
|
||||||
|
// // Printing the code
|
||||||
|
// // console.log(code)
|
||||||
|
// })
|
||||||
|
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Saved Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateJustification(filename, req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let textpurpose = "";//req.body.maksudtujuan;
|
||||||
|
let textintroduce = "";//req.body.latarbelakang;
|
||||||
|
let textstrategic = "";//req.body.strategis;
|
||||||
|
let textbussiness = "";//req.body.bisnis;
|
||||||
|
let textrisk = "";//req.body.risiko;
|
||||||
|
let textfund = "";//req.body.pembiayaan;
|
||||||
|
let textrecomendation = "";//req.body.rekomendasi;
|
||||||
|
let textschedule = "";//req.body.penjadwalan;
|
||||||
|
let filedoc = filename;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let boq = JSON.parse(req.body.boq);
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
|
||||||
|
let filedocqry = "filedoc='"+filedoc+"',";
|
||||||
|
if(filename==""){filedocqry="";}
|
||||||
|
|
||||||
|
// console.log(filedocqry);
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',";
|
||||||
|
qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',";
|
||||||
|
qry = qry +"textschedule='"+textschedule+"',"+filedocqry+"uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxjustification+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
Object.keys(boq).forEach(function(key){
|
||||||
|
var idboq = boq[key]['id'];
|
||||||
|
var items = boq[key]['items'];
|
||||||
|
var qty = boq[key]['qty'];
|
||||||
|
var unitprice = boq[key]['unitprice'];
|
||||||
|
var units = boq[key]['units'];
|
||||||
|
var total = boq[key]['total'];
|
||||||
|
var action = boq[key]['action'];
|
||||||
|
qry = "insert into tbl_justificationboq set idxjustification='"+idxjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationboq set idxjustification='"+idxjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+idboq+"'";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationboq set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry + "where _idx='"+idboq+"'";
|
||||||
|
}
|
||||||
|
db.query(qry,[],function(err2,result2,fields2){return result2;});
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = created[key]['id'];
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nik = created[key]['nik'];
|
||||||
|
var action = created[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"' and issigned=0";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = approval[key]['id'];
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nik = approval[key]['nik'];
|
||||||
|
var action = approval[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"' and issigned=0";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
apires.data = JSON.parse(JSON.stringify(result));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateStatusJustification(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxjustification = req.body.idxjustification;
|
||||||
|
var status = req.body.status;
|
||||||
|
var statusdescription = req.body.statusdescription;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
|
||||||
|
var qry = "update tbl_justification set status='" + status +"',statusdescription='" + statusdescription +"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxjustification +"'";
|
||||||
|
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 queryConvertdocxtoPdf(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxjustification = req.body.idxjustification;
|
||||||
|
|
||||||
|
var qry = "select * from vw_justification where id='" + idxjustification +"'";
|
||||||
|
// 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){
|
||||||
|
const inputPath = "/home/nodejs/wsproc/assets/words/justifikasitemplate.docx";
|
||||||
|
const outputPath = "/home/nodejs/wsproc/assets/pdf/justifikasitemplate.pdf";
|
||||||
|
// console.log(__dirname);
|
||||||
|
ConvertToPdf(inputPath, outputPath).catch(function (err) {
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.success = true;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
// console.log(`Error converting file: ${err}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
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 querySignedJustification(filename, req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let filedoc = filename;
|
||||||
|
var idxapproval = req.body.idxapproval;
|
||||||
|
var nikapproval = req.body.nikapproval;
|
||||||
|
var datesigned = req.body.datesigned;
|
||||||
|
// console.log(datesigned);
|
||||||
|
var nik = req.body.nik;
|
||||||
|
var token = this.getToken();
|
||||||
|
var filepng = token+".png";
|
||||||
|
// token =getToken();
|
||||||
|
token = token +","+nikapproval;
|
||||||
|
|
||||||
|
let filedocqry = "filedoc='"+filedoc+"',";
|
||||||
|
if(filename=="")
|
||||||
|
{
|
||||||
|
filedocqry="";
|
||||||
|
// apires.meta['message'] = "File tidak ditemukan";
|
||||||
|
// apires.meta['code'] = 500;
|
||||||
|
// callback(null, apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',";
|
||||||
|
qry = qry +filedocqry+"uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxjustification+"'";
|
||||||
|
|
||||||
|
db.query(qry,[],function(err,result,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('d');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// console.log(code);`
|
||||||
|
if(err) {
|
||||||
|
console.log('ddf');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var imageBuffer = Adapter.decodeBase64Image(code);
|
||||||
|
fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) {
|
||||||
|
// console.log(err);
|
||||||
|
if(err){
|
||||||
|
console.log('eee');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback(err.toString(), apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var qry = "update tbl_justificationttd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxapproval +"'";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('ttetete');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
// ===
|
||||||
|
qry = "select status from tbl_justification where _idx='"+idxjustification+"'";
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('bbbb');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var status = result2[0]['status'];
|
||||||
|
var isapproved=0;
|
||||||
|
if(status==2){isapproved = 1;}
|
||||||
|
apires.data = {
|
||||||
|
"isapproved":isapproved,
|
||||||
|
"token":token,
|
||||||
|
"urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng
|
||||||
|
};
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// else{
|
||||||
|
|
||||||
|
// }
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryDeleteJustification(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryListCreatedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_createdby order by id 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){
|
||||||
|
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 queryListCheckedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_checkedby order by id 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){
|
||||||
|
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 queryListApprovedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_approvedby order by id 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){
|
||||||
|
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 queryJustificationDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let _idx= req.query.id;
|
||||||
|
|
||||||
|
let qry = "select * from vw_justificationdetail where id='"+_idx+"'";
|
||||||
|
|
||||||
|
// 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 dataRows = result.length;
|
||||||
|
if(result.length<=0){
|
||||||
|
apires.meta.message = "Record not found";
|
||||||
|
callback('',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Object.keys(result).forEach(function(key){
|
||||||
|
qry = "select * from vw_justificationboq where idxjustification='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
result[key]['boq'] = [];
|
||||||
|
result[key]['ttd']= [];
|
||||||
|
if(result2.length>0){
|
||||||
|
result[key]['boq'] = JSON.parse(JSON.stringify(result2));
|
||||||
|
}
|
||||||
|
// === Get Ttd
|
||||||
|
qry = "select * from vw_justificationttd where idxjustification='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result3,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(result3.length>0){
|
||||||
|
var dibuatoleh = [];
|
||||||
|
var disetujuioleh = [];
|
||||||
|
Object.keys(result3).forEach(function(key2){
|
||||||
|
if(result3[key2]['category']=='CRE'){
|
||||||
|
dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}else{
|
||||||
|
disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
result[key]['ttd'] = {
|
||||||
|
"dibuatoleh" : dibuatoleh,
|
||||||
|
"disetujuioleh" : disetujuioleh
|
||||||
|
}
|
||||||
|
// result[key]['ttd'] = JSON.parse(JSON.stringify(result3));
|
||||||
|
}
|
||||||
|
if(0 === --dataRows){
|
||||||
|
let resultJson = JSON.stringify(result);
|
||||||
|
console.log(resultJson);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async queryJustificationList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = req.body.status;
|
||||||
|
|
||||||
|
let swherenik="";
|
||||||
|
if(nik){
|
||||||
|
swherenik="iby='"+nik+"' and ";
|
||||||
|
}
|
||||||
|
// let qry = "select * from vw_justification ";
|
||||||
|
// qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc";
|
||||||
|
let qry = "select * from vw_justification ";
|
||||||
|
qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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_justification ";
|
||||||
|
qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = JustificationAdapter;
|
||||||
864
adapter/justificationadapter_20251204.js
Normal file
@ -0,0 +1,864 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
// const slashes = require('slashes');
|
||||||
|
const QRCode = require('qrcode');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const fs = require("fs");
|
||||||
|
const { callbackPromise } = require('nodemailer/lib/shared/index.js');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
// const { fs } = require('fs').promises;
|
||||||
|
|
||||||
|
const libre = require('libreoffice-convert');
|
||||||
|
libre.convertAsync = require('util').promisify(libre.convert);
|
||||||
|
|
||||||
|
|
||||||
|
function getToken(){
|
||||||
|
try {
|
||||||
|
var n1=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n2=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n3=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n4=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n5=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n6=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var otp=n1.toString()+n2.toString()+n3.toString()+n4.toString()+n5.toString()+n6.toString();
|
||||||
|
// console.log(otp);
|
||||||
|
return otp;
|
||||||
|
} catch (error) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function ConvertToPdf(inputPath, outputPath) {
|
||||||
|
// const ext = '.pdf'
|
||||||
|
// const inputPath = path.join(__dirname, '/resources/example.docx');
|
||||||
|
// const outputPath = path.join(__dirname, `/resources/example${ext}`);
|
||||||
|
|
||||||
|
// Read file
|
||||||
|
const docxBuf = await fs.readFile(inputPath);
|
||||||
|
|
||||||
|
// Convert it to pdf format with undefined filter (see Libreoffice docs about filter)
|
||||||
|
let pdfBuf = await libre.convertAsync(docxBuf, '.pdf', undefined);
|
||||||
|
|
||||||
|
// Here in done you have pdf file which you can save or transfer in another stream
|
||||||
|
await fs.writeFile(outputPath, pdfBuf);
|
||||||
|
}
|
||||||
|
|
||||||
|
class JustificationAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async queryJustificationBudgetRequestList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_requestbudget order by id 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){
|
||||||
|
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 queryNewJustification(filename, req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let textpurpose = "";//req.body.maksudtujuan;
|
||||||
|
let textintroduce = "";//req.body.latarbelakang;
|
||||||
|
let textstrategic = "";//req.body.strategis;
|
||||||
|
let textbussiness = "";//req.body.bisnis;
|
||||||
|
let textrisk = "";//req.body.risiko;
|
||||||
|
let textfund = "";//req.body.pembiayaan;
|
||||||
|
let textrecomendation = "";//req.body.rekomendasi;
|
||||||
|
let textschedule = "";//req.body.penjadwalan;
|
||||||
|
let filedoc = filename;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let boq = JSON.parse(req.body.boq);
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
let status = -1;
|
||||||
|
let statusdescription = "draft";
|
||||||
|
|
||||||
|
let qry = "insert into tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',";
|
||||||
|
qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',";
|
||||||
|
qry = qry +"textschedule='"+textschedule+"',status='"+status+"',statusdescription='"+statusdescription+"',filedoc='"+filedoc+"',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 res = JSON.parse(JSON.stringify(result));
|
||||||
|
var idjustification = res.insertId;
|
||||||
|
// ==== Add boq
|
||||||
|
// console.log(boq);
|
||||||
|
qry="";
|
||||||
|
Object.keys(boq).forEach(function(key){
|
||||||
|
var items = boq[key]['items'];
|
||||||
|
var qty = boq[key]['qty'];
|
||||||
|
var unitprice = boq[key]['unitprice'];
|
||||||
|
var units = boq[key]['units']||"";
|
||||||
|
var total = boq[key]['total'];
|
||||||
|
qry = "insert into tbl_justificationboq set idxjustification='"+idjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err2,result2,fields2){return result2;});
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
// ==== add ttd
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nikapproval = created[key]['nik'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nikapproval+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
// qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
// qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()";
|
||||||
|
// db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// // Printing the code
|
||||||
|
// // console.log(code)
|
||||||
|
// })
|
||||||
|
|
||||||
|
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nik = approval[key]['nik'];
|
||||||
|
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
// QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
// qry = "insert into tbl_justificationttd set idxjustification='"+idjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
// qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='"+code+"',iby='"+nik+"',idt=now()";
|
||||||
|
// db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
|
||||||
|
// // Printing the code
|
||||||
|
// // console.log(code)
|
||||||
|
// })
|
||||||
|
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Saved Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateJustification(filename, req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let textpurpose = "";//req.body.maksudtujuan;
|
||||||
|
let textintroduce = "";//req.body.latarbelakang;
|
||||||
|
let textstrategic = "";//req.body.strategis;
|
||||||
|
let textbussiness = "";//req.body.bisnis;
|
||||||
|
let textrisk = "";//req.body.risiko;
|
||||||
|
let textfund = "";//req.body.pembiayaan;
|
||||||
|
let textrecomendation = "";//req.body.rekomendasi;
|
||||||
|
let textschedule = "";//req.body.penjadwalan;
|
||||||
|
let filedoc = filename;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let boq = JSON.parse(req.body.boq);
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
|
||||||
|
let filedocqry = "filedoc='"+filedoc+"',";
|
||||||
|
if(filename==""){filedocqry="";}
|
||||||
|
|
||||||
|
// console.log(filedocqry);
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',textpurpose='"+textpurpose+"',textintroduce='"+textintroduce+"',";
|
||||||
|
qry = qry +"textstrategic='"+textstrategic+"',textbussiness='"+textbussiness+"',textrisk='"+textrisk+"',textfund='"+textfund+"',textrecomendation='"+textrecomendation+"',";
|
||||||
|
qry = qry +"textschedule='"+textschedule+"',"+filedocqry+"uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxjustification+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
Object.keys(boq).forEach(function(key){
|
||||||
|
var idboq = boq[key]['id'];
|
||||||
|
var items = boq[key]['items'];
|
||||||
|
var qty = boq[key]['qty'];
|
||||||
|
var unitprice = boq[key]['unitprice'];
|
||||||
|
var units = boq[key]['units'];
|
||||||
|
var total = boq[key]['total'];
|
||||||
|
var action = boq[key]['action'];
|
||||||
|
qry = "insert into tbl_justificationboq set idxjustification='"+idxjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationboq set idxjustification='"+idxjustification+"',";
|
||||||
|
qry = qry + "items='"+items+"',qty='"+qty+"',units='"+units+"',unitprice='"+unitprice+"',total='"+total+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+idboq+"'";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationboq set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry + "where _idx='"+idboq+"'";
|
||||||
|
}
|
||||||
|
db.query(qry,[],function(err2,result2,fields2){return result2;});
|
||||||
|
// console.log(r);
|
||||||
|
});
|
||||||
|
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = created[key]['id'];
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nik = created[key]['nik'];
|
||||||
|
var action = created[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"' and issigned=0";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = approval[key]['id'];
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nik = approval[key]['nik'];
|
||||||
|
var action = approval[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_justificationttd set idxjustification='"+idxjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"' and issigned=0";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_justificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
apires.data = JSON.parse(JSON.stringify(result));
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateStatusJustification(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxjustification = req.body.idxjustification;
|
||||||
|
var status = req.body.status;
|
||||||
|
var statusdescription = req.body.statusdescription;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
|
||||||
|
var qry = "update tbl_justification set status='" + status +"',statusdescription='" + statusdescription +"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxjustification +"'";
|
||||||
|
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 queryConvertdocxtoPdf(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxjustification = req.body.idxjustification;
|
||||||
|
|
||||||
|
var qry = "select * from vw_justification where id='" + idxjustification +"'";
|
||||||
|
// 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){
|
||||||
|
const inputPath = "/home/nodejs/wsproc/assets/words/justifikasitemplate.docx";
|
||||||
|
const outputPath = "/home/nodejs/wsproc/assets/pdf/justifikasitemplate.pdf";
|
||||||
|
// console.log(__dirname);
|
||||||
|
ConvertToPdf(inputPath, outputPath).catch(function (err) {
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.success = true;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
// console.log(`Error converting file: ${err}`);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
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 querySignedJustification(filename, req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let idxrequestbudget= req.body.idxrequestbudget;
|
||||||
|
let trxid = req.body.trxid;
|
||||||
|
let justificationnumber = req.body.nomorjustifikasi;
|
||||||
|
let title = req.body.judul;
|
||||||
|
let division = req.body.divisi;
|
||||||
|
let glacc = req.body.acccode;
|
||||||
|
let description = req.body.deskripsi;
|
||||||
|
let budgettype = req.body.jenisbudget;
|
||||||
|
let amount = req.body.nilai;
|
||||||
|
let useddate = req.body.tanggalpelaksanaan;
|
||||||
|
let filedoc = filename;
|
||||||
|
var idxapproval = req.body.idxapproval;
|
||||||
|
var nikapproval = req.body.nikapproval;
|
||||||
|
var datesigned = req.body.datesigned;
|
||||||
|
// console.log(datesigned);
|
||||||
|
var nik = req.body.nik;
|
||||||
|
var token = this.getToken();
|
||||||
|
var filepng = token+".png";
|
||||||
|
// token =getToken();
|
||||||
|
token = token +","+nikapproval;
|
||||||
|
|
||||||
|
let filedocqry = "filedoc='"+filedoc+"',";
|
||||||
|
if(filename=="")
|
||||||
|
{
|
||||||
|
filedocqry="";
|
||||||
|
// apires.meta['message'] = "File tidak ditemukan";
|
||||||
|
// apires.meta['code'] = 500;
|
||||||
|
// callback(null, apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set idxrequestbudget='"+idxrequestbudget+"', trxid='"+trxid+"',justificationnumber='"+justificationnumber+"',title='"+title+"',division='"+division+"',";
|
||||||
|
qry = qry +"glacc='"+glacc+"',description='"+description+"',budgettype='"+budgettype+"',amount='"+amount+"',useddate='"+useddate+"',";
|
||||||
|
qry = qry +filedocqry+"uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxjustification+"'";
|
||||||
|
|
||||||
|
db.query(qry,[],function(err,result,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('d');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// console.log(code);`
|
||||||
|
if(err) {
|
||||||
|
console.log('ddf');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var imageBuffer = Adapter.decodeBase64Image(code);
|
||||||
|
fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) {
|
||||||
|
// console.log(err);
|
||||||
|
if(err){
|
||||||
|
console.log('eee');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback(err.toString(), apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var qry = "update tbl_justificationttd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxapproval +"'";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('ttetete');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
// ===
|
||||||
|
qry = "select status from tbl_justification where _idx='"+idxjustification+"'";
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
console.log('bbbb');
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var status = result2[0]['status'];
|
||||||
|
var isapproved=0;
|
||||||
|
if(status==2){isapproved = 1;}
|
||||||
|
apires.data = {
|
||||||
|
"isapproved":isapproved,
|
||||||
|
"token":token,
|
||||||
|
"urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng
|
||||||
|
};
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// else{
|
||||||
|
|
||||||
|
// }
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryDeleteJustification(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_justification ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryListCreatedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_createdby order by id 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){
|
||||||
|
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 queryListCheckedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_checkedby order by id 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){
|
||||||
|
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 queryListApprovedBy(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let qry = "select * from vw_approvedby order by id 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){
|
||||||
|
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 queryJustificationDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let _idx= req.query.id;
|
||||||
|
|
||||||
|
let qry = "select * from vw_justificationdetail where id='"+_idx+"'";
|
||||||
|
|
||||||
|
// 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 dataRows = result.length;
|
||||||
|
if(result.length<=0){
|
||||||
|
apires.meta.message = "Record not found";
|
||||||
|
callback('',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Object.keys(result).forEach(function(key){
|
||||||
|
qry = "select * from vw_justificationboq where idxjustification='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
result[key]['boq'] = [];
|
||||||
|
result[key]['ttd']= [];
|
||||||
|
if(result2.length>0){
|
||||||
|
result[key]['boq'] = JSON.parse(JSON.stringify(result2));
|
||||||
|
}
|
||||||
|
// === Get Ttd
|
||||||
|
qry = "select * from vw_justificationttd where idxjustification='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result3,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(result3.length>0){
|
||||||
|
var dibuatoleh = [];
|
||||||
|
var disetujuioleh = [];
|
||||||
|
Object.keys(result3).forEach(function(key2){
|
||||||
|
if(result3[key2]['category']=='CRE'){
|
||||||
|
dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}else{
|
||||||
|
disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
result[key]['ttd'] = {
|
||||||
|
"dibuatoleh" : dibuatoleh,
|
||||||
|
"disetujuioleh" : disetujuioleh
|
||||||
|
}
|
||||||
|
// result[key]['ttd'] = JSON.parse(JSON.stringify(result3));
|
||||||
|
}
|
||||||
|
if(0 === --dataRows){
|
||||||
|
let resultJson = JSON.stringify(result);
|
||||||
|
console.log(resultJson);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
async queryJustificationList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = req.body.status;
|
||||||
|
|
||||||
|
let swherenik="";
|
||||||
|
if(nik){
|
||||||
|
swherenik="iby='"+nik+"' and ";
|
||||||
|
}
|
||||||
|
// let qry = "select * from vw_justification ";
|
||||||
|
// qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc";
|
||||||
|
let qry = "select * from vw_justification ";
|
||||||
|
qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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_justification ";
|
||||||
|
qry = qry +"where (trim(acccode) like '%"+ keyword +"%' or trim(nomorjustifikasi) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = JustificationAdapter;
|
||||||
89
adapter/mainadapter.js
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const jwt = require('jsonwebtoken');
|
||||||
|
|
||||||
|
class MainAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryGetToken(req,callback){
|
||||||
|
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let password = req.body.pass;
|
||||||
|
let secretkey = req.body.secretkey;
|
||||||
|
console.log(req.body);
|
||||||
|
// console.log("secret key :"+process.env.SECRET_KEY);
|
||||||
|
const token = jwt.sign({
|
||||||
|
nik : nik,
|
||||||
|
password : password
|
||||||
|
}, "Pr0C#2022oct", {expiresIn: process.env.EXPIRED} );
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
// if(secretkey!=process.env.SECRET_KEY){
|
||||||
|
if(secretkey!="Pr0C#2022oct"){
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = "You don't have authorize or wrong password!";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apires.success=true;
|
||||||
|
apires.data = token;
|
||||||
|
}
|
||||||
|
// console.log(apires);
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
async querySendOTPClient(req,callback){
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry="SELECT id,token,email,hpnumber from tbl_employee where nik='"+nik+"' and isdeleted=0 order by id asc limit 1";
|
||||||
|
let apires = this.getApiResultDefined("obj_employee","table");
|
||||||
|
db.query(qry, [], function (error, results, fields) {
|
||||||
|
try {
|
||||||
|
if (error) {
|
||||||
|
apires.message=error;
|
||||||
|
callback(error,apires);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//make results
|
||||||
|
var resultJson = JSON.stringify(results);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
// console.log(resultJson);
|
||||||
|
if(resultJson.length>0){
|
||||||
|
var token = resultJson[0]['token'];
|
||||||
|
var emailmsg = "Your Security Code : "+token+", \nuser code : "+nik;
|
||||||
|
apires.meta['total']= resultJson.length,
|
||||||
|
apires.success=true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
apires.message = emailmsg;
|
||||||
|
// Adapter.sentMail(resultJson[0]['email'],"Kode Verifikasi",emailmsg,function(err,result){
|
||||||
|
// if(err) {console.log(err); return callback(err,null);}
|
||||||
|
// })
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apires.message="NIK Not not found";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
//console.log(error);
|
||||||
|
apires.message = error.message;
|
||||||
|
callback(error,apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryGetMenus(req, callback){
|
||||||
|
try {
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = MainAdapter;
|
||||||
2135
adapter/poadapter.js
Normal file
592
adapter/pradapter.js
Normal file
@ -0,0 +1,592 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const QRCode = require('qrcode');
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
|
||||||
|
class PrAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPrJustificationList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
|
||||||
|
// console.log(req);
|
||||||
|
let nik = req.query.nik;
|
||||||
|
let qry = "select * from vw_justification where iscreatepr=0 and status=2 and iby='"+nik+"' order by id 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){
|
||||||
|
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 queryGetTrxIdPr(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let nik = req.query.nik;
|
||||||
|
let qry = "select count(_idx) totalrows,date_format(now(),'%Y%m%d') dates from tbl_pr where iby='"+nik+"' and year(idt)=year(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 resp = JSON.parse(JSON.stringify(result));
|
||||||
|
// console.log(resp[0]['dates']);
|
||||||
|
var ymd = resp[0]['dates'];
|
||||||
|
ymd = ymd.toString().trim().replace("-","");
|
||||||
|
var counter = resp[0]['totalrows']+1;
|
||||||
|
var counterstr = ("0000000000"+counter);
|
||||||
|
counterstr = counterstr.substring(counterstr.length-4, counterstr.length);
|
||||||
|
var trxid = "TCEL-PR/"+ymd+"/"+nik+"/"+counterstr;
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = trxid
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryNewPr(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let justificationnumber= req.body.justificationnumber;
|
||||||
|
let trxidpr = req.body.trxidpr;
|
||||||
|
let prnumber = req.body.prnumber;
|
||||||
|
let costcenter = req.body.costcenter;
|
||||||
|
let profitcenter = req.body.profitcenter;
|
||||||
|
let description = req.body.description;
|
||||||
|
let qty = req.body.qty;
|
||||||
|
let unit = req.body.unit;
|
||||||
|
let netprice = req.body.netprice;
|
||||||
|
let totalvalue = req.body.totalvalue;
|
||||||
|
let curr = req.body.curr;
|
||||||
|
let prdate = req.body.prdate;
|
||||||
|
let idxapproval = req.body.idxapproval;
|
||||||
|
let nikapproval = req.body.nikapproval;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = -1;
|
||||||
|
let statusdescription = "draft";
|
||||||
|
|
||||||
|
let qry = "insert into tbl_pr ";
|
||||||
|
qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',";
|
||||||
|
qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',";
|
||||||
|
qry = qry +"curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',";
|
||||||
|
qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',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 res = JSON.parse(JSON.stringify(result));
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Saved Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdatePr(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
// console.log(req.body);
|
||||||
|
let idxpr= req.body.idxpr;
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let justificationnumber= req.body.justificationnumber;
|
||||||
|
let trxidpr = req.body.trxidpr;
|
||||||
|
let prnumber = req.body.prnumber;
|
||||||
|
let costcenter = req.body.costcenter;
|
||||||
|
let profitcenter = req.body.profitcenter;
|
||||||
|
let description = req.body.description;
|
||||||
|
let qty = req.body.qty;
|
||||||
|
let unit = req.body.unit;
|
||||||
|
let netprice = req.body.netprice;
|
||||||
|
let totalvalue = req.body.totalvalue;
|
||||||
|
let curr = req.body.curr;
|
||||||
|
let prdate = req.body.prdate;
|
||||||
|
let idxapproval = req.body.idxapproval;
|
||||||
|
let nikapproval = req.body.nikapproval;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = -1;
|
||||||
|
let statusdescription = "draft";
|
||||||
|
|
||||||
|
let qry = "update tbl_pr ";
|
||||||
|
qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',";
|
||||||
|
qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',";
|
||||||
|
qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+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
|
||||||
|
{
|
||||||
|
var res = JSON.parse(JSON.stringify(result));
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateStatusPr(req,prsapnumber, sapmessage, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxpr = req.body.idxpr;
|
||||||
|
var status = req.body.status;
|
||||||
|
var statusdescription = req.body.statusdescription;
|
||||||
|
var description = req.body.description;
|
||||||
|
var curr = req.body.curr;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
|
||||||
|
var swherestatus="status='" + status +"',statusdescription='" + statusdescription +"',";
|
||||||
|
if(sapmessage){
|
||||||
|
swherestatus="";
|
||||||
|
}
|
||||||
|
|
||||||
|
var setprnumber="prnumber='"+prsapnumber+"',";
|
||||||
|
if(!prsapnumber){setprnumber="";}
|
||||||
|
|
||||||
|
var setdescription="";
|
||||||
|
if(description){
|
||||||
|
setdescription="description='"+description+"',";
|
||||||
|
}
|
||||||
|
if(curr){
|
||||||
|
setdescription+="curr='"+curr+"',";
|
||||||
|
}
|
||||||
|
|
||||||
|
// console.log(setdescription);
|
||||||
|
var qry = "update tbl_pr set "+setprnumber+setdescription+"sapmessage='"+sapmessage+"',"+swherestatus+"uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + 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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryDeletePr(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_pr ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPrDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let _idx= req.query.id;
|
||||||
|
|
||||||
|
let qry = "select * from vw_pr where id='"+_idx+"'";
|
||||||
|
|
||||||
|
// 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 dataRows = result.length;
|
||||||
|
if(dataRows<=0){
|
||||||
|
apires.meta.message = "Record not found";
|
||||||
|
callback('',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
let resultJson = JSON.stringify(result);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPrList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = req.body.status;
|
||||||
|
|
||||||
|
// let qry = "select * from vw_pr ";
|
||||||
|
// qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc limit " + offset + ", " + limit;
|
||||||
|
|
||||||
|
let swherenik="";
|
||||||
|
if(nik){
|
||||||
|
swherenik="iby='"+nik+"' and ";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let qry = "select * from vw_pr ";
|
||||||
|
qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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_pr ";
|
||||||
|
qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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
|
||||||
|
{
|
||||||
|
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 queryApprovedPR(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
let idxpr= req.body.idxpr;
|
||||||
|
let idxjustification= req.body.idxjustification;
|
||||||
|
let justificationnumber= req.body.justificationnumber;
|
||||||
|
let trxidpr = req.body.trxidpr;
|
||||||
|
let prnumber = req.body.prnumber;
|
||||||
|
let costcenter = req.body.costcenter;
|
||||||
|
let profitcenter = req.body.profitcenter;
|
||||||
|
let description = req.body.description;
|
||||||
|
let qty = req.body.qty;
|
||||||
|
let unit = req.body.unit;
|
||||||
|
let netprice = req.body.netprice;
|
||||||
|
let totalvalue = req.body.totalvalue;
|
||||||
|
let curr = req.body.curr;
|
||||||
|
let prdate = req.body.prdate;
|
||||||
|
let idxapproval = req.body.idxapproval;
|
||||||
|
let nikapproval = req.body.nikapproval;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = 2;
|
||||||
|
let statusdescription = "Approval";
|
||||||
|
let approveddate = req.body.approveddate;
|
||||||
|
var token =this.getToken();
|
||||||
|
var filepng = token+"pr.png";
|
||||||
|
// token =getToken();
|
||||||
|
token = token +","+nikapproval;
|
||||||
|
|
||||||
|
let qry = "update tbl_pr ";
|
||||||
|
qry = qry +"set trxidpr='"+trxidpr+"',prnumber='"+prnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',costcenter='"+costcenter+"',";
|
||||||
|
qry = qry +"profitcenter='"+profitcenter+"',description='"+description+"',qty='"+qty+"',unit='"+unit+"',netprice='"+netprice+"',totalvalue='"+totalvalue+"',";
|
||||||
|
qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',approveddate='"+approveddate+"',curr='"+curr+"',prdate='"+prdate+"',status='"+status+"',statusdescription='"+statusdescription+"',";
|
||||||
|
qry = qry +"token=md5('"+token+"'),filepng='"+filepng+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+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
|
||||||
|
{
|
||||||
|
QRCode.toDataURL(token, function (err, code) {
|
||||||
|
// console.log(code);
|
||||||
|
if(err) {
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var imageBuffer = Adapter.decodeBase64Image(code);
|
||||||
|
fs.writeFile('./assets/png/'+filepng, imageBuffer.data, function(err) {
|
||||||
|
// console.log(err);
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback(err.toString(), apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = {
|
||||||
|
"isapproved":1,
|
||||||
|
"token":token,
|
||||||
|
"urltoken": process.env.BASEURL+"/main/getimageinfo?route=png&name="+filepng
|
||||||
|
};
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPrManagementList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.query.limit;
|
||||||
|
let offset = req.query.offset;
|
||||||
|
let keyword = req.query.keyword;
|
||||||
|
let nik = req.query.nik;
|
||||||
|
|
||||||
|
let swherenik="and iby='"+nik+"'";
|
||||||
|
if(nik=='999999'){
|
||||||
|
swherenik="";
|
||||||
|
}
|
||||||
|
|
||||||
|
// let qry = "select * from vw_prmanagement ";
|
||||||
|
// qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +swherenik+" order by id asc limit " + offset + ", " + limit;
|
||||||
|
let qry = "select * from vw_prmanagement ";
|
||||||
|
qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +swherenik+" order by id 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_prmanagement ";
|
||||||
|
qry = qry +"where (trim(trxidpr) like '%"+ keyword +"%' or trim(prnumber) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry + swherenik +" order by id 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 queryPrManagementListDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let idxpr = req.query.idxpr;
|
||||||
|
let qry = "select * from vw_prmanagement ";
|
||||||
|
qry = qry +"where id='"+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
|
||||||
|
{
|
||||||
|
apires.meta.code = 200;
|
||||||
|
if(result.length>0){
|
||||||
|
apires.success = true;
|
||||||
|
apires.data=JSON.parse(JSON.stringify(result));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apires.meta.message = "Record Not Found";
|
||||||
|
}
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = PrAdapter;
|
||||||
731
adapter/procjustificationadapter.js
Normal file
@ -0,0 +1,731 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
const QRCode = require('qrcode');
|
||||||
|
const fs = require("fs");
|
||||||
|
|
||||||
|
function getToken(){
|
||||||
|
try {
|
||||||
|
var n1=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n2=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n3=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n4=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n5=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n6=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var otp=n1.toString()+n2.toString()+n3.toString()+n4.toString()+n5.toString()+n6.toString();
|
||||||
|
// console.log(otp);
|
||||||
|
return otp;
|
||||||
|
} catch (error) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ProcJustificationAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryPrList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let nik = req.query.nik;
|
||||||
|
let isused = req.query.isused;
|
||||||
|
let swherenik="";
|
||||||
|
if(nik){
|
||||||
|
swherenik="iby='"+nik+"' and ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// let qry = "select * from vw_pr where status in(2,6) and isused="+isused+" and iby='"+nik+"' order by id asc";
|
||||||
|
let qry = "select * from vw_pr where status in(2,6) and "+swherenik+" isused="+isused+" order by id 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){
|
||||||
|
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 queryNewProcJustification(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxpr= req.body.idxpr;
|
||||||
|
let prnumber= req.body.prnumber;
|
||||||
|
let procjustificationnumber = req.body.procjustificationnumber;
|
||||||
|
let idxjustification = req.body.idxjustification;
|
||||||
|
let justificationnumber = req.body.justificationnumber;
|
||||||
|
// let idxcreated = req.body.idxcreated;
|
||||||
|
// let nikcreated = req.body.nikcreated;
|
||||||
|
// let idxverified = req.body.idxverified;
|
||||||
|
// let nikverified = req.body.nikverified;
|
||||||
|
// let idxapproval = req.body.idxapproval;
|
||||||
|
// let nikapproval = req.body.nikapproval;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
let status = -1;
|
||||||
|
let statusdescription = "draft";
|
||||||
|
|
||||||
|
// let qry = "insert into tbl_procjustification ";
|
||||||
|
// qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',";
|
||||||
|
// qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',idxcreated='"+idxcreated+"',nikcreated='"+nikcreated+"',idxverified='"+idxverified+"',nikverified='"+nikverified+"',";
|
||||||
|
// qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',iby='"+nik+"',idt=now()";
|
||||||
|
let qry = "insert into tbl_procjustification ";
|
||||||
|
qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',";
|
||||||
|
qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',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 res = JSON.parse(JSON.stringify(result));
|
||||||
|
var idxprocjustification = res.insertId;
|
||||||
|
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var verify = ttd.diverifikasioleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nikcreated = created[key]['nik'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nikcreated+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(verify).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = verify[key]['idemployee'];
|
||||||
|
var nikverify = verify[key]['nik'];
|
||||||
|
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nikverify+"',category='VRF',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nikapproval = approval[key]['nik'];
|
||||||
|
|
||||||
|
// if(err) return console.log("error occurred")
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nikapproval+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Saved Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryUpdateProcJustification(req, filename, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
//console.log(filename);
|
||||||
|
let idxprocjustification = req.body.idxprocjustification;
|
||||||
|
let idxpr= req.body.idxpr;
|
||||||
|
let prnumber= req.body.prnumber;
|
||||||
|
let procjustificationnumber = req.body.procjustificationnumber;
|
||||||
|
let idxjustification = req.body.idxjustification;
|
||||||
|
let justificationnumber = req.body.justificationnumber;
|
||||||
|
let filecategory = req.body.filecategory;
|
||||||
|
let descriptionfile = req.body.descriptionfile;
|
||||||
|
let numberoffile = req.body.numberoffile;
|
||||||
|
let ttd = JSON.parse(req.body.ttd);
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = req.body.status;
|
||||||
|
let statusdescription = req.body.statusdescription;
|
||||||
|
|
||||||
|
// let qry = "update tbl_procjustification ";
|
||||||
|
// qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',";
|
||||||
|
// qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',idxcreated='"+idxcreated+"',nikcreated='"+nikcreated+"',idxverified='"+idxverified+"',nikverified='"+nikverified+"',";
|
||||||
|
// qry = qry +"idxapproval='"+idxapproval+"',nikapproval='"+nikapproval+"',uby='"+nik+"',udt=now() ";
|
||||||
|
// qry = qry +"where _idx='"+idxprocjustification+"'";
|
||||||
|
let qry = "update tbl_procjustification ";
|
||||||
|
qry = qry +"set idxpr='"+idxpr+"',prnumber='"+prnumber+"',procjustificationnumber='"+procjustificationnumber+"',idxjustification='"+idxjustification+"',justificationnumber='"+justificationnumber+"',";
|
||||||
|
qry = qry +"status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxprocjustification+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
qry ="select _idx from tbl_procjustificationdoc ";
|
||||||
|
qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' and isdeleted=0 order by _idx desc limit 1";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[], function(err2, results2){
|
||||||
|
if(err2){
|
||||||
|
apires.meta['message'] = err2.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}else{
|
||||||
|
|
||||||
|
qry ="insert into tbl_procjustificationdoc ";
|
||||||
|
qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',";
|
||||||
|
qry = qry + "filename='"+filename+"',descriptionfile='"+descriptionfile+"',iby='"+nik+"',idt=now()";
|
||||||
|
if(results2.length>=1){
|
||||||
|
qry ="update tbl_procjustificationdoc ";
|
||||||
|
qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',";
|
||||||
|
qry = qry + "filename='"+filename+"',descriptionfile='"+descriptionfile+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' and isdeleted=0";
|
||||||
|
}
|
||||||
|
db.query(qry,[],function(err3,results3){
|
||||||
|
if(err3){
|
||||||
|
apires.meta['message'] = err3.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// === Update ttd
|
||||||
|
var created = ttd.dibuatoleh;
|
||||||
|
var verify = ttd.diverifikasioleh;
|
||||||
|
var approval = ttd.disetujuioleh;
|
||||||
|
|
||||||
|
Object.keys(created).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = created[key]['id'];
|
||||||
|
var idemployee = created[key]['idemployee'];
|
||||||
|
var nik = created[key]['nik'];
|
||||||
|
var action = created[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='CRE',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(verify).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = verify[key]['id'];
|
||||||
|
var idemployee = verify[key]['idemployee'];
|
||||||
|
var nik = verify[key]['nik'];
|
||||||
|
var action = verify[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='VRF',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='VRF',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
Object.keys(approval).forEach(function(key){
|
||||||
|
var token =getToken();
|
||||||
|
var id = approval[key]['id'];
|
||||||
|
var idemployee = approval[key]['idemployee'];
|
||||||
|
var nik = approval[key]['nik'];
|
||||||
|
var action = approval[key]['action'];
|
||||||
|
|
||||||
|
qry = "insert into tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',iby='"+nik+"',idt=now()";
|
||||||
|
if(action=='update'){
|
||||||
|
qry = "update tbl_procjustificationttd set idxjustification='"+idxprocjustification+"',idemployee='"+idemployee+"',";
|
||||||
|
qry = qry + "nik='"+nik+"',category='APR',token='"+token+"',imgqr='',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry + "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
if(action=='delete'){
|
||||||
|
qry = "update tbl_procjustificationttd set isdeleted=1,dby='"+nik+"',ddt=now() ";
|
||||||
|
qry = qry+ "where _idx='"+id+"'";
|
||||||
|
}
|
||||||
|
|
||||||
|
db.query(qry,[],function(err3,result3,fields3){return result3;});
|
||||||
|
});
|
||||||
|
|
||||||
|
var res = JSON.parse(JSON.stringify(results3));
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryInquiryProcJustification(req, filename, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxprocjustification = req.body.idxprocjustification;
|
||||||
|
let filecategory = req.body.filecategory;
|
||||||
|
let numberoffile = req.body.numberoffile;
|
||||||
|
let descriptionfile = req.body.descriptionfile;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry ="select _idx from tbl_procjustificationdoc ";
|
||||||
|
qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' and isdeleted=0 order by _idx desc limit 1";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[], function(err2, results2){
|
||||||
|
if(err2){
|
||||||
|
apires.meta['message'] = err2.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}else{
|
||||||
|
|
||||||
|
qry ="insert into tbl_procjustificationdoc ";
|
||||||
|
qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',";
|
||||||
|
qry = qry + "descriptionfile='"+descriptionfile+"',filename='"+filename+"',iby='"+nik+"',idt=now()";
|
||||||
|
if(results2.length>=1){
|
||||||
|
qry ="update tbl_procjustificationdoc ";
|
||||||
|
qry = qry + "set idxheader='"+idxprocjustification+"',numberoffile='"+numberoffile+"',filecategory='"+filecategory+"',";
|
||||||
|
qry = qry + "descriptionfile='"+descriptionfile+"',filename='"+filename+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where idxheader='"+idxprocjustification+"' and numberoffile='"+numberoffile+"' and filecategory='"+filecategory+"' and isdeleted=0";
|
||||||
|
}
|
||||||
|
console.log(qry);
|
||||||
|
db.query(qry,[],function(err3,results3){
|
||||||
|
if(err3){
|
||||||
|
apires.meta['message'] = err3.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var res = JSON.parse(JSON.stringify(results3));
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
apires.data = res;
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async querySignedProcJustification(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let idxprocjustification = req.body.idxprocjustification;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let idxsigned = req.body.idxsigned;
|
||||||
|
let idemployeesigned = req.body.idemployeesigned;
|
||||||
|
let niksigned = req.body.niksigned;
|
||||||
|
let datesigned = req.body.datesigned;
|
||||||
|
let idxsignedvrf = req.body.idxsignedvrf ?? 0;
|
||||||
|
let idemployeevrf = req.body.idemployeevrf ?? 0;
|
||||||
|
let niksignedvrf = req.body.niksignedvrf ?? 0;
|
||||||
|
let idxsignedapr = req.body.idxsignedapr ?? 0;
|
||||||
|
let idemployeeapr = req.body.idemployeeapr ?? 0;
|
||||||
|
let niksignedapr = req.body.niksignedapr ?? 0;
|
||||||
|
let status = req.body.status;
|
||||||
|
let statusdescription = req.body.statusdescription;//"Verified";
|
||||||
|
var token = this.getToken();
|
||||||
|
var filepng = token+".png";
|
||||||
|
// token =getToken();
|
||||||
|
token = token +","+niksigned;
|
||||||
|
|
||||||
|
// console.log(req.body);
|
||||||
|
let qry = "update tbl_procjustification ";
|
||||||
|
qry = qry +"set status='"+status+"',statusdescription='"+statusdescription+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+idxprocjustification+"'";
|
||||||
|
|
||||||
|
// 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(status==0){
|
||||||
|
var qry = "update tbl_procjustificationttd set idemployee='"+idemployeevrf+"',nik='"+niksignedvrf+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxsignedvrf +"'";
|
||||||
|
db.query(qry,[],function(err,result,fields){});
|
||||||
|
|
||||||
|
var qry = "update tbl_procjustificationttd set idemployee='"+idemployeeapr+"',nik='"+niksignedapr+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxsignedapr +"'";
|
||||||
|
db.query(qry,[],function(err,result,fields){});
|
||||||
|
}
|
||||||
|
QRCode.toDataURL(token, function (err, code) {
|
||||||
|
if(err) {
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var imageBuffer = Adapter.decodeBase64Image(code);
|
||||||
|
fs.writeFile('./assets/pngproc/'+filepng, imageBuffer.data, function(err) {
|
||||||
|
// console.log(err);
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback(err.toString(), apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// var qry = "update tbl_procjustificationttd set token=md5('"+token+"'),imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() ";
|
||||||
|
var qry = "update tbl_procjustificationttd set idemployee='"+idemployeesigned+"',nik='"+niksigned+"',token='"+token+"',imgqr='"+filepng+"',issigned='1',signeddate='"+datesigned+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxsigned +"'";
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
// ===
|
||||||
|
qry = "select status from tbl_procjustification where _idx='"+idxprocjustification+"'";
|
||||||
|
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('err',apires);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var status = result2[0]['status'];
|
||||||
|
var isverified=0;
|
||||||
|
if(status==1){isverified = 1;}
|
||||||
|
apires.data = {
|
||||||
|
"isverified":isverified,
|
||||||
|
"token":token,
|
||||||
|
"urltoken": process.env.BASEURL+"/main/getimageinfo?route=pngproc&name="+filepng
|
||||||
|
};
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryDeleteProcJustification(req, callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_procjustification ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryProcJustificationDetail(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let _idx= req.query.id;
|
||||||
|
|
||||||
|
let qry = "select * from vw_procjustification where id='"+_idx+"'";
|
||||||
|
|
||||||
|
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 dataRows = result.length;
|
||||||
|
if(result.length<=0){
|
||||||
|
apires.meta.message = "Record not found";
|
||||||
|
callback('',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Object.keys(result).forEach(function(key){
|
||||||
|
qry = "select * from vw_procjustificationdoc where idxheader='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result2,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
result[key]['filedoc'] = JSON.parse(JSON.stringify(result2));
|
||||||
|
qry = "select * from vw_procjustificationttd where idxheader='"+_idx+"' order by id asc";
|
||||||
|
// console.log(qry);
|
||||||
|
db.query(qry,[],function(err,result3,fields){
|
||||||
|
if(err){
|
||||||
|
apires.meta['message'] = err.toString();
|
||||||
|
apires.meta['code'] = 500;
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(result3.length>0){
|
||||||
|
var dibuatoleh = [];
|
||||||
|
var diverifikasioleh = [];
|
||||||
|
var disetujuioleh = [];
|
||||||
|
Object.keys(result3).forEach(function(key2){
|
||||||
|
if(result3[key2]['category']=='CRE'){
|
||||||
|
dibuatoleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}
|
||||||
|
else if(result3[key2]['category']=='VRF'){
|
||||||
|
diverifikasioleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}else{
|
||||||
|
disetujuioleh.push(JSON.parse(JSON.stringify(result3[key2])));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
result[key]['ttd'] = {
|
||||||
|
"dibuatoleh" : dibuatoleh,
|
||||||
|
"diverifikasioleh" : diverifikasioleh,
|
||||||
|
"disetujuioleh" : disetujuioleh
|
||||||
|
}
|
||||||
|
// result[key]['ttd'] = JSON.parse(JSON.stringify(result3));
|
||||||
|
}
|
||||||
|
if(0 === --dataRows){
|
||||||
|
let resultJson = JSON.stringify(result);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
apires.success = true;
|
||||||
|
apires.data = resultJson;
|
||||||
|
callback(null,apires);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// if(0 === --dataRows){
|
||||||
|
// let resultJson = JSON.stringify(result);
|
||||||
|
// resultJson = JSON.parse(resultJson);
|
||||||
|
// apires.success = true;
|
||||||
|
// apires.data = resultJson;
|
||||||
|
// callback(null,apires);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async queryProcJustificationList(req,callback){
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
try {
|
||||||
|
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let status = req.body.status;
|
||||||
|
|
||||||
|
|
||||||
|
let swherenik="";
|
||||||
|
if(nik){
|
||||||
|
swherenik="iby='"+nik+"' and ";
|
||||||
|
}
|
||||||
|
|
||||||
|
// let qry = "select * from vw_procjustification ";
|
||||||
|
// qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') ";
|
||||||
|
// qry = qry +"and iby='"+nik+"' and status in("+status+") order by id asc";
|
||||||
|
let qry = "select * from vw_procjustification ";
|
||||||
|
qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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_procjustification ";
|
||||||
|
qry = qry +"where (trim(prnumber) like '%"+ keyword +"%' or trim(justificationnumber) like '%"+ keyword +"%') ";
|
||||||
|
qry = qry +"and "+swherenik+" status in("+status+") order by id 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 queryUpdateStatusProcJustification(req, callback) {
|
||||||
|
try {
|
||||||
|
var apires = this.getApiResultDefined();
|
||||||
|
var idxjustification = req.body.idxjustification;
|
||||||
|
var status = req.body.status;
|
||||||
|
var statusdescription = req.body.statusdescription;
|
||||||
|
var nik = req.body.nik;
|
||||||
|
|
||||||
|
var qry = "update tbl_procjustification set status='" + status +"',statusdescription='" + statusdescription +"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='" + idxjustification +"'";
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = ProcJustificationAdapter;
|
||||||
239
adapter/vendoradapter.js
Normal file
@ -0,0 +1,239 @@
|
|||||||
|
const db=require('../config/dbproc.js');
|
||||||
|
const Adapter=require('./dbadapter.js');
|
||||||
|
|
||||||
|
|
||||||
|
class VendorAdapter extends Adapter{
|
||||||
|
constructor(){
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryVendorList(req,callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let limit = req.body.limit;
|
||||||
|
let offset = req.body.offset;
|
||||||
|
let keyword = req.body.keyword;
|
||||||
|
let status = req.body.status;
|
||||||
|
|
||||||
|
let swhereactivate="";
|
||||||
|
if(status==0||status==1){
|
||||||
|
swhereactivate=" and isactivated='"+status+"'";
|
||||||
|
}
|
||||||
|
let qry = "select * from vw_vendorinfo ";
|
||||||
|
qry = qry +"where (trim(vendorid) like '%"+ keyword +"%' or trim(vendorname) like '%"+ keyword +"%') "+swhereactivate+" order by id 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
|
||||||
|
});
|
||||||
|
qry = "select * from vw_vendorinfo ";
|
||||||
|
qry = qry +"where (trim(vendorid) like '%"+ keyword +"%' or trim(vendorname) like '%"+ keyword +"%') order by id 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 queryVendorDetail(req,callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let id = req.query.id;
|
||||||
|
// console.log(req);
|
||||||
|
let qry = "select * from vw_vendorinfo ";
|
||||||
|
qry = qry +"where id='"+id+"' order by id asc limit 1";
|
||||||
|
|
||||||
|
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 queryDeleteVendor(req, callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let id = req.body.id;
|
||||||
|
let remarkdeleted = req.body.remarkdeleted;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "update tbl_vendorinfo ";
|
||||||
|
qry = qry +"set isdeleted=1,remarkdeleted='"+remarkdeleted+"',dby='"+nik+"',ddt=now()";
|
||||||
|
qry = qry +" where _idx='"+id+"'";
|
||||||
|
|
||||||
|
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.meta.message = "Deleted Success";
|
||||||
|
callback(null, apires);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryNewVendor(req,callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let vendorid = req.body.vendorid;
|
||||||
|
let vendorname = req.body.vendorname;
|
||||||
|
let picname = req.body.picname;
|
||||||
|
let address = req.body.address;
|
||||||
|
let telp = req.body.telp;
|
||||||
|
let location = req.body.location;
|
||||||
|
let bussinessgroup = req.body.bussinessgroup;
|
||||||
|
let isactivated = req.body.isactivated;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
|
||||||
|
let qry = "insert into tbl_vendorinfo ";
|
||||||
|
qry = qry +"set vendorid='"+vendorid+"',vendorname='"+vendorname+"',picname='"+picname+"',telp='"+telp+"',";
|
||||||
|
qry = qry +"address='"+address+"',location='"+location+"',bussinessgroup='"+bussinessgroup+"',isactivated='"+isactivated+"',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
|
||||||
|
{
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async queryUpdateVendor(req,callback){
|
||||||
|
try {
|
||||||
|
let apires = this.getApiResultDefined();
|
||||||
|
let vendorid = req.body.vendorid;
|
||||||
|
let vendorname = req.body.vendorname;
|
||||||
|
let picname = req.body.picname;
|
||||||
|
let address = req.body.address;
|
||||||
|
let telp = req.body.telp;
|
||||||
|
let location = req.body.location;
|
||||||
|
let bussinessgroup = req.body.bussinessgroup;
|
||||||
|
let isactivated = req.body.isactivated;
|
||||||
|
let nik = req.body.nik;
|
||||||
|
let id = req.body.id;
|
||||||
|
|
||||||
|
let qry = "update tbl_vendorinfo ";
|
||||||
|
qry = qry +"set vendorid='"+vendorid+"',vendorname='"+vendorname+"',picname='"+picname+"',telp='"+telp+"',";
|
||||||
|
qry = qry +"address='"+address+"',location='"+location+"',bussinessgroup='"+bussinessgroup+"',isactivated='"+isactivated+"',uby='"+nik+"',udt=now() ";
|
||||||
|
qry = qry +"where _idx='"+id+"'";
|
||||||
|
|
||||||
|
// 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
|
||||||
|
{
|
||||||
|
apires.success = true;
|
||||||
|
apires.meta.message = "Updated Success";
|
||||||
|
callback(null, apires);
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (err) {
|
||||||
|
apires.meta.code = 500;
|
||||||
|
apires.meta.message = err.toString();
|
||||||
|
callback('error',apires);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = VendorAdapter;
|
||||||
81
app.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const bodyparser = require('body-parser');
|
||||||
|
const fs = require('fs');
|
||||||
|
const app = express();
|
||||||
|
const cors = require('cors');
|
||||||
|
const dotenv = require('dotenv');
|
||||||
|
dotenv.config({path: __dirname + '/.env'});
|
||||||
|
const port = process.env.PORT || 9000;
|
||||||
|
|
||||||
|
const Controllers = require('./controllers/controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
|
||||||
|
app.use(bodyparser.urlencoded({ extended: false })); //for x-www-urlencoded <form>
|
||||||
|
|
||||||
|
app.use(express.urlencoded({ limit: '100mb', extended: true, parameterLimit: 50000 })); //===>for application json
|
||||||
|
// app.use(bodyparser.json('application/json'));
|
||||||
|
app.use(bodyparser.json({ limit: '100mb' }));
|
||||||
|
|
||||||
|
app.use(cors());
|
||||||
|
// app.use((req, res, next) => {
|
||||||
|
// // res.setHeader('Access-Allow-Control-Origin','https://cdpn.io'); hiii
|
||||||
|
// res.setHeader('Access-Control-Allow-Origin', '*'); //== Allow all request client
|
||||||
|
// res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE');
|
||||||
|
// res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
||||||
|
// // res.setHeader('Access-Control-Allow-Credentials', true);
|
||||||
|
// next();
|
||||||
|
// });
|
||||||
|
|
||||||
|
app.set('trust proxy', false);
|
||||||
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
||||||
|
|
||||||
|
|
||||||
|
// === DYNAMICALLY INCLUDE ROUTES ( CONTROLLER )
|
||||||
|
fs.readdirSync('./routes').forEach(function (file) {
|
||||||
|
var rf = false;
|
||||||
|
if (file.substr(-3) == '.js') {
|
||||||
|
var fl = (file.substr(0, file.length - 3));
|
||||||
|
var router = require('./routes/' + fl);
|
||||||
|
// console.log('./routes/' + fl);
|
||||||
|
app.use('/' + fl, router);
|
||||||
|
rf = true;
|
||||||
|
}
|
||||||
|
if (!rf) { res.send("File not found."); }
|
||||||
|
});
|
||||||
|
//app.use('/users', userRoutes);
|
||||||
|
|
||||||
|
app.use(function (error, req, res, next) {
|
||||||
|
//console.log(error.statusCode);
|
||||||
|
// res.status(401).send('401: '+error);
|
||||||
|
// if(error.statusCode==401){
|
||||||
|
// }
|
||||||
|
// console.log(error);
|
||||||
|
res.append("responseData","{statusCode : "+error.statusCode+",message : "+error.message+"}");
|
||||||
|
apireshandler.meta.code = error.statusCode;
|
||||||
|
apireshandler.meta.message = error.message;
|
||||||
|
|
||||||
|
res.status(error.statusCode).json(apireshandler);
|
||||||
|
//next();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// // // Handle 404
|
||||||
|
// app.use(function (req, res) {
|
||||||
|
// res.status(404).send('404: Route not Found, please contact your administrator');
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // // Handle 500
|
||||||
|
// app.use(function (error, req, res, next) {
|
||||||
|
// console.log(error);
|
||||||
|
// res.status(200).send('500: Internal Server Error, err : '+error);
|
||||||
|
// });
|
||||||
|
|
||||||
|
// // Handle 502
|
||||||
|
// app.use(function (error, req, res, next) {
|
||||||
|
// res.status(502).send('502: Bad gateway');
|
||||||
|
// });
|
||||||
|
|
||||||
|
app.listen(port,function(){
|
||||||
|
console.log("Starting "+process.env.APPNAME+" running on 8080");
|
||||||
|
});
|
||||||
BIN
assets/bast/basthandoversign_999999_1706086740310.PDF
Normal file
BIN
assets/bast/basthandoversign_999999_1719983170545.pdf
Normal file
BIN
assets/bast/pdf/bast_999999_1719982918934.pdf
Normal file
BIN
assets/images/user.png
Executable file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
assets/justification/justifikasi_00001.docx
Normal file
BIN
assets/justification/justifikasi_00001_1764809633844.docx
Normal file
BIN
assets/justification/justifikasi_00002_1764811346034.docx
Normal file
BIN
assets/justification/justifikasi_24024_1761037105318.docx
Normal file
BIN
assets/justification/justifikasi_24024_1761703684476.docx
Normal file
BIN
assets/justification/justifikasi_93003_1727860830921.docx
Normal file
BIN
assets/justification/justifikasi_93003_1730251674421.docx
Normal file
BIN
assets/justification/justifikasi_93003_1742435649899.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750379348197.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750379909152.docx
Normal file
BIN
assets/justification/justifikasi_93003_1750643632840.docx
Normal file
BIN
assets/justification/justifikasi_999999.docx
Normal file
BIN
assets/justification/justifikasi_999999_1715128605400.docx
Normal file
BIN
assets/justification/justifikasi_999999_1715652628646.docx
Normal file
BIN
assets/justification/justifikasi_999999_1719979817969.docx
Normal file
BIN
assets/justification/justifikasi_999999_1727860642953.docx
Normal file
BIN
assets/justification/justifikasi_999999_1764735829437.docx
Normal file
BIN
assets/justification/justifikasi_999999_1764737315371.docx
Normal file
BIN
assets/justification/merge/justifikasi_00001_1764814771305.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1715128671700.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1715652671617.docx
Normal file
BIN
assets/justification/merge/justifikasi_999999_1719980231559.docx
Normal file
BIN
assets/justification/pdf/justifikasi_00001_1764814771305.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1715128671700.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1715652671617.pdf
Normal file
BIN
assets/justification/pdf/justifikasi_999999_1719980231559.pdf
Normal file
BIN
assets/png/020184.png
Normal file
|
After Width: | Height: | Size: 802 B |
BIN
assets/png/060658.png
Normal file
|
After Width: | Height: | Size: 803 B |
BIN
assets/png/067125.png
Normal file
|
After Width: | Height: | Size: 800 B |
BIN
assets/png/280361.png
Normal file
|
After Width: | Height: | Size: 767 B |
BIN
assets/png/337056.png
Normal file
|
After Width: | Height: | Size: 796 B |
BIN
assets/png/408467.png
Normal file
|
After Width: | Height: | Size: 739 B |
BIN
assets/png/508846.png
Normal file
|
After Width: | Height: | Size: 748 B |
BIN
assets/png/522516.png
Normal file
|
After Width: | Height: | Size: 822 B |
BIN
assets/png/538778.png
Normal file
|
After Width: | Height: | Size: 743 B |
BIN
assets/png/667586pr.png
Normal file
|
After Width: | Height: | Size: 809 B |
BIN
assets/png/776335.png
Normal file
|
After Width: | Height: | Size: 745 B |
BIN
assets/pngproc/670728.png
Normal file
|
After Width: | Height: | Size: 751 B |
BIN
assets/pngproc/753115.png
Normal file
|
After Width: | Height: | Size: 801 B |
BIN
assets/pngproc/776618.png
Normal file
|
After Width: | Height: | Size: 794 B |
BIN
assets/procjustification/justifikasi_999999_1719981065384.docx
Normal file
BIN
assets/procjustification/procjustifikasi_999999.docx
Normal file
BIN
assets/words/JustifikasiSample.docx
Executable file
BIN
assets/words/basttemplate.docx
Executable file
BIN
assets/words/justifikasitemplate.docx
Executable file
15
config/collections/dbkebengkel.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
const mongoose = require('mongoose');
|
||||||
|
// const dburl='mongodb://root:s4lasan2016@150.242.110.114:27017/dbmidtpay?authSource=admin';
|
||||||
|
const dburl='mongodb://root:s4lasan2016@103.84.192.250:27017/dbkebengkel?authSource=admin';
|
||||||
|
|
||||||
|
mongoose.Promise = global.Promise;
|
||||||
|
mongoose.connect(dburl,{ useNewUrlParser: true, useUnifiedTopology: true },function(err) {
|
||||||
|
if (err) {
|
||||||
|
console.error('Error connecting: ' + err.stack);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log('Collection established');
|
||||||
|
//db.close();
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = mongoose;
|
||||||
20
config/dbproc.js
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// console.log(libinit.gethost);
|
||||||
|
const mysql = require('mysql');
|
||||||
|
const dbcon = mysql.createConnection({
|
||||||
|
host : process.env.HOSTDB,
|
||||||
|
user : process.env.USERDB,
|
||||||
|
password : "ssotcel#20i7",
|
||||||
|
database : process.env.DBHOST,
|
||||||
|
acquireTimeout: 30000,
|
||||||
|
insecureAuth: true,
|
||||||
|
timezone: 'utc'
|
||||||
|
});
|
||||||
|
|
||||||
|
dbcon.connect(function(err) {
|
||||||
|
if (err) {
|
||||||
|
console.error('Error connecting: '+process.env.PASSDB+' ' + err.stack);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log('WS Ver 1.0.0 Proc connected');
|
||||||
|
});
|
||||||
|
module.exports = dbcon;
|
||||||
226
controllers/bast.js
Normal file
@ -0,0 +1,226 @@
|
|||||||
|
const BastAdapter=require('../adapter/bastadapter.js');
|
||||||
|
const bastadapter = new BastAdapter();
|
||||||
|
const Controllers = require('./controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api";
|
||||||
|
const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a";
|
||||||
|
const request = require('request');
|
||||||
|
|
||||||
|
exports.getBastActivityList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
bastadapter.queryBastActivityList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBastHandoverList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
bastadapter.queryBastHandoverList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBastActivityListDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
bastadapter.queryBastActivityListDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [35] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.createBastold = ( req, res, next ) => {
|
||||||
|
try{
|
||||||
|
let filedoctemplate='';
|
||||||
|
if(req.body.filename === undefined){
|
||||||
|
filedoctemplate="";//req.file.originalname;
|
||||||
|
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// filedoctemplate=req.file.originalname;
|
||||||
|
let ext=req.body.filename.split(".")[1];
|
||||||
|
let filename = 'BAST_'+req.nik+'_' + Date.now() + "."+ ext;
|
||||||
|
filedoctemplate=req.body.filename;
|
||||||
|
fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) {
|
||||||
|
if ( err ) {
|
||||||
|
bastadapter.sendResponse(500,err, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [182] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.createBast = ( req, res, next ) => {
|
||||||
|
try{
|
||||||
|
let filedoctemplate='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
filedoctemplate="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// filedoctemplate=req.file.originalname;
|
||||||
|
filedoctemplate=req.body.filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [182] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.uploadHandOverSign = ( req, res, next ) => {
|
||||||
|
try{
|
||||||
|
let filehandoversign='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
filehandoversign="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// filedoctemplate=req.file.originalname;
|
||||||
|
filehandoversign=req.body.filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
bastadapter.queryUploadHandoverSign(filehandoversign, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [138] : bast controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBastList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
bastadapter.queryBastList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [74] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBastDetailList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
bastadapter.queryBastDetailList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [74] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setUpdateHandOverold = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let ext=req.body.filename.split(".")[1];
|
||||||
|
let filename = 'basthandover_'+req.nik+'_' + Date.now() + "."+ ext;
|
||||||
|
filedoctemplate=req.body.filename;
|
||||||
|
fs.rename(process.env.BASEPATH+'/assets/bast/'+req.body.filename, process.env.BASEPATH+'/assets/bast/'+filename, function(err) {
|
||||||
|
if ( err ) {
|
||||||
|
bastadapter.sendResponse(500,err, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
bastadapter.queryCreateBAST(filedoctemplate, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
bastadapter.queryUpdateHandover(req, filename, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [112] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setUpdateHandOver = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let filename='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
filename="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
filename=req.body.filename;//req.file.originalname;
|
||||||
|
}
|
||||||
|
|
||||||
|
bastadapter.queryUpdateHandover(req, filename, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
bastadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [112] : Bast controller, " + err.toString();
|
||||||
|
bastadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
199
controllers/budget.js
Normal file
@ -0,0 +1,199 @@
|
|||||||
|
|
||||||
|
const BudgetAdapter=require('../adapter/budgetadapter.js');
|
||||||
|
const budgetadapter = new BudgetAdapter();
|
||||||
|
|
||||||
|
exports.getListBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryBudgetList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [16] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBudgetType = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryBudgetType(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [31] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBudgetDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryBudgetDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [46] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryDeleteBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [46] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setNewBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryNewBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [76] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.updateBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryUpdateBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [90] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ==== Request budget
|
||||||
|
exports.getListReqBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryReqBudgetList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [16] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getReqBudgetDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryReqBudgetDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [120] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setReqBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryReqBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [105] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getTrxIdReqBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryGetTrxIdReqBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [120] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateReqBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryUpdateReqBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [135] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteReqBudget = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryDeleteReqBudget(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [150] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getBudgetListByRequest = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
budgetadapter.queryBudgetListbyRequest(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
budgetadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [16] : Budget controller, " + err.toString();
|
||||||
|
budgetadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
110
controllers/coa.js
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
|
||||||
|
const CoaAdapter=require('../adapter/coaadapter.js');
|
||||||
|
const coaAdapter = new CoaAdapter();
|
||||||
|
|
||||||
|
exports.getListCoa = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryCoaList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [15] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getCoaDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryCoaDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [30] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteCoa = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryDeleteCoa(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [45] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setNewCoa = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryNewCoa(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.updateCoa = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryUpdateCoa(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [74] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getCostCenter = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryGetCostCenter(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [74] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getProfitCenter = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
coaAdapter.queryGetProfitCenter(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
coaAdapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [74] : COA controller, " + err.toString();
|
||||||
|
coaAdapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
195
controllers/controller.js
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
const nodemailer = require('nodemailer');
|
||||||
|
const request = require('request');
|
||||||
|
var baseurlsms="https://mw.telkomcel.tl/tcel/v1/portal/sms/";
|
||||||
|
|
||||||
|
class Controller{
|
||||||
|
constructor(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
getApiResultDefined(){
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
meta :{
|
||||||
|
code: 200,
|
||||||
|
message: "",
|
||||||
|
|
||||||
|
},
|
||||||
|
// meta:{
|
||||||
|
// table: objectname,
|
||||||
|
// type: typeobject,
|
||||||
|
// total: 0
|
||||||
|
// },
|
||||||
|
data:[]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
getPagination(datalength, limit){
|
||||||
|
let pagination = datalength / limit;
|
||||||
|
if(!Number.isInteger(pagination)){
|
||||||
|
pagination=(Math.floor(datalength / limit))+1;
|
||||||
|
}
|
||||||
|
return pagination;
|
||||||
|
}
|
||||||
|
|
||||||
|
getErrorDefined(errcode, msg){
|
||||||
|
if(errcode=='404'){
|
||||||
|
return {
|
||||||
|
code : 404,
|
||||||
|
message : msg!='' ? msg : "Record Not Found"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static getResultJson(results){
|
||||||
|
let resultJson = JSON.stringify(results);
|
||||||
|
resultJson = JSON.parse(resultJson);
|
||||||
|
return resultJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
sendResponse(statusCode, data, res){
|
||||||
|
// res.append("responseData", JSON.stringify(data));
|
||||||
|
// res.status(statusCode).json(data);
|
||||||
|
res.status(statusCode).json(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
static decodeBase64Image(dataString) {
|
||||||
|
var matches = dataString.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/),
|
||||||
|
response = {};
|
||||||
|
|
||||||
|
if (matches.length !== 3) {
|
||||||
|
return new Error('Invalid input string');
|
||||||
|
}
|
||||||
|
|
||||||
|
response.type = matches[1];
|
||||||
|
response.data = new Buffer.from(matches[2], 'base64');
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
getToken(){
|
||||||
|
try {
|
||||||
|
var n1=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n2=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n3=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n4=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n5=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var n6=Math.floor(Math.random() * 9) + 0;
|
||||||
|
var otp=n1.toString()+n2.toString()+n3.toString()+n4.toString()+n5.toString()+n6.toString();
|
||||||
|
// console.log(otp);
|
||||||
|
return otp;
|
||||||
|
} catch (error) {
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static sentMail(emailto,subject,msg,callback){
|
||||||
|
console.log(process.env.EMAIL_KEY);
|
||||||
|
var transporter = nodemailer.createTransport({
|
||||||
|
service: 'gmail',
|
||||||
|
auth: {
|
||||||
|
user: 'mitrasejatipangan2021@gmail.com',
|
||||||
|
pass: process.env.EMAIL_KEY
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var mailOptions = {
|
||||||
|
from: 'MSP <mitrasejatipangan2021@gmail.com>',
|
||||||
|
to: emailto,
|
||||||
|
subject: subject,
|
||||||
|
text: msg
|
||||||
|
};
|
||||||
|
|
||||||
|
transporter.sendMail(mailOptions, function(error, info){
|
||||||
|
console.log(error);
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
callback(error,null);
|
||||||
|
} else {
|
||||||
|
callback(null,info);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
static sendSMS(header,msisdn,msg,callback){
|
||||||
|
try {
|
||||||
|
var msisdnnew = msisdn.length==8 ? '670'+msisdn : msisdn;
|
||||||
|
let resuri={
|
||||||
|
'method': 'GET',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsms+'?msisdn='+msisdnnew+'&content='+msg+'&header='+header,
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
// console.log(resuri);
|
||||||
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
// console.log(error);
|
||||||
|
callback(error,null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// console.log(response);
|
||||||
|
callback(null,response);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
callback(error,null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static sendSMSold(header,msisdn,msg,callback)
|
||||||
|
{
|
||||||
|
|
||||||
|
request.post(
|
||||||
|
'http://150.242.111.251:81/tlstream/index/api',
|
||||||
|
{
|
||||||
|
json: {
|
||||||
|
views:'vwsentsms',
|
||||||
|
task:'sentmessage',
|
||||||
|
header: header,
|
||||||
|
msisdn: msisdn,
|
||||||
|
msg : msg
|
||||||
|
}
|
||||||
|
},
|
||||||
|
(error, res, body) => {
|
||||||
|
if (error) {
|
||||||
|
console.error(error)
|
||||||
|
callback(null,error);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// console.log(`statusCode: ${res.statusCode}`)
|
||||||
|
// console.log(body);
|
||||||
|
callback(null,body);
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
static getYmD(){
|
||||||
|
var dates= new Date();
|
||||||
|
var today=dates.getFullYear()+"-"+dates.getMonth()+"-"+dates.getDate()+" "+dates.getHours()+":"+dates.getMinutes()+":"+dates.getSeconds();
|
||||||
|
//console.log(today);
|
||||||
|
return today;
|
||||||
|
}
|
||||||
|
|
||||||
|
static getmonth(){
|
||||||
|
var dates= new Date();
|
||||||
|
//console.log(dates.getMonth());
|
||||||
|
return dates.getMonth()+1;
|
||||||
|
}
|
||||||
|
static getyears(){
|
||||||
|
var dates= new Date();
|
||||||
|
return dates.getFullYear();
|
||||||
|
}
|
||||||
|
static getday(){
|
||||||
|
var dates= new Date();
|
||||||
|
return dates.getDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = Controller;
|
||||||
98
controllers/employee.js
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
|
||||||
|
const EmployeeAdapter=require('../adapter/employeeadapter.js');
|
||||||
|
const employeeadapter = new EmployeeAdapter();
|
||||||
|
const Controllers = require('../controllers/controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
|
||||||
|
exports.getEmployeeAuth = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryEmployeeAuth(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [17] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getEmployeeWithoutAuth = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryEmployeeWithoutAuth(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [17] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getEmployeeMenus = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryEmployeeMenus(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [33] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getEmployeeMenusAccessibility = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryEmployeeAccessibility(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [48] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setEmployeeMenusAccessibility = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryEmployeeSetMenuAccessibility(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [63] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListEmployee = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
employeeadapter.queryListEmployee(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
employeeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [63] : Employee controller, " + err.toString();
|
||||||
|
employeeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
149
controllers/finance.js
Normal file
@ -0,0 +1,149 @@
|
|||||||
|
const FinanceAdapter=require('../adapter/financeadapter.js');
|
||||||
|
const financeadapter = new FinanceAdapter();
|
||||||
|
const Controllers = require('./controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
|
||||||
|
exports.getPoPayList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryPoPayList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getPoPayListDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryPoPayListDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [32] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getPayCheckList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryPayChecklist(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [47] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.submitPayPo = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
// console.log(req);
|
||||||
|
financeadapter.querySubmitPayPo(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [62] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getFinanceList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryFinanceList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getFinanceListDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryFinanceListDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getFinanceDetailUpload = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryFinanceDetailUpload(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [20] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.UploadDocFin = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let filename='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
filename="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
filename=req.body.filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
financeadapter.queryUploadDocFin(req, filename, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [112] : Finance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getCurrencyList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
financeadapter.queryCurrencyList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
financeadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [146] : FInance controller, " + err.toString();
|
||||||
|
financeadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
93
controllers/inventory.js
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
|
||||||
|
const InventoryAdapter=require('../adapter/inventoryadapter.js');
|
||||||
|
const inventoryadapter = new InventoryAdapter();
|
||||||
|
|
||||||
|
exports.newInventory = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryNewInventory(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [15] : Inventory controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updInventory = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryUpdInventory(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [30] : Budget controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.delInventory = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryDelInventory(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [46] : Budget controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListInventory = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryInventoryList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : Budget controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getHeaderListPO = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryInventoryHeaderList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : Budget controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getDetailListPO = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
inventoryadapter.queryInventoryDetailList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
inventoryadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : Budget controller, " + err.toString();
|
||||||
|
inventoryadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
277
controllers/justification.js
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
|
||||||
|
const JustificationAdapter=require('../adapter/justificationadapter.js');
|
||||||
|
const justificationadapter = new JustificationAdapter();
|
||||||
|
const Controllers = require('../controllers/controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
// var docxConverter = require('docx-pdf');
|
||||||
|
|
||||||
|
exports.getListBudgetRequest = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryJustificationBudgetRequestList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [30] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.newJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
console.log('new file justification');
|
||||||
|
// let filename=req.file.originalname;
|
||||||
|
let filename=req.body.filename;
|
||||||
|
justificationadapter.queryNewJustification(filename, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [34] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let filename='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
filename="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// filename=req.file.originalname;
|
||||||
|
filename=req.body.filename;
|
||||||
|
}
|
||||||
|
// console.log('filename '+filename);
|
||||||
|
justificationadapter.queryUpdateJustification(filename, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [57] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateStatusJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryUpdateStatusJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListCreatedBy = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryListCreatedBy(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [45] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListCheckedBy = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryListCheckedBy(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [60] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListApprovedBy = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryListApprovedBy(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [75] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryDeleteJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [90] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.detailJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryJustificationDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
console.log(data);
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [120] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryJustificationList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [167] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setSignedJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let filename='';
|
||||||
|
if(req.file === undefined){
|
||||||
|
|
||||||
|
filename="";//req.file.originalname;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
// filename=req.file.originalname;
|
||||||
|
filename=req.body.filename;
|
||||||
|
}
|
||||||
|
|
||||||
|
justificationadapter.querySignedJustification(filename, req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [182] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.convertDocxToPdf = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
justificationadapter.queryConvertdocxtoPdf(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [204] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.mergedocx = ( req, res ) => {
|
||||||
|
try {
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': 'http://172.17.12.82:8083/PoiWord/authentification/sync.sh',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-username' : 'proc',
|
||||||
|
'x-password' : 'pr0c2022#tc3l'
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.log(response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
apireshandler.success = true;
|
||||||
|
apireshandler.meta.code = statusCode;
|
||||||
|
apireshandler.data = resdata;
|
||||||
|
justificationadapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.convertDocxToPdfold = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
docxConverter("./assets/words/justifikasitemplate.docx","./assets/pdf/justifikasitemplate.pdf",function(err,result){
|
||||||
|
var statusCode =200;
|
||||||
|
if(err){
|
||||||
|
console.log(err);
|
||||||
|
statusCode = 500;
|
||||||
|
}
|
||||||
|
// let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
// if(err) statusCode = 500;
|
||||||
|
console.log('result'+result);
|
||||||
|
justificationadapter.sendResponse(statusCode,{}, res);
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// justificationadapter.querySignedJustification(filename, req,function(err,data){
|
||||||
|
// let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
// if(err) statusCode = 500;
|
||||||
|
// justificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [204] : Justification controller, " + err.toString();
|
||||||
|
justificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
250
controllers/main.js
Normal file
@ -0,0 +1,250 @@
|
|||||||
|
// const dbadapter=require('../adapter/agentadapter.js');
|
||||||
|
//const ProductAdapter = require('../adapter/productadapter.js');
|
||||||
|
//const productadapter = new ProductAdapter();
|
||||||
|
const MainAdapter=require('../adapter/mainadapter.js');
|
||||||
|
const mainadapter = new MainAdapter();
|
||||||
|
const Controllers = require('../controllers/controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
var baseurlsms="https://mw.telkomcel.tl/tcel/v1/portal/sms/";
|
||||||
|
|
||||||
|
exports.getappInfo = (req, res) => {
|
||||||
|
try {
|
||||||
|
// console.log("fdfd");
|
||||||
|
// var apiResult = {};
|
||||||
|
let appinfo = {
|
||||||
|
"appver" : "1.0.0",
|
||||||
|
"appname" : "eProc",
|
||||||
|
"appdescription" : "eProc",
|
||||||
|
"appurlandroid" : "",
|
||||||
|
"appurlios" : ""
|
||||||
|
};
|
||||||
|
// apiResult.success=true;
|
||||||
|
// apiResult.meta = {
|
||||||
|
|
||||||
|
// }
|
||||||
|
// apiResult.message="";
|
||||||
|
// apiResult.data = appinfo;
|
||||||
|
// console.log(apiResult);
|
||||||
|
apireshandler.success = true;
|
||||||
|
apireshandler.message = "";
|
||||||
|
apireshandler.data = appinfo;
|
||||||
|
mainadapter.sendResponse(200,apireshandler, res);
|
||||||
|
//res.status(200).json(apiResult);
|
||||||
|
} catch (err) {
|
||||||
|
apireshandler.message = err.toString();
|
||||||
|
apireshandler.errline = "[35] : main controller";
|
||||||
|
mainadapter.sendResponse(502, apireshandler, res);
|
||||||
|
// res.status(502).json({
|
||||||
|
// error: error,
|
||||||
|
// message: "502 : Bad Gateway"
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.getTokenauth = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
mainadapter.queryGetToken(req,function(err,data){
|
||||||
|
// console.log("logs "+data);
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
mainadapter.sendResponse(statusCode,data,res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.message = err.toString();
|
||||||
|
apireshandler.errline = "[20] : Main controller";
|
||||||
|
mainadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.sendOTPClient = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
mainadapter.querySendOTPClient(req,function(err,data){
|
||||||
|
let statusCode = 200;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
|
||||||
|
console.log(data);
|
||||||
|
let resuri={
|
||||||
|
'method': 'GET',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsms+'?msisdn='+data[0]['hpnumber']+'&content='+data['message']+'&header=TELIN.TL',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
apires.message = error.toString();
|
||||||
|
apires.errline = "[79] : main controller";
|
||||||
|
mainadapter.sendResponse(502,apires, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mainadapter.sendResponse(statusCode,data, res);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.message = err.toString();
|
||||||
|
apireshandler.errline = "[93] : Main controller";
|
||||||
|
mainadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getHomeEmployeeInfo = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
//console.log("here");
|
||||||
|
mainadapter.queryGetHomeEmployeeInfo(req,function(err,data){
|
||||||
|
let statusCode = 200;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
// console.log(data);
|
||||||
|
mainadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.message = err.toString();
|
||||||
|
apireshandler.errline = "[84] : Main controller";
|
||||||
|
mainadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getEmployeeOfficeInfo = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
mainadapter.queryGetEmployeeOfficeInfo(req,function(err,data){
|
||||||
|
let statusCode = 200;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
mainadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.message = err.toString();
|
||||||
|
apireshandler.errline = "[100] : Main controller";
|
||||||
|
mainadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getimageinfo = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
// if(routepath&®ionname){
|
||||||
|
// filename = routepath+'/'+filename;
|
||||||
|
// }
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
// console.log(filepath);
|
||||||
|
// res.sendFile(filepath);
|
||||||
|
res.download(filepath, filename);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.filejustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
|
||||||
|
// console.log(routepath);
|
||||||
|
let sproute = routepath.split(":");
|
||||||
|
if(sproute.length>1){
|
||||||
|
routepath=sproute[0]+"/"+sproute[1];
|
||||||
|
}
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
// console.log(filepath);
|
||||||
|
// res.sendFile(filepath);
|
||||||
|
res.download(filepath, filename);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getfilejustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
// console.log(filepath);
|
||||||
|
res.sendFile(filepath);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getjustifikasitemplate = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
// if(routepath&®ionname){
|
||||||
|
// filename = routepath+'/'+filename;
|
||||||
|
// }
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
// console.log(filepath);
|
||||||
|
res.sendFile(filepath);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getbasttemplate = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
res.sendFile(filepath);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getbastfile = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let routepath = req.query.route;
|
||||||
|
let filename = req.query.name;
|
||||||
|
let sproute = routepath.split(":");
|
||||||
|
if(sproute.length>1){
|
||||||
|
routepath=sproute[0]+"/"+sproute[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
let filepath = process.env.BASEPATH +'/assets/'+routepath+'/'+filename;
|
||||||
|
res.sendFile(filepath);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
res.status(502).json({
|
||||||
|
error: "502" ,
|
||||||
|
message: err
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
1099
controllers/po.js
Normal file
653
controllers/pr.js
Normal file
@ -0,0 +1,653 @@
|
|||||||
|
|
||||||
|
const PrAdapter=require('../adapter/pradapter.js');
|
||||||
|
const pradapter = new PrAdapter();
|
||||||
|
const Controllers = require('./controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api";
|
||||||
|
const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a";
|
||||||
|
const request = require('request');
|
||||||
|
|
||||||
|
exports.getListJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrJustificationList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListPR = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrPRList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.gettrxid = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryGetTrxIdPr(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [18] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getListPr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setNewPr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryNewPr(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getDetailPr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [93] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setUpdatePr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryUpdatePr(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [167] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setUpdateStatusPr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let status = req.body.status;
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
|
||||||
|
|
||||||
|
if(status==0){
|
||||||
|
// if(0==1){
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryUpdateStatusPr(req, req.body.prnumber, '', function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [123] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setUpdateStatusProld = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let status = req.body.status;
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
|
||||||
|
|
||||||
|
if(status==0){
|
||||||
|
// if(0==1){
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryPrDetail(req, function (err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err){
|
||||||
|
statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}else{
|
||||||
|
var rsdata = JSON.parse(JSON.stringify(data));
|
||||||
|
// console.log(rsdata["data"]);
|
||||||
|
let pr_type="PRTL";
|
||||||
|
let x_pr_type="X";
|
||||||
|
let pr_no = "00010";
|
||||||
|
let pr_qtyacc ="01";
|
||||||
|
let pr_date = rsdata.data[0]['prdateYmd']; //Ymd
|
||||||
|
let pr_budget = "00"+rsdata.data[0]['glaccount'];
|
||||||
|
let pr_costcenter = rsdata.data[0]['costcenter'];
|
||||||
|
let pr_profitcenter = "TIL1A01";//rsdata.data[0]['profitcenter'];
|
||||||
|
let pr_shorttext =rsdata.data[0]['description'];
|
||||||
|
let pr_qtyitem =rsdata.data[0]['qty'];
|
||||||
|
let pr_unititem =rsdata.data[0]['unit'];
|
||||||
|
let pr_priceitem =rsdata.data[0]['netprice'];
|
||||||
|
// let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||";
|
||||||
|
let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||";
|
||||||
|
// let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
|
||||||
|
let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsap+'/createPr?pr_type='+pr_type+'&x_pr_type=X&praccount[]='+pr_account+'&pritem[]='+pr_item,
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-api-key' : apikeysap
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// console.log(response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
var errcode = "";
|
||||||
|
var errmsg ="";
|
||||||
|
resdata['RETURN'].forEach(e => {
|
||||||
|
if(e.TYPE=='E'){
|
||||||
|
errcode+=e.NUMBER+", ";
|
||||||
|
errmsg+=e.MESSAGE+" & ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
errcode = errcode.substring(0, errcode.length-2);
|
||||||
|
errmsg = errmsg.substring(0, errmsg.length-3);
|
||||||
|
if(errcode.length>0){
|
||||||
|
apireshandler.meta.code = errcode;
|
||||||
|
apireshandler.meta.message = errmsg;
|
||||||
|
pradapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
pradapter.queryUpdateStatusPr(req,resdata['NUMBER'], errmsg, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
// apireshandler.success = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
pradapter.queryUpdateStatusPr(req,'00000','',function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [123] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deletePR = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryDeletePr(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [138] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.approvedPR = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryApprovedPR(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [153] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getprmanagementlist = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrManagementList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [260] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.getprmanagementlistdetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryPrManagementListDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [275] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.releasePRSAP = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryPrDetail(req, function (err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err){
|
||||||
|
statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}else{
|
||||||
|
var rsdata = JSON.parse(JSON.stringify(data));
|
||||||
|
let prnumber = rsdata.data[0]['prnumber']; //Ymd
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsap+'/releasePr?number='+prnumber+'&rel_code=A1',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-api-key' : apikeysap
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
// console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.log(response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
var errcode = "";
|
||||||
|
var errmsg ="";
|
||||||
|
resdata['RETURN'].forEach(e => {
|
||||||
|
if(e.TYPE=='E'){
|
||||||
|
errcode+=e.NUMBER+", ";
|
||||||
|
errmsg+=e.MESSAGE+" & ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
errcode = errcode.substring(0, errcode.length-2);
|
||||||
|
errmsg = errmsg.substring(0, errmsg.length-3);
|
||||||
|
if(errcode.length>0){
|
||||||
|
apireshandler.meta.code = errcode;
|
||||||
|
apireshandler.meta.message = errmsg;
|
||||||
|
// pradapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apireshandler.success = true;
|
||||||
|
}
|
||||||
|
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
//data.data = resdata;
|
||||||
|
apireshandler.meta.code = statusCode;
|
||||||
|
apireshandler.data = data.data;
|
||||||
|
pradapter.sendResponse(statusCode, apireshandler, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [348] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.unreleasePRSAP = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryPrDetail(req, function (err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err){
|
||||||
|
statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}else{
|
||||||
|
var rsdata = JSON.parse(JSON.stringify(data));
|
||||||
|
let prnumber = rsdata.data[0]['prnumber']; //Ymd
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsap+'/unreleasePr?number='+prnumber+'&rel_code=A1',
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-api-key' : apikeysap
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
// console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
console.log(response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
var errcode = "";
|
||||||
|
var errmsg ="";
|
||||||
|
resdata['RETURN'].forEach(e => {
|
||||||
|
if(e.TYPE=='E'){
|
||||||
|
errcode+=e.NUMBER+", ";
|
||||||
|
errmsg+=e.MESSAGE+" & ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
errcode = errcode.substring(0, errcode.length-2);
|
||||||
|
errmsg = errmsg.substring(0, errmsg.length-3);
|
||||||
|
if(errcode.length>0){
|
||||||
|
apireshandler.meta.code = errcode;
|
||||||
|
apireshandler.meta.message = errmsg;
|
||||||
|
// pradapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apireshandler.success = true;
|
||||||
|
}
|
||||||
|
// else{
|
||||||
|
// pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){
|
||||||
|
// let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
// if(err) statusCode = 500;
|
||||||
|
// pradapter.sendResponse(statusCode,data, res);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
//data.data = resdata;
|
||||||
|
apireshandler.meta.code = statusCode;
|
||||||
|
apireshandler.data = data.data;
|
||||||
|
pradapter.sendResponse(statusCode, apireshandler, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [413] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.changePRSAP = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
pradapter.queryUpdateStatusPr(req,'','', function(err,data){
|
||||||
|
console.log(data);
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.changePRSAPold = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryPrDetail(req, function (err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err){
|
||||||
|
statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}else{
|
||||||
|
var rsdata = JSON.parse(JSON.stringify(data));
|
||||||
|
// console.log(rsdata["data"]);
|
||||||
|
let pr_no = "00010";
|
||||||
|
let pr_qtyacc ="01";
|
||||||
|
let pr_number = rsdata.data[0]['prnumber']; //Ymd
|
||||||
|
let pr_date = rsdata.data[0]['prdateYmd']; //Ymd
|
||||||
|
let pr_budget = "00"+rsdata.data[0]['glaccount'];
|
||||||
|
let pr_costcenter = rsdata.data[0]['costcenter'];
|
||||||
|
let pr_profitcenter = "TIL1A01";//rsdata.data[0]['profitcenter'];
|
||||||
|
let pr_shorttext =rsdata.data[0]['description'];
|
||||||
|
let pr_qtyitem =rsdata.data[0]['qty'];
|
||||||
|
let pr_unititem =rsdata.data[0]['unit'];
|
||||||
|
let pr_priceitem =rsdata.data[0]['netprice'];
|
||||||
|
// let pr_account="00010|01||20130727||||0051331006|TIL1|TIL1A01|||||||||||TIL1A01||||||||||||||||||||||";
|
||||||
|
let pr_account= pr_no+"|"+pr_qtyacc+"||"+pr_date+"||||"+pr_budget+"|TIL1|"+pr_costcenter+"|||||||||||"+pr_profitcenter+"||||||||||||||||||||||";
|
||||||
|
// let pr_item="00010|||120|Putra|testcreatePR|||||||||1603||TrackNo1|ZSRV||1|BH||20130727||20130727|||1000|1||J||||||||1603|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||D|";
|
||||||
|
let pr_item=pr_no+"|||120|Putra|"+pr_shorttext+"|||||||||1603||TrackNo1|ZSRV||"+pr_qtyitem+"|"+pr_unititem+"||"+pr_date+"||"+pr_date+"|||"+pr_priceitem+"|1||J||||||||1603||||||||||||||||||||||||||||||||||||||||USD|||||||||||||||||||D|";
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsap+'/changePR?number='+pr_number+'&praccount[]='+pr_account+'&pritem[]='+pr_item,
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-api-key' : apikeysap
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// console.log("Change pR : "+response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
var errcode = "";
|
||||||
|
var errmsg ="";
|
||||||
|
resdata['RETURN'].forEach(e => {
|
||||||
|
// console.log(e);
|
||||||
|
if(e.TYPE=='E'){
|
||||||
|
errcode+=e.NUMBER+", ";
|
||||||
|
errmsg+=e.MESSAGE+" & ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
errcode = errcode.substring(0, errcode.length-2);
|
||||||
|
errmsg = errmsg.substring(0, errmsg.length-3);
|
||||||
|
if(errcode.length>0){
|
||||||
|
apireshandler.meta.code = errcode;
|
||||||
|
apireshandler.meta.message = errmsg;
|
||||||
|
// pradapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apireshandler.success = true;
|
||||||
|
}
|
||||||
|
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
//data.data = resdata;
|
||||||
|
apireshandler.meta.code = statusCode;
|
||||||
|
apireshandler.data = data.data;
|
||||||
|
pradapter.sendResponse(statusCode, apireshandler, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [522] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deletePRSAP = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
let idxpr = req.body.idxpr;
|
||||||
|
req.query.id = idxpr;
|
||||||
|
pradapter.queryPrDetail(req, function (err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err){
|
||||||
|
statusCode = 500;
|
||||||
|
pradapter.sendResponse(statusCode,data, res);
|
||||||
|
}else{
|
||||||
|
var rsdata = JSON.parse(JSON.stringify(data));
|
||||||
|
let prnumber = rsdata.data[0]['prnumber']; //Ymd
|
||||||
|
let resuri={
|
||||||
|
'method': 'POST',
|
||||||
|
// 'url': baseurl+'signon',
|
||||||
|
'url': baseurlsap+'/deletePr?number='+prnumber,
|
||||||
|
'headers': {
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
'x-api-key' : apikeysap
|
||||||
|
},
|
||||||
|
// form: formjson,
|
||||||
|
};
|
||||||
|
|
||||||
|
// console.log(resuri);
|
||||||
|
request(resuri, function (error, response) {
|
||||||
|
if (error) {
|
||||||
|
// console.log(error);
|
||||||
|
apireshandler.message = error.toString();
|
||||||
|
pradapter.sendResponse(400, apireshandler, res);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// console.log(response.body);
|
||||||
|
var resdata = JSON.parse(response.body);
|
||||||
|
var errcode = "";
|
||||||
|
var errmsg ="";
|
||||||
|
resdata['RETURN'].forEach(e => {
|
||||||
|
if(e.TYPE=='E'){
|
||||||
|
errcode+=e.NUMBER+", ";
|
||||||
|
errmsg+=e.MESSAGE+" & ";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
errcode = errcode.substring(0, errcode.length-2);
|
||||||
|
errmsg = errmsg.substring(0, errmsg.length-3);
|
||||||
|
if(errcode.length>0){
|
||||||
|
apireshandler.meta.code = errcode;
|
||||||
|
apireshandler.meta.message = errmsg;
|
||||||
|
// pradapter.sendResponse(200, apireshandler, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
apireshandler.success = true;
|
||||||
|
}
|
||||||
|
// else{
|
||||||
|
// pradapter.queryUpdateStatusPr(req,prnumber, errmsg, function(err,data){
|
||||||
|
// let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
// if(err) statusCode = 500;
|
||||||
|
// pradapter.sendResponse(statusCode,data, res);
|
||||||
|
// });
|
||||||
|
// }
|
||||||
|
pradapter.queryUpdateStatusPr(req,'',errmsg, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
//data.data = resdata;
|
||||||
|
apireshandler.meta.code = statusCode;
|
||||||
|
apireshandler.data = data.data;
|
||||||
|
pradapter.sendResponse(statusCode, apireshandler, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [413] : PR controller, " + err.toString();
|
||||||
|
pradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
174
controllers/procjustification.js
Normal file
@ -0,0 +1,174 @@
|
|||||||
|
|
||||||
|
const ProcJustificationAdapter=require('../adapter/procjustificationadapter.js');
|
||||||
|
const procjustificationadapter = new ProcJustificationAdapter();
|
||||||
|
const Controllers = require('./controller.js');
|
||||||
|
const controllers = new Controllers();
|
||||||
|
var apireshandler = controllers.getApiResultDefined();
|
||||||
|
const baseurlsap="http://"+process.env.HOSTSAP+"/sapapi/index.php/api";
|
||||||
|
const apikeysap = "befea63a-7c47-4323-afea-968a3168fe0a";
|
||||||
|
const request = require('request');
|
||||||
|
var fs = require('fs');
|
||||||
|
|
||||||
|
exports.getListPr = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
procjustificationadapter.queryPrList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [21] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setNewProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.queryNewProcJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [21] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let ext=req.body.filename.split(".")[1];
|
||||||
|
let filename = req.body.filecategory+'_'+req.nik+'_' + Date.now() + "."+ ext;
|
||||||
|
fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) {
|
||||||
|
if ( err ) {
|
||||||
|
procjustificationadapter.sendResponse(500,err, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
procjustificationadapter.queryUpdateProcJustification(req, filename, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [66] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.InquiryProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
let ext=req.body.filename.split(".")[1];
|
||||||
|
let filename = req.body.filecategory+'_'+req.nik+'_' + Date.now() + "."+ ext;
|
||||||
|
fs.rename(process.env.BASEPATH+'/assets/procjustification/'+req.body.filename, process.env.BASEPATH+'/assets/procjustification/'+filename, function(err) {
|
||||||
|
if ( err ) {
|
||||||
|
procjustificationadapter.sendResponse(statusCode,err, res);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
procjustificationadapter.queryInquiryProcJustification(req, filename, function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [66] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.queryDeleteProcJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.SignedProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.querySignedProcJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [96] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.detailProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.queryProcJustificationDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.procJustificationList = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.queryProcJustificationList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.updateStatusProcJustification = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
|
||||||
|
procjustificationadapter.queryUpdateStatusProcJustification(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
procjustificationadapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [82] : ProcJustification controller, " + err.toString();
|
||||||
|
procjustificationadapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
81
controllers/vendor.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
|
||||||
|
const VendorAdapter=require('../adapter/vendoradapter.js');
|
||||||
|
const vendoradapter = new VendorAdapter();
|
||||||
|
|
||||||
|
exports.getListVendor = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
vendoradapter.queryVendorList(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
vendoradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [15] : Vendor controller, " + err.toString();
|
||||||
|
vendoradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.getVendorDetail = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
vendoradapter.queryVendorDetail(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
vendoradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [46] : VEndor controller, " + err.toString();
|
||||||
|
vendoradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.deleteVendor = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
vendoradapter.queryDeleteVendor(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
vendoradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [46] : Budget controller, " + err.toString();
|
||||||
|
vendoradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.setNewVendor = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
vendoradapter.queryNewVendor(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
vendoradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [76] : Budget controller, " + err.toString();
|
||||||
|
vendoradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.updateVendor = ( req, res ) => {
|
||||||
|
try{
|
||||||
|
vendoradapter.queryUpdateVendor(req,function(err,data){
|
||||||
|
let statusCode = data!=null ? data.meta.code : 200 ;
|
||||||
|
if(err) statusCode = 500;
|
||||||
|
vendoradapter.sendResponse(statusCode,data, res);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch(err){
|
||||||
|
apireshandler.meta.code = 502;
|
||||||
|
apireshandler.meta.message = " [90] : Budget controller, " + err.toString();
|
||||||
|
vendoradapter.sendResponse(502, apireshandler, res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
4295
dbproc.sql
Normal file
36
middlewares/auth.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
const jwt = require('jsonwebtoken');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
// console.log(req);
|
||||||
|
const authheader = req.get("Authorization");
|
||||||
|
// console.log(authheader);
|
||||||
|
if(!authheader){
|
||||||
|
const error = new Error("Not Authenticated");
|
||||||
|
error.statusCode = 401;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
const token = authheader.split(" ")[1];
|
||||||
|
// console.log(token);
|
||||||
|
let decodedtoken;
|
||||||
|
try {
|
||||||
|
// decodedtoken = jwt.verify(token, process.env.SECRET_KEY);
|
||||||
|
decodedtoken = jwt.verify(token, "Pr0C#2022oct");
|
||||||
|
req.nik = decodedtoken.nik;
|
||||||
|
// console.log(decodedtoken);
|
||||||
|
} catch (error) {
|
||||||
|
// console.log("fdfdf "+error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!decodedtoken){
|
||||||
|
const error = new Error("Not Authenticated");
|
||||||
|
error.statusCode = 401;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
}
|
||||||
96
middlewares/logging.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
|
||||||
|
const colllogging = require('../models/colllogging');
|
||||||
|
|
||||||
|
// const getLoggerForStatusCode = (statusCode) => {
|
||||||
|
// // console.log(statusCode);
|
||||||
|
// if (statusCode >= 500) {
|
||||||
|
// return console.error.bind(console)
|
||||||
|
// }
|
||||||
|
// if (statusCode >= 400) {
|
||||||
|
// return console.warn.bind(console)
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return console.log.bind(console)
|
||||||
|
// }
|
||||||
|
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
// console.info(`${req.method} ${req.originalUrl}`)
|
||||||
|
const cleanup = () => {
|
||||||
|
res.removeListener('finish', logFn)
|
||||||
|
res.removeListener('close', abortFn)
|
||||||
|
res.removeListener('error', errorFn)
|
||||||
|
}
|
||||||
|
|
||||||
|
const logFn = () => {
|
||||||
|
try {
|
||||||
|
cleanup()
|
||||||
|
// console.log(req['headers']['content-type'])
|
||||||
|
let nz_date_string = new Date().toLocaleString("en-US", { timeZone: "Asia/Jakarta" });
|
||||||
|
// console.log(nz_date_string);
|
||||||
|
// const secretkey = req.body.secretkey
|
||||||
|
const iprequest = req.headers['x-forwarded-for']
|
||||||
|
const timestamp = nz_date_string//new Date().toISOString()
|
||||||
|
const useragent = req.headers['user-agent']
|
||||||
|
const contenttype = req.headers['content-type']==undefined ? "none" : req.headers['content-type']
|
||||||
|
const originalurl = req.originalUrl
|
||||||
|
const requestbody = JSON.stringify(req.body)
|
||||||
|
const requestheader = JSON.stringify(req.headers)
|
||||||
|
const statuscode = res.statusCode
|
||||||
|
const response = res.get('responseData')
|
||||||
|
|
||||||
|
var savelogging = new colllogging(
|
||||||
|
{
|
||||||
|
// secretkey : secretkey,
|
||||||
|
iprequest : iprequest,
|
||||||
|
timestamp : timestamp,
|
||||||
|
useragent : useragent,
|
||||||
|
contenttype : contenttype,
|
||||||
|
originalurl : originalurl,
|
||||||
|
requestbody : requestbody,
|
||||||
|
requestheader : requestheader,
|
||||||
|
statuscode : statuscode,
|
||||||
|
response : response
|
||||||
|
}
|
||||||
|
);
|
||||||
|
savelogging.save(function(err,data){
|
||||||
|
|
||||||
|
if(err)
|
||||||
|
{
|
||||||
|
const error = new Error("Logging failed");
|
||||||
|
error.statusCode = 401;
|
||||||
|
error.message = err.toString();
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//console.log(data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (err) {
|
||||||
|
const error = new Error("Logging failed");
|
||||||
|
error.statusCode = 401;
|
||||||
|
error.message = err.toString();
|
||||||
|
throw error;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const abortFn = () => {
|
||||||
|
cleanup()
|
||||||
|
console.warn('Request aborted by the client')
|
||||||
|
}
|
||||||
|
|
||||||
|
const errorFn = err => {
|
||||||
|
cleanup()
|
||||||
|
console.error(`Request pipeline error: ${err}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
// successful pipeline (regardless of its response)
|
||||||
|
res.on('finish', logFn) // successful pipeline (regardless of its response)
|
||||||
|
res.on('close', abortFn) // aborted pipeline
|
||||||
|
res.on('error', errorFn) // pipeline internal error
|
||||||
|
next()
|
||||||
|
}
|
||||||
|
|
||||||
61
middlewares/multer.js
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
const imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
destination: 'assets/images',
|
||||||
|
filename: (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
// cb(null, filename + '_' + Date.now() + path.extname(file.originalname))
|
||||||
|
cb(null, file.originalname)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: 1500000 // 1000000 Bytes = 1 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
if (!file.originalname.match(/\.(png|jpg)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
return cb(new Error('Please upload a Image'))
|
||||||
|
}
|
||||||
|
// cb(undefined, true)
|
||||||
|
cb(null, true)
|
||||||
|
}
|
||||||
|
}).single("attendancefile");
|
||||||
|
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
// console.log(req);
|
||||||
|
imageUpload(req,res,next, function(err){
|
||||||
|
try {
|
||||||
|
if (err){
|
||||||
|
console.log(err);
|
||||||
|
res.status(400).send({
|
||||||
|
"success":false,
|
||||||
|
"message" : JSON.stringify(err),
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log('The filename is ' + res.req.file.filename);
|
||||||
|
// req.append("filename",res.req.file.filename);
|
||||||
|
// req.body.attendancefile=res.req.file.filename;
|
||||||
|
}
|
||||||
|
next();
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
79
middlewares/multer/po-doc.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/po/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
// console.log("body :"+req.body);
|
||||||
|
let nik = req.nik;
|
||||||
|
// let category = req.body.filecategory;
|
||||||
|
// let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
let filedoc = nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
// console.log(filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
// console.log(file.originalname.match);
|
||||||
|
if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx / pdf ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
79
middlewares/multer/poboq-csv.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/po/boq")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
// console.log("body :"+req.body);
|
||||||
|
let nik = req.nik;
|
||||||
|
// let category = req.body.filecategory;
|
||||||
|
// let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
let filedoc = nik+'_boq' + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
// console.log(filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
// console.log(file.originalname.match);
|
||||||
|
if (!file.originalname.match(/\.(csv)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( csv ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a csv file format max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
77
middlewares/multer/proc-doc.js
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/procjustification/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
// console.log("body :"+req.body);
|
||||||
|
let nik = req.nik;
|
||||||
|
// let category = req.body.filecategory;
|
||||||
|
// let filedoc = category+'_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
let filedoc = nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
if (!file.originalname.match(/\.(docx|pdf)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx / pdf ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
middlewares/multer/single.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/words/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'justifikasi_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
if (!file.originalname.match(/\.(docx)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
75
middlewares/multer/singlebast.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/bast/pdf/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'bast_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc);
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
// if (!file.originalname.match(/\.(docx|pdf)$/)) {
|
||||||
|
if (!file.originalname.match(/\.(pdf)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
middlewares/multer/singlefinance.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/finance/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'fin_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc);
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
if (!file.originalname.match(/\.(docx|pdf)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx / pdf ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx / pdf ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
middlewares/multer/singlehandover.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/bast/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'basthandover_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc);
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) {
|
||||||
|
// if (!file.originalname.match(/\.(docx)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx ) / pdf file max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx ) / pdf file max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
74
middlewares/multer/singlehandoversign.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/bast/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'basthandoversign_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc);
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
if (!file.originalname.match(/\.(docx|pdf|PDF)$/)) {
|
||||||
|
// if (!file.originalname.match(/\.(docx)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx ) / pdf file max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx ) / pdf file max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
76
middlewares/multer/singlejustification.js
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
const multer = require('multer');
|
||||||
|
|
||||||
|
const path = require('path');
|
||||||
|
var imageStorage = multer.diskStorage({
|
||||||
|
// Destination to store image
|
||||||
|
// destination: 'assets/images/'+pathDir,
|
||||||
|
destination: (req, file, cb) => {
|
||||||
|
console.log('d');
|
||||||
|
// console.log(req.get("path"));
|
||||||
|
// let pathdir = req.get("path");
|
||||||
|
cb(null, "assets/justification/")
|
||||||
|
// cb(null, "assets/words/" + pathdir + "/")
|
||||||
|
},
|
||||||
|
filename : (req, file, cb) => {
|
||||||
|
// let filename=file.originalname.split(".")[0];
|
||||||
|
console.log('filed');
|
||||||
|
let nik = req.nik;
|
||||||
|
let filedoc = 'justifikasi_'+nik+'_' + Date.now() + path.extname(file.originalname);
|
||||||
|
// req.body.filedoc = filedoc;
|
||||||
|
// cb(null, filedoc);
|
||||||
|
req.body.filename = filedoc;
|
||||||
|
cb(null, filedoc)
|
||||||
|
// file.fieldname is name of the field (image)
|
||||||
|
// path.extname get the uploaded file extension
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var imageUpload = multer({
|
||||||
|
storage: imageStorage,
|
||||||
|
limits: {
|
||||||
|
fileSize: '5mb' // 1000000 Bytes = 5 MB
|
||||||
|
},
|
||||||
|
fileFilter(req, file, cb) {
|
||||||
|
// if (!file.originalname.match(/\.(png|jpg|pdf)$/)) {
|
||||||
|
if (!file.originalname.match(/\.(docx)$/)) {
|
||||||
|
// upload only png and jpg format
|
||||||
|
req.fileValidationError = "Please upload a word document in ( docx ) max 5 mb";
|
||||||
|
cb(new Error('Please upload a word document in ( docx ) max 5 mb'), false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
cb(null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).single("file-doc");
|
||||||
|
module.exports = (req, res, next) => {
|
||||||
|
try {
|
||||||
|
imageUpload(req,res, function(err){
|
||||||
|
try {
|
||||||
|
|
||||||
|
// if (err || err instanceof multer.MulterError){
|
||||||
|
if (err){
|
||||||
|
|
||||||
|
res.status(500).send({
|
||||||
|
"meta":{
|
||||||
|
"auth": false,
|
||||||
|
"code" : 500,
|
||||||
|
"message" : req.fileValidationError || err.toString(),
|
||||||
|
},
|
||||||
|
"data" :[]
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
// console.log('The filename is ' + res.req.file.filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error "+error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} catch (error) {
|
||||||
|
console.log("error " + error);
|
||||||
|
error.message = error.message;
|
||||||
|
error.statusCode = 500;
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
50
models/colllogging.js
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
const dbkebengkel=require('../config/collections/dbkebengkel');
|
||||||
|
const Schema = dbkebengkel.Schema;
|
||||||
|
|
||||||
|
const moment = require('moment-timezone');
|
||||||
|
const OTLtime = moment.tz(Date.now(), "Asia/Tokyo");
|
||||||
|
// console.log(OTLtime);
|
||||||
|
|
||||||
|
const collschema = Schema({
|
||||||
|
iprequest : {
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
timestamp : {
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
useragent : {
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
contenttype : {
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
originalurl :{
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
requestbody :{
|
||||||
|
type : String,
|
||||||
|
required : true,
|
||||||
|
},
|
||||||
|
requestheader :{
|
||||||
|
type : String,
|
||||||
|
required : true,
|
||||||
|
},
|
||||||
|
statuscode : {
|
||||||
|
type : String,
|
||||||
|
required : true
|
||||||
|
},
|
||||||
|
response : {
|
||||||
|
type : String,
|
||||||
|
required : true,
|
||||||
|
}
|
||||||
|
// },{collection:"colllogging", timestamps : true});
|
||||||
|
},{collection:"colllogging", timestamps : {
|
||||||
|
currentTime : () => OTLtime
|
||||||
|
}});
|
||||||
|
|
||||||
|
module.exports = dbkebengkel.model('colllogging', collschema);
|
||||||
3871
package-lock.json
generated
Normal file
32
package.json
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
"name": "wsproc",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Procurement Web Services",
|
||||||
|
"main": "app.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "itnsr09@gmail.com",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"body-parser": "^1.20.1",
|
||||||
|
"cors": "^2.8.5",
|
||||||
|
"csv": "^6.3.8",
|
||||||
|
"dotenv": "^16.0.3",
|
||||||
|
"express": "^4.18.2",
|
||||||
|
"express-validator": "^6.14.2",
|
||||||
|
"jsonwebtoken": "^9.0.2",
|
||||||
|
"libreoffice-convert": "^1.4.1",
|
||||||
|
"moment-timezone": "^0.5.39",
|
||||||
|
"mongoose": "^6.8.0",
|
||||||
|
"multer": "^1.4.5-lts.1",
|
||||||
|
"mysql": "^2.18.1",
|
||||||
|
"nodemailer": "^6.8.0",
|
||||||
|
"nodemon": "^3.1.0",
|
||||||
|
"path": "^0.12.7",
|
||||||
|
"qrcode": "^1.5.1",
|
||||||
|
"request": "^2.88.2",
|
||||||
|
"slashes": "^3.0.10",
|
||||||
|
"util": "^0.12.5"
|
||||||
|
}
|
||||||
|
}
|
||||||
19
routes/bast.js
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
const express = require('express');
|
||||||
|
const { body } = require('express-validator');
|
||||||
|
const bastcontroller = require('../controllers/bast');
|
||||||
|
const jwtauth = require('../middlewares/auth.js');
|
||||||
|
const uploadfile = require('../middlewares/multer/singlebast.js');
|
||||||
|
const uploadfilehandover = require('../middlewares/multer/singlehandover.js');
|
||||||
|
const uploadfilehandoversign = require('../middlewares/multer/singlehandoversign.js');
|
||||||
|
const router=express.Router();
|
||||||
|
|
||||||
|
router.get('/getbastactivitylist',[jwtauth], bastcontroller.getBastActivityList);
|
||||||
|
router.get('/getbasthandoverlist',[jwtauth], bastcontroller.getBastHandoverList);
|
||||||
|
router.get('/getbastactivitylistdetail',[jwtauth], bastcontroller.getBastActivityListDetail);
|
||||||
|
router.post('/createbast',[jwtauth, uploadfile], bastcontroller.createBast);
|
||||||
|
router.post('/updatehandover',[jwtauth, uploadfilehandover], bastcontroller.setUpdateHandOver);
|
||||||
|
router.post('/updatehandoversign',[jwtauth, uploadfilehandoversign], bastcontroller.uploadHandOverSign);
|
||||||
|
router.get('/getbastlist',[jwtauth], bastcontroller.getBastList);
|
||||||
|
router.get('/getbastdetaillist',[jwtauth], bastcontroller.getBastDetailList);
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||
23
routes/budget.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
const express = require('express');
|
||||||
|
// const { body } = require('express-validator');
|
||||||
|
const budgetcontroller = require('../controllers/budget');
|
||||||
|
const jwtauth = require('../middlewares/auth.js');
|
||||||
|
const router=express.Router();
|
||||||
|
|
||||||
|
//=== POST METHOD
|
||||||
|
router.post('/getbudgetlist',[jwtauth], budgetcontroller.getListBudget);
|
||||||
|
router.post('/setnewbudget',[jwtauth], budgetcontroller.setNewBudget);
|
||||||
|
router.get('/getbudgettype',[jwtauth], budgetcontroller.getBudgetType);
|
||||||
|
router.get('/getbudgetdetail',[jwtauth], budgetcontroller.getBudgetDetail);
|
||||||
|
router.post('/deletebudget',[jwtauth], budgetcontroller.deleteBudget);
|
||||||
|
router.post('/updatebudget',[jwtauth], budgetcontroller.updateBudget);
|
||||||
|
// ==== REquest budget
|
||||||
|
router.post('/reqbudget',[jwtauth], budgetcontroller.setReqBudget);
|
||||||
|
router.post('/updatereqbudget',[jwtauth], budgetcontroller.updateReqBudget);
|
||||||
|
router.post('/deletereqbudget',[jwtauth], budgetcontroller.deleteReqBudget);
|
||||||
|
router.post('/getreqbudgetlist',[jwtauth], budgetcontroller.getListReqBudget);
|
||||||
|
router.get('/getbudgetlistbyreq',[jwtauth], budgetcontroller.getBudgetListByRequest);
|
||||||
|
router.get('/getreqbudgetdetail',[jwtauth], budgetcontroller.getReqBudgetDetail);
|
||||||
|
router.get('/gettrxidreqbudget',[jwtauth], budgetcontroller.getTrxIdReqBudget);
|
||||||
|
|
||||||
|
module.exports = router;
|
||||||