415 lines
19 KiB
JavaScript
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;
|