2297afbb5b1c6cfa6f549d818aed07d6210f739e
[motion2.git] / server / api / intZendeskAccount / intZendeskAccount.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 _0x31d3=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../mysqldb','../../components/integrations/configuration','http','test','Sequelize','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','sendStatus','status','end','json','count','offset','set','reject','save','update','stack','name','send','map','ZendeskAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','merge','VIRTUAL','where','includeAll','include','findAll','options','find','create','body','params','destroy','getConfigurations','ZendeskConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','ZendeskField','Descriptions','getFields','username','password','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString','token','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject','description','remove','position','title','system_field_options','custom_field_options','statusCode','html-pdf','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv'];(function(_0x17e006,_0x10b1b2){var _0x49453f=function(_0x55556c){while(--_0x55556c){_0x17e006['push'](_0x17e006['shift']());}};_0x49453f(++_0x10b1b2);}(_0x31d3,0x159));var _0x331d=function(_0x44a3b0,_0x352810){_0x44a3b0=_0x44a3b0-0x0;var _0x39e6f6=_0x31d3[_0x44a3b0];return _0x39e6f6;};'use strict';var pdf=require(_0x331d('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x331d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x331d('0x2'));var rp=require('request-promise');var moment=require(_0x331d('0x3'));var BPromise=require(_0x331d('0x4'));var Mustache=require(_0x331d('0x5'));var util=require(_0x331d('0x6'));var path=require(_0x331d('0x7'));var sox=require(_0x331d('0x8'));var csv=require('to-csv');var ejs=require(_0x331d('0x9'));var fs=require('fs');var _=require(_0x331d('0xa'));var squel=require(_0x331d('0xb'));var crypto=require(_0x331d('0xc'));var jsforce=require(_0x331d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x331d('0xe'));var querystring=require(_0x331d('0xf'));var Papa=require(_0x331d('0x10'));var Redis=require(_0x331d('0x11'));var authService=require(_0x331d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x331d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x331d('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0x331d('0x15'))['db'];var integrations=require(_0x331d('0x16'));var jayson=require('jayson/promise');var client=jayson['client'][_0x331d('0x17')]({'port':0x232a});function checkPasswordPattern(_0x1a1877,_0x31f410,_0x50b8ee){if(_0x50b8ee){var _0x979b59=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x979b59[_0x331d('0x18')](_0x31f410)){return _0x1a1877;}else{throw new db[(_0x331d('0x19'))]['ValidationError'](_0x331d('0x1a'));}}else{return _0x1a1877;}}function respondWithRpcPromise(_0x2a4a0d,_0x3534f6,_0x27e7c5,_0x1f18b4){return new BPromise(function(_0x4ca3bf,_0x59cc9d){var _0x2879f7=_0x1f18b4||client;return _0x2879f7['request'](_0x2a4a0d,_0x27e7c5)[_0x331d('0x1b')](function(_0x480e88){logger['info'](_0x331d('0x1c'),_0x3534f6,_0x331d('0x1d'));logger[_0x331d('0x1e')](_0x331d('0x1f'),_0x3534f6,_0x331d('0x1d'),JSON['stringify'](_0x480e88));if(_0x480e88[_0x331d('0x20')]){if(_0x480e88[_0x331d('0x20')][_0x331d('0x21')]===0x1f4){logger['error'](_0x331d('0x1c'),_0x3534f6,_0x480e88['error'][_0x331d('0x22')]);return _0x59cc9d(_0x480e88[_0x331d('0x20')]['message']);}logger[_0x331d('0x20')](_0x331d('0x1c'),_0x3534f6,_0x480e88['error'][_0x331d('0x22')]);return _0x4ca3bf(_0x480e88[_0x331d('0x20')][_0x331d('0x22')]);}else{logger[_0x331d('0x23')](_0x331d('0x1c'),_0x3534f6,_0x331d('0x1d'));_0x4ca3bf(_0x480e88[_0x331d('0x24')]['message']);}})[_0x331d('0x25')](function(_0xbd0bdf){logger[_0x331d('0x20')](_0x331d('0x1c'),_0x3534f6,_0xbd0bdf);_0x59cc9d(_0xbd0bdf);});});}function respondWithStatusCode(_0x5ee113,_0x202035){_0x202035=_0x202035||0xcc;return function(_0xce1d78){if(_0xce1d78){return _0x5ee113[_0x331d('0x26')](_0x202035);}return _0x5ee113[_0x331d('0x27')](_0x202035)[_0x331d('0x28')]();};}function respondWithResult(_0xb783d3,_0x249874){_0x249874=_0x249874||0xc8;return function(_0x7c9a64){if(_0x7c9a64){return _0xb783d3['status'](_0x249874)[_0x331d('0x29')](_0x7c9a64);}};}function respondWithFilteredResult(_0x5acada,_0xd6ec8){return function(_0x1dba34){if(_0x1dba34){var _0x2b06b1=_0x1dba34[_0x331d('0x2a')],_0x506faf=_0xd6ec8[_0x331d('0x2b')],_0x528bf5=_0xd6ec8['offset']+_0xd6ec8['limit'],_0x5c1c87;if(_0x528bf5>=_0x2b06b1){_0x528bf5=_0x2b06b1;_0x5c1c87=0xc8;}else{_0x5c1c87=0xce;}_0x5acada['status'](_0x5c1c87);return _0x5acada[_0x331d('0x2c')]('Content-Range',_0x506faf+'-'+_0x528bf5+'/'+_0x2b06b1)['json'](_0x1dba34);}return null;};}function patchUpdates(_0x526d44){return function(_0x534f03){try{jsonpatch['apply'](_0x534f03,_0x526d44,!![]);}catch(_0x32529b){return BPromise[_0x331d('0x2d')](_0x32529b);}return _0x534f03[_0x331d('0x2e')]();};}function saveUpdates(_0x5b1061,_0x2222e2){return function(_0x481857){if(_0x481857){return _0x481857[_0x331d('0x2f')](_0x5b1061)['then'](function(_0x5b7e88){return _0x5b7e88;});}return null;};}function removeEntity(_0x5b3877,_0x250821){return function(_0x3e5e3f){if(_0x3e5e3f){return _0x3e5e3f['destroy']()['then'](function(){_0x5b3877['status'](0xcc)[_0x331d('0x28')]();});}};}function handleEntityNotFound(_0x50ea3f,_0x22e342){return function(_0x1e274c){if(!_0x1e274c){_0x50ea3f[_0x331d('0x26')](0x194);}return _0x1e274c;};}function handleError(_0x9d6b96,_0x3c1ed7){_0x3c1ed7=_0x3c1ed7||0x1f4;return function(_0x4cfe80){logger[_0x331d('0x20')](_0x4cfe80[_0x331d('0x30')]);if(_0x4cfe80[_0x331d('0x31')]){delete _0x4cfe80[_0x331d('0x31')];}_0x9d6b96[_0x331d('0x27')](_0x3c1ed7)[_0x331d('0x32')](_0x4cfe80);};}exports['index']=function(_0x165820,_0x1f0968){var _0xc1b3f2={},_0x3da6ff={},_0x2b20d6={'count':0x0,'rows':[]};var _0x469601=_[_0x331d('0x33')](db[_0x331d('0x34')][_0x331d('0x35')],function(_0x53c0b1){return{'name':_0x53c0b1[_0x331d('0x36')],'type':_0x53c0b1[_0x331d('0x37')]['key']};});_0x3da6ff[_0x331d('0x38')]=_[_0x331d('0x33')](_0x469601,'name');_0x3da6ff['query']=_[_0x331d('0x39')](_0x165820[_0x331d('0x3a')]);_0x3da6ff[_0x331d('0x3b')]=_[_0x331d('0x3c')](_0x3da6ff[_0x331d('0x38')],_0x3da6ff[_0x331d('0x3a')]);_0xc1b3f2[_0x331d('0x3d')]=_[_0x331d('0x3c')](_0x3da6ff[_0x331d('0x38')],qs[_0x331d('0x3e')](_0x165820['query'][_0x331d('0x3e')]));_0xc1b3f2[_0x331d('0x3d')]=_0xc1b3f2[_0x331d('0x3d')][_0x331d('0x3f')]?_0xc1b3f2[_0x331d('0x3d')]:_0x3da6ff[_0x331d('0x38')];if(!_0x165820[_0x331d('0x3a')][_0x331d('0x40')](_0x331d('0x41'))){_0xc1b3f2['limit']=qs[_0x331d('0x42')](_0x165820[_0x331d('0x3a')][_0x331d('0x42')]);_0xc1b3f2[_0x331d('0x2b')]=qs['offset'](_0x165820['query'][_0x331d('0x2b')]);}_0xc1b3f2[_0x331d('0x43')]=qs[_0x331d('0x44')](_0x165820['query']['sort']);_0xc1b3f2['where']=qs[_0x331d('0x3b')](_[_0x331d('0x45')](_0x165820[_0x331d('0x3a')],_0x3da6ff[_0x331d('0x3b')]),_0x469601);if(_0x165820['query'][_0x331d('0x46')]){_0xc1b3f2['where']=_[_0x331d('0x47')](_0xc1b3f2['where'],{'$or':_[_0x331d('0x33')](_0x469601,function(_0x3185ca){if(_0x3185ca[_0x331d('0x37')]!==_0x331d('0x48')){var _0x5d8be={};_0x5d8be[_0x3185ca[_0x331d('0x31')]]={'$like':'%'+_0x165820[_0x331d('0x3a')][_0x331d('0x46')]+'%'};return _0x5d8be;}})});}_0xc1b3f2=_[_0x331d('0x47')]({},_0xc1b3f2,_0x165820['options']);var _0x373aa6={'where':_0xc1b3f2[_0x331d('0x49')]};return db['ZendeskAccount'][_0x331d('0x2a')](_0x373aa6)[_0x331d('0x1b')](function(_0x5e3f6c){_0x2b20d6[_0x331d('0x2a')]=_0x5e3f6c;if(_0x165820[_0x331d('0x3a')][_0x331d('0x4a')]){_0xc1b3f2[_0x331d('0x4b')]=[{'all':!![]}];}return db[_0x331d('0x34')][_0x331d('0x4c')](_0xc1b3f2);})[_0x331d('0x1b')](function(_0x4d0527){_0x2b20d6['rows']=_0x4d0527;return _0x2b20d6;})[_0x331d('0x1b')](respondWithFilteredResult(_0x1f0968,_0xc1b3f2))[_0x331d('0x25')](handleError(_0x1f0968,null));};exports['show']=function(_0x2a5726,_0x44c989){var _0xa5aa29={'raw':![],'where':{'id':_0x2a5726['params']['id']}},_0x2ea35a={};_0x2ea35a[_0x331d('0x38')]=_['keys'](db[_0x331d('0x34')][_0x331d('0x35')]);_0x2ea35a[_0x331d('0x3a')]=_[_0x331d('0x39')](_0x2a5726[_0x331d('0x3a')]);_0x2ea35a[_0x331d('0x3b')]=_[_0x331d('0x3c')](_0x2ea35a['model'],_0x2ea35a[_0x331d('0x3a')]);_0xa5aa29[_0x331d('0x3d')]=_[_0x331d('0x3c')](_0x2ea35a[_0x331d('0x38')],qs[_0x331d('0x3e')](_0x2a5726[_0x331d('0x3a')][_0x331d('0x3e')]));_0xa5aa29['attributes']=_0xa5aa29[_0x331d('0x3d')]['length']?_0xa5aa29[_0x331d('0x3d')]:_0x2ea35a[_0x331d('0x38')];if(_0x2a5726[_0x331d('0x3a')][_0x331d('0x4a')]){_0xa5aa29[_0x331d('0x4b')]=[{'all':!![]}];}_0xa5aa29=_[_0x331d('0x47')]({},_0xa5aa29,_0x2a5726[_0x331d('0x4d')]);return db[_0x331d('0x34')][_0x331d('0x4e')](_0xa5aa29)[_0x331d('0x1b')](handleEntityNotFound(_0x44c989,null))['then'](respondWithResult(_0x44c989,null))['catch'](handleError(_0x44c989,null));};exports['create']=function(_0x37d45e,_0x5036e8){return db[_0x331d('0x34')][_0x331d('0x4f')](_0x37d45e['body'],{})[_0x331d('0x1b')](respondWithResult(_0x5036e8,0xc9))[_0x331d('0x25')](handleError(_0x5036e8,null));};exports[_0x331d('0x2f')]=function(_0x209d20,_0x2ee748){if(_0x209d20[_0x331d('0x50')]['id']){delete _0x209d20[_0x331d('0x50')]['id'];}return db['ZendeskAccount'][_0x331d('0x4e')]({'where':{'id':_0x209d20[_0x331d('0x51')]['id']}})[_0x331d('0x1b')](handleEntityNotFound(_0x2ee748,null))[_0x331d('0x1b')](saveUpdates(_0x209d20[_0x331d('0x50')],null))['then'](respondWithResult(_0x2ee748,null))[_0x331d('0x25')](handleError(_0x2ee748,null));};exports[_0x331d('0x52')]=function(_0x38c8ec,_0x290a5b){return db['ZendeskAccount']['find']({'where':{'id':_0x38c8ec['params']['id']}})['then'](handleEntityNotFound(_0x290a5b,null))[_0x331d('0x1b')](removeEntity(_0x290a5b,null))[_0x331d('0x25')](handleError(_0x290a5b,null));};exports[_0x331d('0x53')]=function(_0x120665,_0xff2370,_0x59e4c7){var _0x4cef51={};var _0x5128f1={};var _0x43a0f5;var _0x29841a;return db[_0x331d('0x34')]['findOne']({'where':{'id':_0x120665[_0x331d('0x51')]['id']}})['then'](handleEntityNotFound(_0xff2370,null))[_0x331d('0x1b')](function(_0x29d5b9){if(_0x29d5b9){_0x43a0f5=_0x29d5b9;_0x5128f1[_0x331d('0x38')]=_['keys'](db[_0x331d('0x54')][_0x331d('0x35')]);_0x5128f1['query']=_[_0x331d('0x39')](_0x120665['query']);_0x5128f1[_0x331d('0x3b')]=_['intersection'](_0x5128f1['model'],_0x5128f1[_0x331d('0x3a')]);_0x4cef51['attributes']=_[_0x331d('0x3c')](_0x5128f1['model'],qs[_0x331d('0x3e')](_0x120665[_0x331d('0x3a')][_0x331d('0x3e')]));_0x4cef51[_0x331d('0x3d')]=_0x4cef51['attributes'][_0x331d('0x3f')]?_0x4cef51['attributes']:_0x5128f1[_0x331d('0x38')];_0x4cef51['order']=qs[_0x331d('0x44')](_0x120665[_0x331d('0x3a')]['sort']);_0x4cef51['where']=qs[_0x331d('0x3b')](_[_0x331d('0x45')](_0x120665[_0x331d('0x3a')],_0x5128f1['filters']));if(_0x120665[_0x331d('0x3a')]['filter']){_0x4cef51[_0x331d('0x49')]=_[_0x331d('0x47')](_0x4cef51[_0x331d('0x49')],{'$or':_[_0x331d('0x33')](_0x4cef51['attributes'],function(_0x3953de){var _0x558fda={};_0x558fda[_0x3953de]={'$like':'%'+_0x120665['query'][_0x331d('0x46')]+'%'};return _0x558fda;})});}_0x4cef51=_['merge']({},_0x4cef51,_0x120665[_0x331d('0x4d')]);return _0x43a0f5['getConfigurations'](_0x4cef51);}})[_0x331d('0x1b')](function(_0x2068c5){if(_0x2068c5){_0x29841a=_0x2068c5['length'];if(!_0x120665[_0x331d('0x3a')][_0x331d('0x40')](_0x331d('0x41'))){_0x4cef51[_0x331d('0x42')]=qs[_0x331d('0x42')](_0x120665['query'][_0x331d('0x42')]);_0x4cef51[_0x331d('0x2b')]=qs[_0x331d('0x2b')](_0x120665[_0x331d('0x3a')][_0x331d('0x2b')]);}return _0x43a0f5['getConfigurations'](_0x4cef51);}})['then'](function(_0x534365){if(_0x534365){return _0x534365?{'count':_0x29841a,'rows':_0x534365}:null;}})[_0x331d('0x1b')](respondWithResult(_0xff2370,null))['catch'](handleError(_0xff2370,null));};exports[_0x331d('0x55')]=function(_0x1a3404,_0x422585,_0x5bab7c){if(_0x1a3404[_0x331d('0x50')]['id']){delete _0x1a3404['body']['id'];}return db['ZendeskAccount'][_0x331d('0x56')]({'where':{'id':_0x1a3404['params']['id']}})[_0x331d('0x1b')](handleEntityNotFound(_0x422585,null))[_0x331d('0x1b')](function(_0x455474){if(_0x455474){_0x1a3404['body'][_0x331d('0x57')]=_0x455474['id'];_0x1a3404[_0x331d('0x50')][_0x331d('0x58')]=integrations[_0x331d('0x59')](_0x1a3404['body'][_0x331d('0x5a')],_0x1a3404[_0x331d('0x50')][_0x331d('0x37')]);_0x1a3404[_0x331d('0x50')]['Descriptions']=integrations[_0x331d('0x5b')](_0x1a3404[_0x331d('0x50')][_0x331d('0x5a')],_0x1a3404[_0x331d('0x50')]['type']);return db[_0x331d('0x54')][_0x331d('0x4f')](_0x1a3404[_0x331d('0x50')],{'include':[{'model':db[_0x331d('0x5c')],'as':'Subjects'},{'model':db[_0x331d('0x5c')],'as':_0x331d('0x5d')}]});}return null;})[_0x331d('0x1b')](respondWithResult(_0x422585,null))[_0x331d('0x25')](handleError(_0x422585,null));};exports[_0x331d('0x5e')]=function(_0x43e4b4,_0xb8c9fa,_0xd6d7aa){var _0x571da4='';return db[_0x331d('0x34')][_0x331d('0x56')]({'where':{'id':_0x43e4b4['params']['id']},'attributes':['id',_0x331d('0x5f'),_0x331d('0x60'),'token',_0x331d('0x61'),_0x331d('0x62')]})[_0x331d('0x1b')](handleEntityNotFound(_0xb8c9fa,null))[_0x331d('0x1b')](function(_0x26cfcc){if(_0x26cfcc){_0x571da4=_0x26cfcc['remoteUri'];var _0x1908aa=_0x571da4[_0x331d('0x63')](-0x1);if(_0x1908aa==='/'){_0x571da4=_0x571da4[_0x331d('0x64')](0x0,_0x571da4[_0x331d('0x65')](_0x1908aa));}var _0x30dc4c={'method':'GET','uri':util[_0x331d('0x66')]('%s/%s',_0x571da4,_0x331d('0x67')),'json':!![]};switch(_0x26cfcc['authType']){case _0x331d('0x60'):_0x30dc4c[_0x331d('0x68')]={'Authorization':util[_0x331d('0x66')](_0x331d('0x69'),new Buffer(util['format'](_0x331d('0x6a'),_0x26cfcc[_0x331d('0x5f')],_0x26cfcc['password']))[_0x331d('0x6b')]('base64'))};break;case _0x331d('0x6c'):_0x30dc4c[_0x331d('0x68')]={'Authorization':util[_0x331d('0x66')](_0x331d('0x69'),new Buffer(util[_0x331d('0x66')](_0x331d('0x6d'),_0x26cfcc[_0x331d('0x5f')],_0x26cfcc['token']))[_0x331d('0x6b')]('base64'))};break;default:throw new db[(_0x331d('0x19'))][(_0x331d('0x6e'))](_0x331d('0x6f'));}return rp(_0x30dc4c);}})[_0x331d('0x1b')](function(_0x2effa4){if(_0x2effa4){var _0x3ebc5b=[_0x331d('0x70'),_0x331d('0x71'),'group','assignee'];_[_0x331d('0x72')](_0x2effa4['ticket_fields'],function(_0x17d6b9){return _0x3ebc5b['includes'](_0x17d6b9[_0x331d('0x37')]);});return{'count':_0x2effa4[_0x331d('0x67')][_0x331d('0x3f')],'rows':_[_0x331d('0x33')](_0x2effa4['ticket_fields'],function(_0x5908d2){return{'id':_0x5908d2['id'],'name':_0x5908d2[_0x331d('0x73')]>0x7?_0x5908d2[_0x331d('0x74')]:_0x5908d2[_0x331d('0x37')],'custom':_0x5908d2[_0x331d('0x73')]>0x7?!![]:![],'options':_0x5908d2[_0x331d('0x75')]?_0x5908d2[_0x331d('0x75')]:_0x5908d2[_0x331d('0x76')]?_0x5908d2[_0x331d('0x76')]:[]};})};}})[_0x331d('0x1b')](respondWithResult(_0xb8c9fa,null))['catch'](function(_0x15eaaa){var _0x143dd0=_0x43e4b4[_0x331d('0x3a')][_0x331d('0x18')]?0x1f4:_0x15eaaa[_0x331d('0x77')]||0x1f4;logger[_0x331d('0x20')]('getFields,\x20%s,\x20%s,\x20%s',_0x331d('0x5e'),_0x143dd0,JSON['stringify'](_0x15eaaa));delete _0x15eaaa[_0x331d('0x31')];if(_0x143dd0===0x191){_0x143dd0=0x190;}_0xb8c9fa[_0x331d('0x27')](_0x143dd0)['send'](_0x43e4b4[_0x331d('0x3a')][_0x331d('0x18')]?{'message':'Wrong\x20credentials','statusCode':_0x15eaaa[_0x331d('0x77')]}:_0x15eaaa);});};