Files
backend-Eprocurement/adapter/employeeadapter.js
2025-12-05 06:21:42 +07:00

415 lines
19 KiB
JavaScript

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;