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;