118da8460cf4e93148d4de9d3293a1df3c7006f4
[motion2.git] / server / api / intDeskAccount / intDeskAccount.controller.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x8f8a=['intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filters','filter','merge','type','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','getConfigurations','findOne','DeskConfiguration','order','nolimit','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','getFields','priority','authType','username','tokenSecret','remoteUri','substring','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','password','toString','base64','concat','_embedded','active','label','test','statusCode','stringify','Wrong\x20credentials','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','end','error','stack','name','send','index','DeskAccount','rawAttributes','fieldName','key','model','map','keys','query'];(function(_0x90ff37,_0x1db10c){var _0x3598b7=function(_0x38b536){while(--_0x38b536){_0x90ff37['push'](_0x90ff37['shift']());}};_0x3598b7(++_0x1db10c);}(_0x8f8a,0x11a));var _0xa8f8=function(_0x3d8b4c,_0x4e4a7c){_0x3d8b4c=_0x3d8b4c-0x0;var _0xddaeac=_0x8f8a[_0x3d8b4c];return _0xddaeac;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa8f8('0x0'));var jsonpatch=require(_0xa8f8('0x1'));var rp=require(_0xa8f8('0x2'));var moment=require('moment');var BPromise=require(_0xa8f8('0x3'));var Mustache=require(_0xa8f8('0x4'));var util=require(_0xa8f8('0x5'));var path=require(_0xa8f8('0x6'));var sox=require(_0xa8f8('0x7'));var csv=require(_0xa8f8('0x8'));var ejs=require(_0xa8f8('0x9'));var fs=require('fs');var fs_extra=require(_0xa8f8('0xa'));var _=require(_0xa8f8('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa8f8('0xc'));var deskjs=require(_0xa8f8('0xd'));var toCsv=require(_0xa8f8('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa8f8('0xe'));var authService=require(_0xa8f8('0xf'));var qs=require(_0xa8f8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8f8('0x11'));var logger=require('../../config/logger')(_0xa8f8('0x12'));var utils=require(_0xa8f8('0x13'));var config=require(_0xa8f8('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xc57f2d,_0x54e023){_0x54e023=_0x54e023||0xcc;return function(_0x3d6d9e){if(_0x3d6d9e){return _0xc57f2d[_0xa8f8('0x15')](_0x54e023);}return _0xc57f2d[_0xa8f8('0x16')](_0x54e023)['end']();};}function respondWithResult(_0x3b4510,_0xb4caa4){_0xb4caa4=_0xb4caa4||0xc8;return function(_0x2d3168){if(_0x2d3168){return _0x3b4510[_0xa8f8('0x16')](_0xb4caa4)['json'](_0x2d3168);}};}function respondWithFilteredResult(_0x3a31f2,_0x5c8ad9){return function(_0x34e6f6){if(_0x34e6f6){var _0xfe1040=typeof _0x5c8ad9[_0xa8f8('0x17')]===_0xa8f8('0x18')&&typeof _0x5c8ad9[_0xa8f8('0x19')]==='undefined';var _0x3bd068=_0x34e6f6[_0xa8f8('0x1a')];var _0x459e07=_0xfe1040?0x0:_0x5c8ad9['offset'];var _0xc16158=_0xfe1040?_0x34e6f6[_0xa8f8('0x1a')]:_0x5c8ad9['offset']+_0x5c8ad9[_0xa8f8('0x19')];var _0x58ca7c;if(_0xc16158>=_0x3bd068){_0xc16158=_0x3bd068;_0x58ca7c=0xc8;}else{_0x58ca7c=0xce;}_0x3a31f2[_0xa8f8('0x16')](_0x58ca7c);return _0x3a31f2[_0xa8f8('0x1b')]('Content-Range',_0x459e07+'-'+_0xc16158+'/'+_0x3bd068)[_0xa8f8('0x1c')](_0x34e6f6);}return null;};}function patchUpdates(_0x17e519){return function(_0x25598f){try{jsonpatch[_0xa8f8('0x1d')](_0x25598f,_0x17e519,!![]);}catch(_0x491fcb){return BPromise[_0xa8f8('0x1e')](_0x491fcb);}return _0x25598f['save']();};}function saveUpdates(_0x16aa3,_0x53f3cc){return function(_0x1ce48b){if(_0x1ce48b){return _0x1ce48b[_0xa8f8('0x1f')](_0x16aa3)[_0xa8f8('0x20')](function(_0x3b52d8){return _0x3b52d8;});}return null;};}function removeEntity(_0x682f20,_0xd44b3f){return function(_0x22bf8d){if(_0x22bf8d){return _0x22bf8d[_0xa8f8('0x21')]()[_0xa8f8('0x20')](function(){_0x682f20[_0xa8f8('0x16')](0xcc)[_0xa8f8('0x22')]();});}};}function handleEntityNotFound(_0x3d544b,_0x36b645){return function(_0x383e85){if(!_0x383e85){_0x3d544b['sendStatus'](0x194);}return _0x383e85;};}function handleError(_0xa1f150,_0x55a636){_0x55a636=_0x55a636||0x1f4;return function(_0x2b84e2){logger[_0xa8f8('0x23')](_0x2b84e2[_0xa8f8('0x24')]);if(_0x2b84e2['name']){delete _0x2b84e2[_0xa8f8('0x25')];}_0xa1f150[_0xa8f8('0x16')](_0x55a636)[_0xa8f8('0x26')](_0x2b84e2);};}exports[_0xa8f8('0x27')]=function(_0x2f139b,_0x2c5134){var _0x45cee9={},_0x1560b2={},_0x3a6bcb={'count':0x0,'rows':[]};var _0x157e22=_['map'](db[_0xa8f8('0x28')][_0xa8f8('0x29')],function(_0x155c25){return{'name':_0x155c25[_0xa8f8('0x2a')],'type':_0x155c25['type'][_0xa8f8('0x2b')]};});_0x1560b2[_0xa8f8('0x2c')]=_[_0xa8f8('0x2d')](_0x157e22,_0xa8f8('0x25'));_0x1560b2['query']=_[_0xa8f8('0x2e')](_0x2f139b[_0xa8f8('0x2f')]);_0x1560b2['filters']=_[_0xa8f8('0x30')](_0x1560b2[_0xa8f8('0x2c')],_0x1560b2[_0xa8f8('0x2f')]);_0x45cee9[_0xa8f8('0x31')]=_['intersection'](_0x1560b2[_0xa8f8('0x2c')],qs[_0xa8f8('0x32')](_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x32')]));_0x45cee9[_0xa8f8('0x31')]=_0x45cee9[_0xa8f8('0x31')][_0xa8f8('0x33')]?_0x45cee9[_0xa8f8('0x31')]:_0x1560b2['model'];if(!_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x34')]('nolimit')){_0x45cee9[_0xa8f8('0x19')]=qs[_0xa8f8('0x19')](_0x2f139b[_0xa8f8('0x2f')]['limit']);_0x45cee9[_0xa8f8('0x17')]=qs['offset'](_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x17')]);}_0x45cee9['order']=qs[_0xa8f8('0x35')](_0x2f139b[_0xa8f8('0x2f')]['sort']);_0x45cee9[_0xa8f8('0x36')]=qs['filters'](_[_0xa8f8('0x37')](_0x2f139b[_0xa8f8('0x2f')],_0x1560b2[_0xa8f8('0x38')]),_0x157e22);if(_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x39')]){_0x45cee9[_0xa8f8('0x36')]=_[_0xa8f8('0x3a')](_0x45cee9['where'],{'$or':_[_0xa8f8('0x2d')](_0x157e22,function(_0x322647){if(_0x322647[_0xa8f8('0x3b')]!=='VIRTUAL'){var _0x32dc39={};_0x32dc39[_0x322647[_0xa8f8('0x25')]]={'$like':'%'+_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x39')]+'%'};return _0x32dc39;}})});}_0x45cee9=_[_0xa8f8('0x3a')]({},_0x45cee9,_0x2f139b['options']);var _0xbc054c={'where':_0x45cee9['where']};return db[_0xa8f8('0x28')][_0xa8f8('0x1a')](_0xbc054c)[_0xa8f8('0x20')](function(_0x443281){_0x3a6bcb[_0xa8f8('0x1a')]=_0x443281;if(_0x2f139b[_0xa8f8('0x2f')][_0xa8f8('0x3c')]){_0x45cee9[_0xa8f8('0x3d')]=[{'all':!![]}];}return db['DeskAccount'][_0xa8f8('0x3e')](_0x45cee9);})[_0xa8f8('0x20')](function(_0x1e1f61){_0x3a6bcb[_0xa8f8('0x3f')]=_0x1e1f61;return _0x3a6bcb;})['then'](respondWithFilteredResult(_0x2c5134,_0x45cee9))['catch'](handleError(_0x2c5134,null));};exports[_0xa8f8('0x40')]=function(_0x23a7f5,_0x576e2f){var _0x38ed12={'raw':![],'where':{'id':_0x23a7f5[_0xa8f8('0x41')]['id']}},_0x164ff9={};_0x164ff9[_0xa8f8('0x2c')]=_[_0xa8f8('0x2e')](db['DeskAccount']['rawAttributes']);_0x164ff9[_0xa8f8('0x2f')]=_[_0xa8f8('0x2e')](_0x23a7f5[_0xa8f8('0x2f')]);_0x164ff9[_0xa8f8('0x38')]=_[_0xa8f8('0x30')](_0x164ff9[_0xa8f8('0x2c')],_0x164ff9['query']);_0x38ed12[_0xa8f8('0x31')]=_[_0xa8f8('0x30')](_0x164ff9[_0xa8f8('0x2c')],qs[_0xa8f8('0x32')](_0x23a7f5[_0xa8f8('0x2f')][_0xa8f8('0x32')]));_0x38ed12['attributes']=_0x38ed12[_0xa8f8('0x31')][_0xa8f8('0x33')]?_0x38ed12[_0xa8f8('0x31')]:_0x164ff9[_0xa8f8('0x2c')];if(_0x23a7f5['query'][_0xa8f8('0x3c')]){_0x38ed12['include']=[{'all':!![]}];}_0x38ed12=_['merge']({},_0x38ed12,_0x23a7f5[_0xa8f8('0x42')]);return db['DeskAccount'][_0xa8f8('0x43')](_0x38ed12)['then'](handleEntityNotFound(_0x576e2f,null))[_0xa8f8('0x20')](respondWithResult(_0x576e2f,null))[_0xa8f8('0x44')](handleError(_0x576e2f,null));};exports[_0xa8f8('0x45')]=function(_0x52c2ca,_0x33eaf9){return db[_0xa8f8('0x28')][_0xa8f8('0x45')](_0x52c2ca[_0xa8f8('0x46')],{})[_0xa8f8('0x20')](respondWithResult(_0x33eaf9,0xc9))[_0xa8f8('0x44')](handleError(_0x33eaf9,null));};exports['update']=function(_0x33405c,_0x1aba1c){if(_0x33405c[_0xa8f8('0x46')]['id']){delete _0x33405c['body']['id'];}return db[_0xa8f8('0x28')][_0xa8f8('0x43')]({'where':{'id':_0x33405c['params']['id']}})[_0xa8f8('0x20')](handleEntityNotFound(_0x1aba1c,null))[_0xa8f8('0x20')](saveUpdates(_0x33405c[_0xa8f8('0x46')],null))[_0xa8f8('0x20')](respondWithResult(_0x1aba1c,null))[_0xa8f8('0x44')](handleError(_0x1aba1c,null));};exports[_0xa8f8('0x21')]=function(_0x34a3d6,_0x17a25d){return db[_0xa8f8('0x28')][_0xa8f8('0x43')]({'where':{'id':_0x34a3d6[_0xa8f8('0x41')]['id']}})['then'](handleEntityNotFound(_0x17a25d,null))[_0xa8f8('0x20')](removeEntity(_0x17a25d,null))['catch'](handleError(_0x17a25d,null));};exports[_0xa8f8('0x47')]=function(_0xc73754,_0xa47cc4,_0x261717){var _0x3fb36d={};var _0x3dd2f1={};var _0x1f7517;var _0x22bc11;return db[_0xa8f8('0x28')][_0xa8f8('0x48')]({'where':{'id':_0xc73754[_0xa8f8('0x41')]['id']}})[_0xa8f8('0x20')](handleEntityNotFound(_0xa47cc4,null))[_0xa8f8('0x20')](function(_0x5dd302){if(_0x5dd302){_0x1f7517=_0x5dd302;_0x3dd2f1[_0xa8f8('0x2c')]=_[_0xa8f8('0x2e')](db[_0xa8f8('0x49')]['rawAttributes']);_0x3dd2f1[_0xa8f8('0x2f')]=_[_0xa8f8('0x2e')](_0xc73754['query']);_0x3dd2f1['filters']=_[_0xa8f8('0x30')](_0x3dd2f1[_0xa8f8('0x2c')],_0x3dd2f1['query']);_0x3fb36d[_0xa8f8('0x31')]=_[_0xa8f8('0x30')](_0x3dd2f1[_0xa8f8('0x2c')],qs[_0xa8f8('0x32')](_0xc73754['query'][_0xa8f8('0x32')]));_0x3fb36d[_0xa8f8('0x31')]=_0x3fb36d[_0xa8f8('0x31')]['length']?_0x3fb36d[_0xa8f8('0x31')]:_0x3dd2f1['model'];_0x3fb36d[_0xa8f8('0x4a')]=qs[_0xa8f8('0x35')](_0xc73754[_0xa8f8('0x2f')]['sort']);_0x3fb36d[_0xa8f8('0x36')]=qs[_0xa8f8('0x38')](_[_0xa8f8('0x37')](_0xc73754[_0xa8f8('0x2f')],_0x3dd2f1['filters']));if(_0xc73754[_0xa8f8('0x2f')][_0xa8f8('0x39')]){_0x3fb36d[_0xa8f8('0x36')]=_[_0xa8f8('0x3a')](_0x3fb36d['where'],{'$or':_[_0xa8f8('0x2d')](_0x3fb36d[_0xa8f8('0x31')],function(_0x209861){var _0x286a5c={};_0x286a5c[_0x209861]={'$like':'%'+_0xc73754[_0xa8f8('0x2f')][_0xa8f8('0x39')]+'%'};return _0x286a5c;})});}_0x3fb36d=_['merge']({},_0x3fb36d,_0xc73754[_0xa8f8('0x42')]);return _0x1f7517[_0xa8f8('0x47')](_0x3fb36d);}})[_0xa8f8('0x20')](function(_0x525e44){if(_0x525e44){_0x22bc11=_0x525e44['length'];if(!_0xc73754[_0xa8f8('0x2f')][_0xa8f8('0x34')](_0xa8f8('0x4b'))){_0x3fb36d[_0xa8f8('0x19')]=qs[_0xa8f8('0x19')](_0xc73754[_0xa8f8('0x2f')][_0xa8f8('0x19')]);_0x3fb36d['offset']=qs[_0xa8f8('0x17')](_0xc73754[_0xa8f8('0x2f')][_0xa8f8('0x17')]);}return _0x1f7517[_0xa8f8('0x47')](_0x3fb36d);}})[_0xa8f8('0x20')](function(_0x934978){if(_0x934978){return _0x934978?{'count':_0x22bc11,'rows':_0x934978}:null;}})[_0xa8f8('0x20')](respondWithResult(_0xa47cc4,null))[_0xa8f8('0x44')](handleError(_0xa47cc4,null));};exports[_0xa8f8('0x4c')]=function(_0x26d75e,_0x248f76,_0x20b73f){if(_0x26d75e['body']['id']){delete _0x26d75e[_0xa8f8('0x46')]['id'];}return db[_0xa8f8('0x28')][_0xa8f8('0x48')]({'where':{'id':_0x26d75e[_0xa8f8('0x41')]['id']}})[_0xa8f8('0x20')](handleEntityNotFound(_0x248f76,null))[_0xa8f8('0x20')](function(_0x5741f9){if(_0x5741f9){_0x26d75e[_0xa8f8('0x46')]['AccountId']=_0x5741f9['id'];_0x26d75e[_0xa8f8('0x46')][_0xa8f8('0x4d')]=integrations[_0xa8f8('0x4e')](_0x26d75e['body'][_0xa8f8('0x4f')],_0x26d75e[_0xa8f8('0x46')]['type']);_0x26d75e[_0xa8f8('0x46')][_0xa8f8('0x50')]=integrations[_0xa8f8('0x51')](_0x26d75e[_0xa8f8('0x46')]['channel'],_0x26d75e[_0xa8f8('0x46')][_0xa8f8('0x3b')]);return db[_0xa8f8('0x49')][_0xa8f8('0x45')](_0x26d75e['body'],{'include':[{'model':db[_0xa8f8('0x52')],'as':_0xa8f8('0x4d')},{'model':db[_0xa8f8('0x52')],'as':_0xa8f8('0x50')}]});}return null;})[_0xa8f8('0x20')](respondWithResult(_0x248f76,null))['catch'](handleError(_0x248f76,null));};exports[_0xa8f8('0x53')]=function(_0x4b54c2,_0x170f57,_0x5280d0){var _0x2d59c2=[{'name':_0xa8f8('0x54'),'label':_0xa8f8('0x54'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x33df22='';return db[_0xa8f8('0x28')][_0xa8f8('0x48')]({'where':{'id':_0x4b54c2['params']['id']},'attributes':['id','remoteUri',_0xa8f8('0x55'),_0xa8f8('0x56'),'password','consumerKey','consumerSecret','token',_0xa8f8('0x57')]})['then'](handleEntityNotFound(_0x170f57,null))[_0xa8f8('0x20')](function(_0x34e588){if(_0x34e588){_0x33df22=_0x34e588[_0xa8f8('0x58')];var _0x30b134=_0x33df22['slice'](-0x1);if(_0x30b134==='/'){_0x33df22=_0x33df22[_0xa8f8('0x59')](0x0,_0x33df22['lastIndexOf'](_0x30b134));}var _0x4d36a9={'method':_0xa8f8('0x5a'),'uri':util[_0xa8f8('0x5b')](_0xa8f8('0x5c'),_0x33df22),'headers':{'Content-Type':_0xa8f8('0x5d'),'Accept':_0xa8f8('0x5d')},'json':!![]};if(_0x34e588[_0xa8f8('0x55')]===_0xa8f8('0x5e')){_0x4d36a9[_0xa8f8('0x5f')][_0xa8f8('0x60')]=util[_0xa8f8('0x5b')](_0xa8f8('0x61'),new Buffer(util[_0xa8f8('0x5b')](_0xa8f8('0x62'),_0x34e588[_0xa8f8('0x56')],_0x34e588[_0xa8f8('0x63')]))[_0xa8f8('0x64')](_0xa8f8('0x65')));}return rp(_0x4d36a9)[_0xa8f8('0x20')](function(_0x520c24){return _0x2d59c2[_0xa8f8('0x66')](_[_0xa8f8('0x2d')](_0x520c24[_0xa8f8('0x67')]['entries'],function(_0x26df30){return{'id':_0x26df30['name'],'name':_0x26df30[_0xa8f8('0x25')],'type':_0x26df30['type'],'active':_0x26df30[_0xa8f8('0x68')],'label':_0x26df30[_0xa8f8('0x69')],'custom':!![]};}));});}})[_0xa8f8('0x20')](function(_0x12df9a){return{'count':_0x12df9a['length'],'rows':_0x12df9a};})['then'](respondWithResult(_0x170f57,null))['catch'](function(_0x1717e4){var _0x3c6d19=_0x4b54c2[_0xa8f8('0x2f')][_0xa8f8('0x6a')]?0x1f4:_0x1717e4[_0xa8f8('0x6b')]||0x1f4;logger[_0xa8f8('0x23')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x3c6d19,JSON[_0xa8f8('0x6c')](_0x1717e4));delete _0x1717e4[_0xa8f8('0x25')];if(_0x3c6d19===0x191){_0x3c6d19=0x190;}_0x170f57[_0xa8f8('0x16')](_0x3c6d19)[_0xa8f8('0x26')](_0x4b54c2['query'][_0xa8f8('0x6a')]?{'message':_0xa8f8('0x6d'),'statusCode':_0x1717e4[_0xa8f8('0x6b')]}:_0x1717e4);});};