77e8afb3563309e91f4d864403e7d40ddf5af82b
[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 _0xd52a=['offset','undefined','count','set','apply','reject','save','then','stack','name','send','index','map','FreshdeskAccount','rawAttributes','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','create','body','update','find','destroy','getConfigurations','FreshdeskConfiguration','addConfiguration','findOne','AccountId','Subjects','Descriptions','getDescriptions','channel','type','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','GET','format','%s/%s','Basic\x20%s','%s:X','toString','base64','subject','agent','description','priority','group','source','ticket_type','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','lodash','crypto','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json'];(function(_0x45bb30,_0x29ac8d){var _0xf59ed9=function(_0xd4955a){while(--_0xd4955a){_0x45bb30['push'](_0x45bb30['shift']());}};_0xf59ed9(++_0x29ac8d);}(_0xd52a,0xca));var _0xad52=function(_0x53832c,_0x475086){_0x53832c=_0x53832c-0x0;var _0x274cc5=_0xd52a[_0x53832c];return _0x274cc5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xad52('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xad52('0x1'));var rp=require(_0xad52('0x2'));var moment=require(_0xad52('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xad52('0x4'));var util=require(_0xad52('0x5'));var path=require(_0xad52('0x6'));var sox=require(_0xad52('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xad52('0x8'));var squel=require('squel');var crypto=require(_0xad52('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xad52('0xa'));var toCsv=require(_0xad52('0xb'));var querystring=require('querystring');var Papa=require(_0xad52('0xc'));var Redis=require('ioredis');var authService=require(_0xad52('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xad52('0xe'));var hardwareService=require(_0xad52('0xf'));var logger=require(_0xad52('0x10'))(_0xad52('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xad52('0x12'))['db'];var integrations=require(_0xad52('0x13'));function respondWithStatusCode(_0x378b0c,_0x41331e){_0x41331e=_0x41331e||0xcc;return function(_0x11127c){if(_0x11127c){return _0x378b0c[_0xad52('0x14')](_0x41331e);}return _0x378b0c[_0xad52('0x15')](_0x41331e)[_0xad52('0x16')]();};}function respondWithResult(_0x3d2df6,_0x5727a2){_0x5727a2=_0x5727a2||0xc8;return function(_0x330794){if(_0x330794){return _0x3d2df6[_0xad52('0x15')](_0x5727a2)[_0xad52('0x17')](_0x330794);}};}function respondWithFilteredResult(_0x42eb20,_0x38be7e){return function(_0xcb6cd5){if(_0xcb6cd5){var _0x2bbaad=typeof _0x38be7e[_0xad52('0x18')]===_0xad52('0x19')&&typeof _0x38be7e['limit']==='undefined';var _0x2f8ac5=_0xcb6cd5[_0xad52('0x1a')];var _0x351440=_0x2bbaad?0x0:_0x38be7e[_0xad52('0x18')];var _0x33da89=_0x2bbaad?_0xcb6cd5['count']:_0x38be7e[_0xad52('0x18')]+_0x38be7e['limit'];var _0x164ffd;if(_0x33da89>=_0x2f8ac5){_0x33da89=_0x2f8ac5;_0x164ffd=0xc8;}else{_0x164ffd=0xce;}_0x42eb20[_0xad52('0x15')](_0x164ffd);return _0x42eb20[_0xad52('0x1b')]('Content-Range',_0x351440+'-'+_0x33da89+'/'+_0x2f8ac5)[_0xad52('0x17')](_0xcb6cd5);}return null;};}function patchUpdates(_0x593dfd){return function(_0x1bc745){try{jsonpatch[_0xad52('0x1c')](_0x1bc745,_0x593dfd,!![]);}catch(_0x3262e4){return BPromise[_0xad52('0x1d')](_0x3262e4);}return _0x1bc745[_0xad52('0x1e')]();};}function saveUpdates(_0x2f1526,_0x4b5f2f){return function(_0x7de59d){if(_0x7de59d){return _0x7de59d['update'](_0x2f1526)[_0xad52('0x1f')](function(_0x2acbb4){return _0x2acbb4;});}return null;};}function removeEntity(_0x2fa90c,_0x5bce67){return function(_0x379f53){if(_0x379f53){return _0x379f53['destroy']()['then'](function(){_0x2fa90c[_0xad52('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x477b47,_0x3a54a1){return function(_0x537df0){if(!_0x537df0){_0x477b47['sendStatus'](0x194);}return _0x537df0;};}function handleError(_0xb526bf,_0x31b5e0){_0x31b5e0=_0x31b5e0||0x1f4;return function(_0x42db69){logger['error'](_0x42db69[_0xad52('0x20')]);if(_0x42db69['name']){delete _0x42db69[_0xad52('0x21')];}_0xb526bf[_0xad52('0x15')](_0x31b5e0)[_0xad52('0x22')](_0x42db69);};}exports[_0xad52('0x23')]=function(_0x503bd0,_0x426106){var _0x2a604c={},_0x534cc5={},_0x3f5757={'count':0x0,'rows':[]};var _0x3a0fd6=_[_0xad52('0x24')](db[_0xad52('0x25')][_0xad52('0x26')],function(_0x558f90){return{'name':_0x558f90['fieldName'],'type':_0x558f90['type'][_0xad52('0x27')]};});_0x534cc5[_0xad52('0x28')]=_[_0xad52('0x24')](_0x3a0fd6,'name');_0x534cc5['query']=_[_0xad52('0x29')](_0x503bd0[_0xad52('0x2a')]);_0x534cc5[_0xad52('0x2b')]=_[_0xad52('0x2c')](_0x534cc5[_0xad52('0x28')],_0x534cc5[_0xad52('0x2a')]);_0x2a604c['attributes']=_[_0xad52('0x2c')](_0x534cc5[_0xad52('0x28')],qs[_0xad52('0x2d')](_0x503bd0[_0xad52('0x2a')][_0xad52('0x2d')]));_0x2a604c[_0xad52('0x2e')]=_0x2a604c[_0xad52('0x2e')][_0xad52('0x2f')]?_0x2a604c[_0xad52('0x2e')]:_0x534cc5[_0xad52('0x28')];if(!_0x503bd0[_0xad52('0x2a')]['hasOwnProperty'](_0xad52('0x30'))){_0x2a604c[_0xad52('0x31')]=qs[_0xad52('0x31')](_0x503bd0[_0xad52('0x2a')][_0xad52('0x31')]);_0x2a604c[_0xad52('0x18')]=qs['offset'](_0x503bd0[_0xad52('0x2a')][_0xad52('0x18')]);}_0x2a604c[_0xad52('0x32')]=qs['sort'](_0x503bd0[_0xad52('0x2a')][_0xad52('0x33')]);_0x2a604c[_0xad52('0x34')]=qs['filters'](_[_0xad52('0x35')](_0x503bd0[_0xad52('0x2a')],_0x534cc5[_0xad52('0x2b')]),_0x3a0fd6);if(_0x503bd0['query'][_0xad52('0x36')]){_0x2a604c[_0xad52('0x34')]=_[_0xad52('0x37')](_0x2a604c[_0xad52('0x34')],{'$or':_[_0xad52('0x24')](_0x3a0fd6,function(_0x2dc1f2){if(_0x2dc1f2['type']!==_0xad52('0x38')){var _0x5775b4={};_0x5775b4[_0x2dc1f2[_0xad52('0x21')]]={'$like':'%'+_0x503bd0[_0xad52('0x2a')][_0xad52('0x36')]+'%'};return _0x5775b4;}})});}_0x2a604c=_[_0xad52('0x37')]({},_0x2a604c,_0x503bd0[_0xad52('0x39')]);var _0x4aa1d1={'where':_0x2a604c[_0xad52('0x34')]};return db[_0xad52('0x25')][_0xad52('0x1a')](_0x4aa1d1)['then'](function(_0x23faff){_0x3f5757[_0xad52('0x1a')]=_0x23faff;if(_0x503bd0[_0xad52('0x2a')]['includeAll']){_0x2a604c[_0xad52('0x3a')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0xad52('0x3b')](_0x2a604c);})[_0xad52('0x1f')](function(_0x272907){_0x3f5757[_0xad52('0x3c')]=_0x272907;return _0x3f5757;})['then'](respondWithFilteredResult(_0x426106,_0x2a604c))[_0xad52('0x3d')](handleError(_0x426106,null));};exports[_0xad52('0x3e')]=function(_0x249724,_0x2bd94a){var _0x3886ec={'raw':![],'where':{'id':_0x249724[_0xad52('0x3f')]['id']}},_0x44a56b={};_0x44a56b[_0xad52('0x28')]=_['keys'](db[_0xad52('0x25')]['rawAttributes']);_0x44a56b[_0xad52('0x2a')]=_[_0xad52('0x29')](_0x249724[_0xad52('0x2a')]);_0x44a56b[_0xad52('0x2b')]=_[_0xad52('0x2c')](_0x44a56b[_0xad52('0x28')],_0x44a56b[_0xad52('0x2a')]);_0x3886ec[_0xad52('0x2e')]=_[_0xad52('0x2c')](_0x44a56b[_0xad52('0x28')],qs[_0xad52('0x2d')](_0x249724[_0xad52('0x2a')][_0xad52('0x2d')]));_0x3886ec[_0xad52('0x2e')]=_0x3886ec[_0xad52('0x2e')][_0xad52('0x2f')]?_0x3886ec[_0xad52('0x2e')]:_0x44a56b[_0xad52('0x28')];if(_0x249724[_0xad52('0x2a')][_0xad52('0x40')]){_0x3886ec['include']=[{'all':!![]}];}_0x3886ec=_[_0xad52('0x37')]({},_0x3886ec,_0x249724[_0xad52('0x39')]);return db[_0xad52('0x25')]['find'](_0x3886ec)[_0xad52('0x1f')](handleEntityNotFound(_0x2bd94a,null))['then'](respondWithResult(_0x2bd94a,null))[_0xad52('0x3d')](handleError(_0x2bd94a,null));};exports['create']=function(_0x4cf477,_0x35eaac){return db[_0xad52('0x25')][_0xad52('0x41')](_0x4cf477[_0xad52('0x42')],{})['then'](respondWithResult(_0x35eaac,0xc9))['catch'](handleError(_0x35eaac,null));};exports[_0xad52('0x43')]=function(_0x5dede4,_0x207096){if(_0x5dede4['body']['id']){delete _0x5dede4[_0xad52('0x42')]['id'];}return db[_0xad52('0x25')][_0xad52('0x44')]({'where':{'id':_0x5dede4[_0xad52('0x3f')]['id']}})[_0xad52('0x1f')](handleEntityNotFound(_0x207096,null))[_0xad52('0x1f')](saveUpdates(_0x5dede4['body'],null))[_0xad52('0x1f')](respondWithResult(_0x207096,null))[_0xad52('0x3d')](handleError(_0x207096,null));};exports[_0xad52('0x45')]=function(_0xb3a238,_0x4ab950){return db[_0xad52('0x25')][_0xad52('0x44')]({'where':{'id':_0xb3a238[_0xad52('0x3f')]['id']}})['then'](handleEntityNotFound(_0x4ab950,null))[_0xad52('0x1f')](removeEntity(_0x4ab950,null))[_0xad52('0x3d')](handleError(_0x4ab950,null));};exports[_0xad52('0x46')]=function(_0xe9baec,_0x4a35ef,_0x32a6c3){var _0x36d038={};var _0x15533a={};var _0x35d509;var _0x197fac;return db['FreshdeskAccount']['findOne']({'where':{'id':_0xe9baec[_0xad52('0x3f')]['id']}})[_0xad52('0x1f')](handleEntityNotFound(_0x4a35ef,null))[_0xad52('0x1f')](function(_0x93114f){if(_0x93114f){_0x35d509=_0x93114f;_0x15533a[_0xad52('0x28')]=_['keys'](db[_0xad52('0x47')]['rawAttributes']);_0x15533a[_0xad52('0x2a')]=_[_0xad52('0x29')](_0xe9baec[_0xad52('0x2a')]);_0x15533a['filters']=_[_0xad52('0x2c')](_0x15533a['model'],_0x15533a[_0xad52('0x2a')]);_0x36d038[_0xad52('0x2e')]=_[_0xad52('0x2c')](_0x15533a['model'],qs['fields'](_0xe9baec[_0xad52('0x2a')]['fields']));_0x36d038[_0xad52('0x2e')]=_0x36d038[_0xad52('0x2e')]['length']?_0x36d038[_0xad52('0x2e')]:_0x15533a['model'];_0x36d038[_0xad52('0x32')]=qs[_0xad52('0x33')](_0xe9baec[_0xad52('0x2a')][_0xad52('0x33')]);_0x36d038['where']=qs['filters'](_[_0xad52('0x35')](_0xe9baec[_0xad52('0x2a')],_0x15533a['filters']));if(_0xe9baec[_0xad52('0x2a')][_0xad52('0x36')]){_0x36d038[_0xad52('0x34')]=_[_0xad52('0x37')](_0x36d038['where'],{'$or':_[_0xad52('0x24')](_0x36d038[_0xad52('0x2e')],function(_0x40b3e9){var _0x4082d7={};_0x4082d7[_0x40b3e9]={'$like':'%'+_0xe9baec[_0xad52('0x2a')][_0xad52('0x36')]+'%'};return _0x4082d7;})});}_0x36d038=_[_0xad52('0x37')]({},_0x36d038,_0xe9baec[_0xad52('0x39')]);return _0x35d509['getConfigurations'](_0x36d038);}})['then'](function(_0x1778fa){if(_0x1778fa){_0x197fac=_0x1778fa[_0xad52('0x2f')];if(!_0xe9baec[_0xad52('0x2a')]['hasOwnProperty'](_0xad52('0x30'))){_0x36d038[_0xad52('0x31')]=qs[_0xad52('0x31')](_0xe9baec['query'][_0xad52('0x31')]);_0x36d038['offset']=qs[_0xad52('0x18')](_0xe9baec['query']['offset']);}return _0x35d509[_0xad52('0x46')](_0x36d038);}})[_0xad52('0x1f')](function(_0x4fbc36){if(_0x4fbc36){return _0x4fbc36?{'count':_0x197fac,'rows':_0x4fbc36}:null;}})['then'](respondWithResult(_0x4a35ef,null))['catch'](handleError(_0x4a35ef,null));};exports[_0xad52('0x48')]=function(_0x46039d,_0x482f93,_0x42d855){if(_0x46039d[_0xad52('0x42')]['id']){delete _0x46039d[_0xad52('0x42')]['id'];}return db['FreshdeskAccount'][_0xad52('0x49')]({'where':{'id':_0x46039d[_0xad52('0x3f')]['id']}})[_0xad52('0x1f')](handleEntityNotFound(_0x482f93,null))['then'](function(_0x551aa6){if(_0x551aa6){_0x46039d[_0xad52('0x42')][_0xad52('0x4a')]=_0x551aa6['id'];_0x46039d[_0xad52('0x42')][_0xad52('0x4b')]=integrations['getSubjects'](_0x46039d[_0xad52('0x42')]['channel'],_0x46039d[_0xad52('0x42')]['type']);_0x46039d[_0xad52('0x42')][_0xad52('0x4c')]=integrations[_0xad52('0x4d')](_0x46039d[_0xad52('0x42')][_0xad52('0x4e')],_0x46039d[_0xad52('0x42')][_0xad52('0x4f')]);return db[_0xad52('0x47')][_0xad52('0x41')](_0x46039d[_0xad52('0x42')],{'include':[{'model':db[_0xad52('0x50')],'as':'Subjects'},{'model':db['FreshdeskField'],'as':_0xad52('0x4c')}]});}return null;})['then'](respondWithResult(_0x482f93,null))[_0xad52('0x3d')](handleError(_0x482f93,null));};exports[_0xad52('0x51')]=function(_0x2b4d14,_0x500058,_0x3b865f){var _0x55b17b='';return db['FreshdeskAccount'][_0xad52('0x49')]({'where':{'id':_0x2b4d14[_0xad52('0x3f')]['id']},'attributes':['id',_0xad52('0x52'),_0xad52('0x53')]})[_0xad52('0x1f')](handleEntityNotFound(_0x500058,null))['then'](function(_0x290f9a){if(_0x290f9a){_0x55b17b=_0x290f9a['remoteUri'];var _0x2d160e=_0x55b17b[_0xad52('0x54')](-0x1);if(_0x2d160e==='/'){_0x55b17b=_0x55b17b['substring'](0x0,_0x55b17b[_0xad52('0x55')](_0x2d160e));}return rp({'method':_0xad52('0x56'),'uri':util[_0xad52('0x57')](_0xad52('0x58'),_0x55b17b,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xad52('0x57')](_0xad52('0x59'),new Buffer(util[_0xad52('0x57')](_0xad52('0x5a'),_0x290f9a[_0xad52('0x53')]))[_0xad52('0x5b')](_0xad52('0x5c')))},'json':!![]});}})[_0xad52('0x1f')](function(_0x3bc927){if(_0x3bc927){var _0x31422e=['requester',_0xad52('0x5d'),_0xad52('0x5e'),_0xad52('0x5f'),'status',_0xad52('0x60'),_0xad52('0x61'),_0xad52('0x62'),_0xad52('0x63'),_0xad52('0x61'),_0xad52('0x64')];_[_0xad52('0x65')](_0x3bc927,function(_0x233404){return _0x31422e[_0xad52('0x66')](_0x233404[_0xad52('0x21')])||!_0x233404[_0xad52('0x67')]&&_0x233404[_0xad52('0x4f')]!==_0xad52('0x68')&&_0x233404[_0xad52('0x4f')]!==_0xad52('0x69');});return{'count':_0x3bc927[_0xad52('0x2f')],'rows':_['map'](_0x3bc927,function(_0x13c1e0){return{'id':_0x13c1e0[_0xad52('0x21')],'name':_0x13c1e0[_0xad52('0x6a')],'custom':!_0x13c1e0[_0xad52('0x67')],'options':_0x13c1e0[_0xad52('0x6b')]?_[_0xad52('0x24')](_0x13c1e0[_0xad52('0x6b')],function(_0x236261){return{'name':_[_0xad52('0x6c')](_0x236261),'value':_0x236261};}):[]};})};}})[_0xad52('0x1f')](respondWithResult(_0x500058,null))['catch'](function(_0x461e3a){var _0x14e0de=_0x2b4d14[_0xad52('0x2a')][_0xad52('0x6d')]?0x1f4:_0x461e3a[_0xad52('0x6e')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x14e0de,JSON[_0xad52('0x6f')](_0x461e3a));delete _0x461e3a['name'];if(_0x14e0de===0x191){_0x14e0de=0x190;}_0x500058[_0xad52('0x15')](_0x14e0de)['send'](_0x2b4d14['query'][_0xad52('0x6d')]?{'message':_0xad52('0x70'),'statusCode':_0x461e3a[_0xad52('0x6e')]}:_0x461e3a);});};