92d226bbe8d61868ea93ab67934f3f1188b496e2
[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 _0x9957=['requester','subject','priority','group','source','ticket_type','remove','includes','default','custom_text','label','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','getFields','statusCode','html-pdf','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','request','then','info','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshdeskAccount,\x20%s,\x20%s','result','sendStatus','status','json','count','offset','limit','set','Content-Range','reject','save','destroy','stack','name','send','FreshdeskAccount','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','includeAll','include','rows','catch','show','params','keys','filtears','options','find','update','body','getConfigurations','findOne','FreshdeskConfiguration','order','filter','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','create','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64'];(function(_0x3a0815,_0x56051c){var _0x22ae4a=function(_0x1d41f5){while(--_0x1d41f5){_0x3a0815['push'](_0x3a0815['shift']());}};_0x22ae4a(++_0x56051c);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var pdf=require(_0x7995('0x0'));var emlformat=require(_0x7995('0x1'));var rimraf=require(_0x7995('0x2'));var zipdir=require(_0x7995('0x3'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7995('0x4'));var moment=require(_0x7995('0x5'));var BPromise=require(_0x7995('0x6'));var Mustache=require(_0x7995('0x7'));var util=require('util');var path=require(_0x7995('0x8'));var sox=require(_0x7995('0x9'));var csv=require(_0x7995('0xa'));var ejs=require(_0x7995('0xb'));var fs=require('fs');var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];var integrations=require(_0x7995('0x1b'));var jayson=require(_0x7995('0x1c'));var client=jayson[_0x7995('0x1d')][_0x7995('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x2bbe7a,_0x4cc004,_0x58f5ad,_0x2b4e94){return new BPromise(function(_0x2233dd,_0x24b5bb){var _0x321ae8=_0x2b4e94||client;return _0x321ae8[_0x7995('0x1f')](_0x2bbe7a,_0x58f5ad)[_0x7995('0x20')](function(_0x2202ce){logger[_0x7995('0x21')]('FreshdeskAccount,\x20%s,\x20%s',_0x4cc004,_0x7995('0x22'));logger['debug'](_0x7995('0x23'),_0x4cc004,_0x7995('0x22'),JSON[_0x7995('0x24')](_0x2202ce));if(_0x2202ce[_0x7995('0x25')]){if(_0x2202ce[_0x7995('0x25')][_0x7995('0x26')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x4cc004,_0x2202ce[_0x7995('0x25')]['message']);return _0x24b5bb(_0x2202ce['error'][_0x7995('0x27')]);}logger[_0x7995('0x25')]('FreshdeskAccount,\x20%s,\x20%s',_0x4cc004,_0x2202ce[_0x7995('0x25')]['message']);return _0x2233dd(_0x2202ce['error'][_0x7995('0x27')]);}else{logger[_0x7995('0x21')](_0x7995('0x28'),_0x4cc004,_0x7995('0x22'));_0x2233dd(_0x2202ce[_0x7995('0x29')][_0x7995('0x27')]);}})['catch'](function(_0x32a09a){logger[_0x7995('0x25')](_0x7995('0x28'),_0x4cc004,_0x32a09a);_0x24b5bb(_0x32a09a);});});}function respondWithStatusCode(_0x285437,_0x563799){_0x563799=_0x563799||0xcc;return function(_0x13bc35){if(_0x13bc35){return _0x285437[_0x7995('0x2a')](_0x563799);}return _0x285437[_0x7995('0x2b')](_0x563799)['end']();};}function respondWithResult(_0x39df42,_0x34e70c){_0x34e70c=_0x34e70c||0xc8;return function(_0x401dc3){if(_0x401dc3){return _0x39df42[_0x7995('0x2b')](_0x34e70c)[_0x7995('0x2c')](_0x401dc3);}};}function respondWithFilteredResult(_0x2a307e,_0x56691a){return function(_0x47625f){if(_0x47625f){var _0x5911c3=_0x47625f[_0x7995('0x2d')],_0x229742=_0x56691a[_0x7995('0x2e')],_0x49bc7e=_0x56691a['offset']+_0x56691a[_0x7995('0x2f')],_0xf16cc2;if(_0x49bc7e>=_0x5911c3){_0x49bc7e=_0x5911c3;_0xf16cc2=0xc8;}else{_0xf16cc2=0xce;}_0x2a307e['status'](_0xf16cc2);return _0x2a307e[_0x7995('0x30')](_0x7995('0x31'),_0x229742+'-'+_0x49bc7e+'/'+_0x5911c3)[_0x7995('0x2c')](_0x47625f);}return null;};}function patchUpdates(_0x574574){return function(_0x530611){try{jsonpatch['apply'](_0x530611,_0x574574,!![]);}catch(_0x3573be){return BPromise[_0x7995('0x32')](_0x3573be);}return _0x530611[_0x7995('0x33')]();};}function saveUpdates(_0x2b874d,_0x2e3493){return function(_0x1ca460){if(_0x1ca460){return _0x1ca460['update'](_0x2b874d)['then'](function(_0xfa8f15){return _0xfa8f15;});}return null;};}function removeEntity(_0x5524af,_0x553671){return function(_0x3eb566){if(_0x3eb566){return _0x3eb566[_0x7995('0x34')]()[_0x7995('0x20')](function(){_0x5524af[_0x7995('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44309d,_0x33e24e){return function(_0x5dd802){if(!_0x5dd802){_0x44309d['sendStatus'](0x194);}return _0x5dd802;};}function handleError(_0x577412,_0x45bc5e){_0x45bc5e=_0x45bc5e||0x1f4;return function(_0x3acfc3){logger['error'](_0x3acfc3[_0x7995('0x35')]);if(_0x3acfc3['name']){delete _0x3acfc3[_0x7995('0x36')];}_0x577412[_0x7995('0x2b')](_0x45bc5e)[_0x7995('0x37')](_0x3acfc3);};}exports['index']=function(_0x52d76d,_0x36d057){var _0x5e67fe={},_0x5d2428={},_0x3e99cd={'count':0x0,'rows':[]};var _0xe328b1=_['map'](db[_0x7995('0x38')][_0x7995('0x39')],function(_0x2b772f){return{'name':_0x2b772f[_0x7995('0x3a')],'type':_0x2b772f[_0x7995('0x3b')]['key']};});_0x5d2428[_0x7995('0x3c')]=_[_0x7995('0x3d')](_0xe328b1,_0x7995('0x36'));_0x5d2428[_0x7995('0x3e')]=_['keys'](_0x52d76d[_0x7995('0x3e')]);_0x5d2428[_0x7995('0x3f')]=_[_0x7995('0x40')](_0x5d2428[_0x7995('0x3c')],_0x5d2428[_0x7995('0x3e')]);_0x5e67fe[_0x7995('0x41')]=_['intersection'](_0x5d2428[_0x7995('0x3c')],qs[_0x7995('0x42')](_0x52d76d[_0x7995('0x3e')][_0x7995('0x42')]));_0x5e67fe[_0x7995('0x41')]=_0x5e67fe[_0x7995('0x41')][_0x7995('0x43')]?_0x5e67fe[_0x7995('0x41')]:_0x5d2428[_0x7995('0x3c')];if(!_0x52d76d[_0x7995('0x3e')][_0x7995('0x44')](_0x7995('0x45'))){_0x5e67fe[_0x7995('0x2f')]=qs['limit'](_0x52d76d['query'][_0x7995('0x2f')]);_0x5e67fe[_0x7995('0x2e')]=qs['offset'](_0x52d76d['query'][_0x7995('0x2e')]);}_0x5e67fe['order']=qs['sort'](_0x52d76d[_0x7995('0x3e')][_0x7995('0x46')]);_0x5e67fe[_0x7995('0x47')]=qs['filters'](_[_0x7995('0x48')](_0x52d76d['query'],_0x5d2428[_0x7995('0x3f')]),_0xe328b1);if(_0x52d76d['query']['filter']){_0x5e67fe[_0x7995('0x47')]=_[_0x7995('0x49')](_0x5e67fe[_0x7995('0x47')],{'$or':_[_0x7995('0x3d')](_0xe328b1,function(_0x599ecb){if(_0x599ecb[_0x7995('0x3b')]!==_0x7995('0x4a')){var _0x31b347={};_0x31b347[_0x599ecb[_0x7995('0x36')]]={'$like':'%'+_0x52d76d['query']['filter']+'%'};return _0x31b347;}})});}_0x5e67fe=_[_0x7995('0x49')]({},_0x5e67fe,_0x52d76d['options']);var _0x23c41d={'where':_0x5e67fe['where']};return db[_0x7995('0x38')]['count'](_0x23c41d)[_0x7995('0x20')](function(_0x1b0373){_0x3e99cd['count']=_0x1b0373;if(_0x52d76d[_0x7995('0x3e')][_0x7995('0x4b')]){_0x5e67fe[_0x7995('0x4c')]=[{'all':!![]}];}return db[_0x7995('0x38')]['findAll'](_0x5e67fe);})[_0x7995('0x20')](function(_0x3e787d){_0x3e99cd[_0x7995('0x4d')]=_0x3e787d;return _0x3e99cd;})['then'](respondWithFilteredResult(_0x36d057,_0x5e67fe))[_0x7995('0x4e')](handleError(_0x36d057,null));};exports[_0x7995('0x4f')]=function(_0x511567,_0x3d8ae3){var _0x255313={'raw':![],'where':{'id':_0x511567[_0x7995('0x50')]['id']}},_0x51934b={};_0x51934b[_0x7995('0x3c')]=_['keys'](db[_0x7995('0x38')]['rawAttributes']);_0x51934b[_0x7995('0x3e')]=_[_0x7995('0x51')](_0x511567[_0x7995('0x3e')]);_0x51934b[_0x7995('0x52')]=_[_0x7995('0x40')](_0x51934b[_0x7995('0x3c')],_0x51934b[_0x7995('0x3e')]);_0x255313['attributes']=_[_0x7995('0x40')](_0x51934b[_0x7995('0x3c')],qs[_0x7995('0x42')](_0x511567['query'][_0x7995('0x42')]));_0x255313[_0x7995('0x41')]=_0x255313[_0x7995('0x41')]['length']?_0x255313['attributes']:_0x51934b['model'];if(_0x511567[_0x7995('0x3e')][_0x7995('0x4b')]){_0x255313['include']=[{'all':!![]}];}_0x255313=_[_0x7995('0x49')]({},_0x255313,_0x511567[_0x7995('0x53')]);return db[_0x7995('0x38')][_0x7995('0x54')](_0x255313)[_0x7995('0x20')](handleEntityNotFound(_0x3d8ae3,null))['then'](respondWithResult(_0x3d8ae3,null))[_0x7995('0x4e')](handleError(_0x3d8ae3,null));};exports['create']=function(_0x14fe7f,_0x33c801){return db[_0x7995('0x38')]['create'](_0x14fe7f['body'],{})['then'](respondWithResult(_0x33c801,0xc9))['catch'](handleError(_0x33c801,null));};exports[_0x7995('0x55')]=function(_0x3709de,_0x1a861c){if(_0x3709de[_0x7995('0x56')]['id']){delete _0x3709de[_0x7995('0x56')]['id'];}return db[_0x7995('0x38')][_0x7995('0x54')]({'where':{'id':_0x3709de[_0x7995('0x50')]['id']}})[_0x7995('0x20')](handleEntityNotFound(_0x1a861c,null))[_0x7995('0x20')](saveUpdates(_0x3709de[_0x7995('0x56')],null))[_0x7995('0x20')](respondWithResult(_0x1a861c,null))[_0x7995('0x4e')](handleError(_0x1a861c,null));};exports[_0x7995('0x34')]=function(_0x1ea1dc,_0x416133){return db[_0x7995('0x38')][_0x7995('0x54')]({'where':{'id':_0x1ea1dc[_0x7995('0x50')]['id']}})['then'](handleEntityNotFound(_0x416133,null))[_0x7995('0x20')](removeEntity(_0x416133,null))[_0x7995('0x4e')](handleError(_0x416133,null));};exports[_0x7995('0x57')]=function(_0x32c0d3,_0x5d160d,_0x53125a){var _0x402fa0={};var _0x197b52={};var _0x5b9467;var _0x332a85;return db['FreshdeskAccount'][_0x7995('0x58')]({'where':{'id':_0x32c0d3[_0x7995('0x50')]['id']}})[_0x7995('0x20')](handleEntityNotFound(_0x5d160d,null))[_0x7995('0x20')](function(_0x502d43){if(_0x502d43){_0x5b9467=_0x502d43;_0x197b52['model']=_[_0x7995('0x51')](db[_0x7995('0x59')][_0x7995('0x39')]);_0x197b52[_0x7995('0x3e')]=_[_0x7995('0x51')](_0x32c0d3[_0x7995('0x3e')]);_0x197b52[_0x7995('0x3f')]=_[_0x7995('0x40')](_0x197b52[_0x7995('0x3c')],_0x197b52['query']);_0x402fa0[_0x7995('0x41')]=_[_0x7995('0x40')](_0x197b52[_0x7995('0x3c')],qs[_0x7995('0x42')](_0x32c0d3['query']['fields']));_0x402fa0[_0x7995('0x41')]=_0x402fa0[_0x7995('0x41')]['length']?_0x402fa0[_0x7995('0x41')]:_0x197b52[_0x7995('0x3c')];_0x402fa0[_0x7995('0x5a')]=qs[_0x7995('0x46')](_0x32c0d3[_0x7995('0x3e')]['sort']);_0x402fa0[_0x7995('0x47')]=qs['filters'](_[_0x7995('0x48')](_0x32c0d3[_0x7995('0x3e')],_0x197b52[_0x7995('0x3f')]));if(_0x32c0d3[_0x7995('0x3e')][_0x7995('0x5b')]){_0x402fa0[_0x7995('0x47')]=_[_0x7995('0x49')](_0x402fa0[_0x7995('0x47')],{'$or':_[_0x7995('0x3d')](_0x402fa0[_0x7995('0x41')],function(_0x2618c4){var _0x234d8d={};_0x234d8d[_0x2618c4]={'$like':'%'+_0x32c0d3['query'][_0x7995('0x5b')]+'%'};return _0x234d8d;})});}_0x402fa0=_[_0x7995('0x49')]({},_0x402fa0,_0x32c0d3[_0x7995('0x53')]);return _0x5b9467[_0x7995('0x57')](_0x402fa0);}})[_0x7995('0x20')](function(_0x54a2e0){if(_0x54a2e0){_0x332a85=_0x54a2e0['length'];if(!_0x32c0d3[_0x7995('0x3e')][_0x7995('0x44')](_0x7995('0x45'))){_0x402fa0[_0x7995('0x2f')]=qs['limit'](_0x32c0d3[_0x7995('0x3e')]['limit']);_0x402fa0['offset']=qs[_0x7995('0x2e')](_0x32c0d3[_0x7995('0x3e')][_0x7995('0x2e')]);}return _0x5b9467[_0x7995('0x57')](_0x402fa0);}})[_0x7995('0x20')](function(_0x25d9a4){if(_0x25d9a4){return _0x25d9a4?{'count':_0x332a85,'rows':_0x25d9a4}:null;}})[_0x7995('0x20')](respondWithResult(_0x5d160d,null))[_0x7995('0x4e')](handleError(_0x5d160d,null));};exports[_0x7995('0x5c')]=function(_0x2466df,_0x560b0a,_0x2dc1f7){if(_0x2466df[_0x7995('0x56')]['id']){delete _0x2466df[_0x7995('0x56')]['id'];}return db['FreshdeskAccount'][_0x7995('0x58')]({'where':{'id':_0x2466df[_0x7995('0x50')]['id']}})[_0x7995('0x20')](handleEntityNotFound(_0x560b0a,null))[_0x7995('0x20')](function(_0x3b0d30){if(_0x3b0d30){_0x2466df[_0x7995('0x56')][_0x7995('0x5d')]=_0x3b0d30['id'];_0x2466df[_0x7995('0x56')][_0x7995('0x5e')]=integrations[_0x7995('0x5f')](_0x2466df[_0x7995('0x56')]['channel'],_0x2466df['body'][_0x7995('0x3b')]);_0x2466df[_0x7995('0x56')][_0x7995('0x60')]=integrations[_0x7995('0x61')](_0x2466df['body'][_0x7995('0x62')],_0x2466df[_0x7995('0x56')]['type']);return db['FreshdeskConfiguration'][_0x7995('0x63')](_0x2466df[_0x7995('0x56')],{'include':[{'model':db['FreshdeskField'],'as':_0x7995('0x5e')},{'model':db['FreshdeskField'],'as':_0x7995('0x60')}]});}return null;})[_0x7995('0x20')](respondWithResult(_0x560b0a,null))['catch'](handleError(_0x560b0a,null));};exports['getFields']=function(_0x1f01c0,_0x50c1a4,_0x31b9e6){var _0xa41fff='';return db[_0x7995('0x38')][_0x7995('0x58')]({'where':{'id':_0x1f01c0[_0x7995('0x50')]['id']},'attributes':['id',_0x7995('0x64'),_0x7995('0x65')]})[_0x7995('0x20')](handleEntityNotFound(_0x50c1a4,null))[_0x7995('0x20')](function(_0x117317){if(_0x117317){_0xa41fff=_0x117317[_0x7995('0x64')];var _0x16108c=_0xa41fff[_0x7995('0x66')](-0x1);if(_0x16108c==='/'){_0xa41fff=_0xa41fff[_0x7995('0x67')](0x0,_0xa41fff[_0x7995('0x68')](_0x16108c));}return rp({'method':_0x7995('0x69'),'uri':util[_0x7995('0x6a')](_0x7995('0x6b'),_0xa41fff,_0x7995('0x6c')),'headers':{'Authorization':util[_0x7995('0x6a')](_0x7995('0x6d'),new Buffer(util[_0x7995('0x6a')](_0x7995('0x6e'),_0x117317[_0x7995('0x65')]))[_0x7995('0x6f')](_0x7995('0x70')))},'json':!![]});}})[_0x7995('0x20')](function(_0x34724d){if(_0x34724d){var _0x59efff=[_0x7995('0x71'),_0x7995('0x72'),'agent','description',_0x7995('0x2b'),_0x7995('0x73'),_0x7995('0x74'),_0x7995('0x75'),_0x7995('0x76'),_0x7995('0x74'),'company'];_[_0x7995('0x77')](_0x34724d,function(_0xb68962){return _0x59efff[_0x7995('0x78')](_0xb68962[_0x7995('0x36')])||!_0xb68962[_0x7995('0x79')]&&_0xb68962[_0x7995('0x3b')]!==_0x7995('0x7a')&&_0xb68962[_0x7995('0x3b')]!=='custom_dropdown';});return{'count':_0x34724d[_0x7995('0x43')],'rows':_[_0x7995('0x3d')](_0x34724d,function(_0x5c04c9){return{'id':_0x5c04c9['name'],'name':_0x5c04c9[_0x7995('0x7b')],'custom':!_0x5c04c9[_0x7995('0x79')],'options':_0x5c04c9[_0x7995('0x7c')]?_[_0x7995('0x3d')](_0x5c04c9[_0x7995('0x7c')],function(_0x4a02ea){return{'name':_[_0x7995('0x7d')](_0x4a02ea),'value':_0x4a02ea};}):[]};})};}})[_0x7995('0x20')](respondWithResult(_0x50c1a4,null))['catch'](function(_0x209977){var _0x30b41f=_0x1f01c0['query'][_0x7995('0x7e')]?0x1f4:_0x209977['statusCode']||0x1f4;logger[_0x7995('0x25')](_0x7995('0x7f'),_0x7995('0x80'),_0x30b41f,JSON[_0x7995('0x24')](_0x209977));delete _0x209977[_0x7995('0x36')];if(_0x30b41f===0x191){_0x30b41f=0x190;}_0x50c1a4['status'](_0x30b41f)[_0x7995('0x37')](_0x1f01c0[_0x7995('0x3e')][_0x7995('0x7e')]?{'message':'Wrong\x20credentials','statusCode':_0x209977[_0x7995('0x81')]}:_0x209977);});};