0f1ec6a37892cb3f9af0a0060db67409cf80051f
[motion2.git] / server / api / intFreshdeskAccount / intFreshdeskAccount.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 _0xff76=['group','source','company','includes','default','custom_dropdown','label','choices','capitalize','test','statusCode','Wrong\x20credentials','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','then','info','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshdeskAccount,\x20%s,\x20%s','catch','sendStatus','status','end','count','offset','limit','set','Content-Range','json','apply','update','destroy','stack','name','send','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','nolimit','order','filters','pick','filter','where','merge','VIRTUAL','includeAll','rows','show','params','length','include','options','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','sort','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','channel','FreshdeskField','getFields','remoteUri','substring','GET','format','%s:X','requester','subject','priority'];(function(_0x27f9d3,_0x54ee48){var _0x1d2c10=function(_0x591eae){while(--_0x591eae){_0x27f9d3['push'](_0x27f9d3['shift']());}};_0x1d2c10(++_0x54ee48);}(_0xff76,0xf6));var _0x6ff7=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xff76[_0xa1e3e3];return _0xc980e9;};'use strict';var pdf=require(_0x6ff7('0x0'));var emlformat=require(_0x6ff7('0x1'));var rimraf=require(_0x6ff7('0x2'));var zipdir=require(_0x6ff7('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6ff7('0x4'));var moment=require(_0x6ff7('0x5'));var BPromise=require(_0x6ff7('0x6'));var Mustache=require(_0x6ff7('0x7'));var util=require(_0x6ff7('0x8'));var path=require(_0x6ff7('0x9'));var sox=require('sox');var csv=require(_0x6ff7('0xa'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x6ff7('0xb'));var squel=require('squel');var crypto=require(_0x6ff7('0xc'));var jsforce=require(_0x6ff7('0xd'));var deskjs=require(_0x6ff7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x6ff7('0xf'));var Papa=require(_0x6ff7('0x10'));var Redis=require(_0x6ff7('0x11'));var authService=require(_0x6ff7('0x12'));var qs=require(_0x6ff7('0x13'));var as=require(_0x6ff7('0x14'));var hardwareService=require(_0x6ff7('0x15'));var logger=require(_0x6ff7('0x16'))(_0x6ff7('0x17'));var utils=require('../../config/utils');var config=require(_0x6ff7('0x18'));var licenseUtil=require(_0x6ff7('0x19'));var db=require(_0x6ff7('0x1a'))['db'];var integrations=require(_0x6ff7('0x1b'));var jayson=require(_0x6ff7('0x1c'));var client=jayson[_0x6ff7('0x1d')][_0x6ff7('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x49da13,_0x3ee507,_0x2f25c3,_0x151150){return new BPromise(function(_0x11ec60,_0x432d2b){var _0x3518ea=_0x151150||client;return _0x3518ea['request'](_0x49da13,_0x2f25c3)[_0x6ff7('0x1f')](function(_0x26421a){logger[_0x6ff7('0x20')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ee507,'request\x20sent');logger[_0x6ff7('0x21')](_0x6ff7('0x22'),_0x3ee507,'request\x20sent',JSON[_0x6ff7('0x23')](_0x26421a));if(_0x26421a['error']){if(_0x26421a[_0x6ff7('0x24')][_0x6ff7('0x25')]===0x1f4){logger[_0x6ff7('0x24')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ee507,_0x26421a[_0x6ff7('0x24')][_0x6ff7('0x26')]);return _0x432d2b(_0x26421a[_0x6ff7('0x24')][_0x6ff7('0x26')]);}logger[_0x6ff7('0x24')](_0x6ff7('0x27'),_0x3ee507,_0x26421a[_0x6ff7('0x24')][_0x6ff7('0x26')]);return _0x11ec60(_0x26421a[_0x6ff7('0x24')][_0x6ff7('0x26')]);}else{logger[_0x6ff7('0x20')](_0x6ff7('0x27'),_0x3ee507,'request\x20sent');_0x11ec60(_0x26421a['result'][_0x6ff7('0x26')]);}})[_0x6ff7('0x28')](function(_0x5d18b){logger[_0x6ff7('0x24')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ee507,_0x5d18b);_0x432d2b(_0x5d18b);});});}function respondWithStatusCode(_0x2fd7e8,_0x396055){_0x396055=_0x396055||0xcc;return function(_0x17901e){if(_0x17901e){return _0x2fd7e8[_0x6ff7('0x29')](_0x396055);}return _0x2fd7e8[_0x6ff7('0x2a')](_0x396055)[_0x6ff7('0x2b')]();};}function respondWithResult(_0x441677,_0x519cc9){_0x519cc9=_0x519cc9||0xc8;return function(_0x7cee87){if(_0x7cee87){return _0x441677['status'](_0x519cc9)['json'](_0x7cee87);}};}function respondWithFilteredResult(_0x55047b,_0x101faf){return function(_0x91c07e){if(_0x91c07e){var _0x533e86=_0x91c07e[_0x6ff7('0x2c')],_0x4d4aeb=_0x101faf[_0x6ff7('0x2d')],_0x401e08=_0x101faf[_0x6ff7('0x2d')]+_0x101faf[_0x6ff7('0x2e')],_0x4f0c98;if(_0x401e08>=_0x533e86){_0x401e08=_0x533e86;_0x4f0c98=0xc8;}else{_0x4f0c98=0xce;}_0x55047b[_0x6ff7('0x2a')](_0x4f0c98);return _0x55047b[_0x6ff7('0x2f')](_0x6ff7('0x30'),_0x4d4aeb+'-'+_0x401e08+'/'+_0x533e86)[_0x6ff7('0x31')](_0x91c07e);}return null;};}function patchUpdates(_0x1a97a7){return function(_0x5925c5){try{jsonpatch[_0x6ff7('0x32')](_0x5925c5,_0x1a97a7,!![]);}catch(_0x137026){return BPromise['reject'](_0x137026);}return _0x5925c5['save']();};}function saveUpdates(_0x12b5cc,_0x34d459){return function(_0x42b9de){if(_0x42b9de){return _0x42b9de[_0x6ff7('0x33')](_0x12b5cc)['then'](function(_0x258493){return _0x258493;});}return null;};}function removeEntity(_0x18dfb3,_0x1d4b57){return function(_0x29704a){if(_0x29704a){return _0x29704a[_0x6ff7('0x34')]()['then'](function(){_0x18dfb3['status'](0xcc)[_0x6ff7('0x2b')]();});}};}function handleEntityNotFound(_0x1d4c82,_0x4fde7d){return function(_0x55a589){if(!_0x55a589){_0x1d4c82[_0x6ff7('0x29')](0x194);}return _0x55a589;};}function handleError(_0x2c8a71,_0x2aec73){_0x2aec73=_0x2aec73||0x1f4;return function(_0x2d169a){logger[_0x6ff7('0x24')](_0x2d169a[_0x6ff7('0x35')]);if(_0x2d169a[_0x6ff7('0x36')]){delete _0x2d169a[_0x6ff7('0x36')];}_0x2c8a71['status'](_0x2aec73)[_0x6ff7('0x37')](_0x2d169a);};}exports['index']=function(_0x231954,_0x36f500){var _0x310115={},_0x445a45={},_0x1c5556={'count':0x0,'rows':[]};var _0x3d4bbc=_[_0x6ff7('0x38')](db[_0x6ff7('0x39')][_0x6ff7('0x3a')],function(_0x5bf55d){return{'name':_0x5bf55d[_0x6ff7('0x3b')],'type':_0x5bf55d[_0x6ff7('0x3c')]['key']};});_0x445a45[_0x6ff7('0x3d')]=_[_0x6ff7('0x38')](_0x3d4bbc,_0x6ff7('0x36'));_0x445a45[_0x6ff7('0x3e')]=_[_0x6ff7('0x3f')](_0x231954[_0x6ff7('0x3e')]);_0x445a45['filters']=_[_0x6ff7('0x40')](_0x445a45[_0x6ff7('0x3d')],_0x445a45[_0x6ff7('0x3e')]);_0x310115[_0x6ff7('0x41')]=_['intersection'](_0x445a45[_0x6ff7('0x3d')],qs[_0x6ff7('0x42')](_0x231954[_0x6ff7('0x3e')]['fields']));_0x310115['attributes']=_0x310115[_0x6ff7('0x41')]['length']?_0x310115[_0x6ff7('0x41')]:_0x445a45[_0x6ff7('0x3d')];if(!_0x231954[_0x6ff7('0x3e')]['hasOwnProperty'](_0x6ff7('0x43'))){_0x310115['limit']=qs[_0x6ff7('0x2e')](_0x231954[_0x6ff7('0x3e')][_0x6ff7('0x2e')]);_0x310115[_0x6ff7('0x2d')]=qs[_0x6ff7('0x2d')](_0x231954[_0x6ff7('0x3e')][_0x6ff7('0x2d')]);}_0x310115[_0x6ff7('0x44')]=qs['sort'](_0x231954['query']['sort']);_0x310115['where']=qs[_0x6ff7('0x45')](_[_0x6ff7('0x46')](_0x231954[_0x6ff7('0x3e')],_0x445a45[_0x6ff7('0x45')]),_0x3d4bbc);if(_0x231954['query'][_0x6ff7('0x47')]){_0x310115[_0x6ff7('0x48')]=_[_0x6ff7('0x49')](_0x310115[_0x6ff7('0x48')],{'$or':_[_0x6ff7('0x38')](_0x3d4bbc,function(_0x198f89){if(_0x198f89[_0x6ff7('0x3c')]!==_0x6ff7('0x4a')){var _0xea9a31={};_0xea9a31[_0x198f89[_0x6ff7('0x36')]]={'$like':'%'+_0x231954[_0x6ff7('0x3e')][_0x6ff7('0x47')]+'%'};return _0xea9a31;}})});}_0x310115=_[_0x6ff7('0x49')]({},_0x310115,_0x231954['options']);var _0x1569ce={'where':_0x310115[_0x6ff7('0x48')]};return db[_0x6ff7('0x39')][_0x6ff7('0x2c')](_0x1569ce)['then'](function(_0x1000ef){_0x1c5556['count']=_0x1000ef;if(_0x231954[_0x6ff7('0x3e')][_0x6ff7('0x4b')]){_0x310115['include']=[{'all':!![]}];}return db[_0x6ff7('0x39')]['findAll'](_0x310115);})[_0x6ff7('0x1f')](function(_0x7d403a){_0x1c5556[_0x6ff7('0x4c')]=_0x7d403a;return _0x1c5556;})['then'](respondWithFilteredResult(_0x36f500,_0x310115))['catch'](handleError(_0x36f500,null));};exports[_0x6ff7('0x4d')]=function(_0xa4b428,_0x3c3b54){var _0xb0378b={'raw':![],'where':{'id':_0xa4b428[_0x6ff7('0x4e')]['id']}},_0x9bc11a={};_0x9bc11a[_0x6ff7('0x3d')]=_[_0x6ff7('0x3f')](db['FreshdeskAccount'][_0x6ff7('0x3a')]);_0x9bc11a['query']=_[_0x6ff7('0x3f')](_0xa4b428['query']);_0x9bc11a[_0x6ff7('0x45')]=_[_0x6ff7('0x40')](_0x9bc11a['model'],_0x9bc11a['query']);_0xb0378b[_0x6ff7('0x41')]=_[_0x6ff7('0x40')](_0x9bc11a[_0x6ff7('0x3d')],qs[_0x6ff7('0x42')](_0xa4b428[_0x6ff7('0x3e')][_0x6ff7('0x42')]));_0xb0378b[_0x6ff7('0x41')]=_0xb0378b[_0x6ff7('0x41')][_0x6ff7('0x4f')]?_0xb0378b[_0x6ff7('0x41')]:_0x9bc11a[_0x6ff7('0x3d')];if(_0xa4b428[_0x6ff7('0x3e')][_0x6ff7('0x4b')]){_0xb0378b[_0x6ff7('0x50')]=[{'all':!![]}];}_0xb0378b=_[_0x6ff7('0x49')]({},_0xb0378b,_0xa4b428[_0x6ff7('0x51')]);return db[_0x6ff7('0x39')][_0x6ff7('0x52')](_0xb0378b)[_0x6ff7('0x1f')](handleEntityNotFound(_0x3c3b54,null))[_0x6ff7('0x1f')](respondWithResult(_0x3c3b54,null))['catch'](handleError(_0x3c3b54,null));};exports[_0x6ff7('0x53')]=function(_0x3120a5,_0x360425){return db[_0x6ff7('0x39')][_0x6ff7('0x53')](_0x3120a5['body'],{})[_0x6ff7('0x1f')](respondWithResult(_0x360425,0xc9))[_0x6ff7('0x28')](handleError(_0x360425,null));};exports[_0x6ff7('0x33')]=function(_0x517870,_0x255bda){if(_0x517870[_0x6ff7('0x54')]['id']){delete _0x517870[_0x6ff7('0x54')]['id'];}return db[_0x6ff7('0x39')][_0x6ff7('0x52')]({'where':{'id':_0x517870[_0x6ff7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x255bda,null))[_0x6ff7('0x1f')](saveUpdates(_0x517870[_0x6ff7('0x54')],null))[_0x6ff7('0x1f')](respondWithResult(_0x255bda,null))[_0x6ff7('0x28')](handleError(_0x255bda,null));};exports[_0x6ff7('0x34')]=function(_0x25ef65,_0x32f6b4){return db['FreshdeskAccount']['find']({'where':{'id':_0x25ef65[_0x6ff7('0x4e')]['id']}})[_0x6ff7('0x1f')](handleEntityNotFound(_0x32f6b4,null))[_0x6ff7('0x1f')](removeEntity(_0x32f6b4,null))['catch'](handleError(_0x32f6b4,null));};exports[_0x6ff7('0x55')]=function(_0x127288,_0x37c7dd,_0x4bda6e){var _0x49fc43={};var _0x224ee2={};var _0x35e228;var _0x5a268a;return db[_0x6ff7('0x39')][_0x6ff7('0x56')]({'where':{'id':_0x127288[_0x6ff7('0x4e')]['id']}})[_0x6ff7('0x1f')](handleEntityNotFound(_0x37c7dd,null))[_0x6ff7('0x1f')](function(_0x2adbf0){if(_0x2adbf0){_0x35e228=_0x2adbf0;_0x224ee2[_0x6ff7('0x3d')]=_['keys'](db[_0x6ff7('0x57')][_0x6ff7('0x3a')]);_0x224ee2[_0x6ff7('0x3e')]=_[_0x6ff7('0x3f')](_0x127288['query']);_0x224ee2[_0x6ff7('0x45')]=_[_0x6ff7('0x40')](_0x224ee2[_0x6ff7('0x3d')],_0x224ee2[_0x6ff7('0x3e')]);_0x49fc43[_0x6ff7('0x41')]=_[_0x6ff7('0x40')](_0x224ee2['model'],qs[_0x6ff7('0x42')](_0x127288[_0x6ff7('0x3e')]['fields']));_0x49fc43['attributes']=_0x49fc43['attributes'][_0x6ff7('0x4f')]?_0x49fc43[_0x6ff7('0x41')]:_0x224ee2[_0x6ff7('0x3d')];_0x49fc43[_0x6ff7('0x44')]=qs[_0x6ff7('0x58')](_0x127288[_0x6ff7('0x3e')][_0x6ff7('0x58')]);_0x49fc43['where']=qs[_0x6ff7('0x45')](_[_0x6ff7('0x46')](_0x127288[_0x6ff7('0x3e')],_0x224ee2[_0x6ff7('0x45')]));if(_0x127288[_0x6ff7('0x3e')]['filter']){_0x49fc43[_0x6ff7('0x48')]=_[_0x6ff7('0x49')](_0x49fc43[_0x6ff7('0x48')],{'$or':_[_0x6ff7('0x38')](_0x49fc43[_0x6ff7('0x41')],function(_0x38652c){var _0x54303d={};_0x54303d[_0x38652c]={'$like':'%'+_0x127288['query'][_0x6ff7('0x47')]+'%'};return _0x54303d;})});}_0x49fc43=_[_0x6ff7('0x49')]({},_0x49fc43,_0x127288[_0x6ff7('0x51')]);return _0x35e228[_0x6ff7('0x55')](_0x49fc43);}})[_0x6ff7('0x1f')](function(_0x4158e7){if(_0x4158e7){_0x5a268a=_0x4158e7[_0x6ff7('0x4f')];if(!_0x127288[_0x6ff7('0x3e')]['hasOwnProperty'](_0x6ff7('0x43'))){_0x49fc43[_0x6ff7('0x2e')]=qs[_0x6ff7('0x2e')](_0x127288['query'][_0x6ff7('0x2e')]);_0x49fc43[_0x6ff7('0x2d')]=qs[_0x6ff7('0x2d')](_0x127288[_0x6ff7('0x3e')]['offset']);}return _0x35e228[_0x6ff7('0x55')](_0x49fc43);}})[_0x6ff7('0x1f')](function(_0x12343f){if(_0x12343f){return _0x12343f?{'count':_0x5a268a,'rows':_0x12343f}:null;}})[_0x6ff7('0x1f')](respondWithResult(_0x37c7dd,null))[_0x6ff7('0x28')](handleError(_0x37c7dd,null));};exports[_0x6ff7('0x59')]=function(_0x3fbeb6,_0x2fc295,_0x344580){if(_0x3fbeb6[_0x6ff7('0x54')]['id']){delete _0x3fbeb6['body']['id'];}return db[_0x6ff7('0x39')]['findOne']({'where':{'id':_0x3fbeb6[_0x6ff7('0x4e')]['id']}})[_0x6ff7('0x1f')](handleEntityNotFound(_0x2fc295,null))[_0x6ff7('0x1f')](function(_0x2ad67c){if(_0x2ad67c){_0x3fbeb6[_0x6ff7('0x54')]['AccountId']=_0x2ad67c['id'];_0x3fbeb6[_0x6ff7('0x54')][_0x6ff7('0x5a')]=integrations[_0x6ff7('0x5b')](_0x3fbeb6[_0x6ff7('0x54')]['channel'],_0x3fbeb6[_0x6ff7('0x54')][_0x6ff7('0x3c')]);_0x3fbeb6[_0x6ff7('0x54')][_0x6ff7('0x5c')]=integrations[_0x6ff7('0x5d')](_0x3fbeb6['body'][_0x6ff7('0x5e')],_0x3fbeb6['body'][_0x6ff7('0x3c')]);return db[_0x6ff7('0x57')][_0x6ff7('0x53')](_0x3fbeb6['body'],{'include':[{'model':db[_0x6ff7('0x5f')],'as':_0x6ff7('0x5a')},{'model':db[_0x6ff7('0x5f')],'as':_0x6ff7('0x5c')}]});}return null;})['then'](respondWithResult(_0x2fc295,null))[_0x6ff7('0x28')](handleError(_0x2fc295,null));};exports[_0x6ff7('0x60')]=function(_0x2e042d,_0x4d7a83,_0x2adaa4){var _0x13a015='';return db[_0x6ff7('0x39')]['findOne']({'where':{'id':_0x2e042d['params']['id']},'attributes':['id',_0x6ff7('0x61'),'apiKey']})[_0x6ff7('0x1f')](handleEntityNotFound(_0x4d7a83,null))[_0x6ff7('0x1f')](function(_0x38550a){if(_0x38550a){_0x13a015=_0x38550a['remoteUri'];var _0xa7bbe8=_0x13a015['slice'](-0x1);if(_0xa7bbe8==='/'){_0x13a015=_0x13a015[_0x6ff7('0x62')](0x0,_0x13a015['lastIndexOf'](_0xa7bbe8));}return rp({'method':_0x6ff7('0x63'),'uri':util['format']('%s/%s',_0x13a015,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x6ff7('0x64')]('Basic\x20%s',new Buffer(util[_0x6ff7('0x64')](_0x6ff7('0x65'),_0x38550a['apiKey']))['toString']('base64'))},'json':!![]});}})[_0x6ff7('0x1f')](function(_0x2e6e0f){if(_0x2e6e0f){var _0x243c02=[_0x6ff7('0x66'),_0x6ff7('0x67'),'agent','description','status',_0x6ff7('0x68'),_0x6ff7('0x69'),_0x6ff7('0x6a'),'ticket_type',_0x6ff7('0x69'),_0x6ff7('0x6b')];_['remove'](_0x2e6e0f,function(_0x2daff2){return _0x243c02[_0x6ff7('0x6c')](_0x2daff2['name'])||!_0x2daff2[_0x6ff7('0x6d')]&&_0x2daff2[_0x6ff7('0x3c')]!=='custom_text'&&_0x2daff2[_0x6ff7('0x3c')]!==_0x6ff7('0x6e');});return{'count':_0x2e6e0f[_0x6ff7('0x4f')],'rows':_['map'](_0x2e6e0f,function(_0x35005b){return{'id':_0x35005b[_0x6ff7('0x36')],'name':_0x35005b[_0x6ff7('0x6f')],'custom':!_0x35005b[_0x6ff7('0x6d')],'options':_0x35005b[_0x6ff7('0x70')]?_[_0x6ff7('0x38')](_0x35005b[_0x6ff7('0x70')],function(_0x1a56aa){return{'name':_[_0x6ff7('0x71')](_0x1a56aa),'value':_0x1a56aa};}):[]};})};}})[_0x6ff7('0x1f')](respondWithResult(_0x4d7a83,null))[_0x6ff7('0x28')](function(_0x62fb21){var _0x288eec=_0x2e042d[_0x6ff7('0x3e')][_0x6ff7('0x72')]?0x1f4:_0x62fb21[_0x6ff7('0x73')]||0x1f4;logger[_0x6ff7('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0x6ff7('0x60'),_0x288eec,JSON['stringify'](_0x62fb21));delete _0x62fb21['name'];if(_0x288eec===0x191){_0x288eec=0x190;}_0x4d7a83[_0x6ff7('0x2a')](_0x288eec)[_0x6ff7('0x37')](_0x2e042d['query']['test']?{'message':_0x6ff7('0x74'),'statusCode':_0x62fb21[_0x6ff7('0x73')]}:_0x62fb21);});};