60d3119e285c0d15a149620a61b82407ada829af
[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 _0x82c3=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','jayson/promise','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','sendStatus','status','end','json','count','limit','set','apply','reject','save','update','destroy','stack','index','FreshdeskAccount','fieldName','type','model','name','keys','filters','intersection','attributes','fields','query','hasOwnProperty','nolimit','offset','order','sort','pick','where','merge','map','VIRTUAL','filter','options','includeAll','include','rows','show','params','length','find','catch','create','body','getConfigurations','FreshdeskConfiguration','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','apiKey','slice','substring','lastIndexOf','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','agent','description','priority','group','ticket_type','company','includes','default','custom_text','custom_dropdown','choices','capitalize','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','Wrong\x20credentials','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','squel'];(function(_0xa5deab,_0x23f7ba){var _0x286799=function(_0x3d2f1b){while(--_0x3d2f1b){_0xa5deab['push'](_0xa5deab['shift']());}};_0x286799(++_0x23f7ba);}(_0x82c3,0x1e4));var _0x382c=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x82c3[_0x30ae5e];return _0x1f2e93;};'use strict';var pdf=require(_0x382c('0x0'));var emlformat=require(_0x382c('0x1'));var rimraf=require(_0x382c('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x382c('0x3'));var rp=require(_0x382c('0x4'));var moment=require(_0x382c('0x5'));var BPromise=require(_0x382c('0x6'));var Mustache=require(_0x382c('0x7'));var util=require(_0x382c('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x382c('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x382c('0xa'));var squel=require(_0x382c('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x382c('0xc'));var toCsv=require(_0x382c('0x9'));var querystring=require(_0x382c('0xd'));var Papa=require(_0x382c('0xe'));var Redis=require(_0x382c('0xf'));var authService=require(_0x382c('0x10'));var qs=require(_0x382c('0x11'));var as=require(_0x382c('0x12'));var hardwareService=require(_0x382c('0x13'));var logger=require(_0x382c('0x14'))('api');var utils=require(_0x382c('0x15'));var config=require(_0x382c('0x16'));var licenseUtil=require(_0x382c('0x17'));var db=require(_0x382c('0x18'))['db'];var integrations=require(_0x382c('0x19'));var jayson=require(_0x382c('0x1a'));var client=jayson['client'][_0x382c('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x28b189,_0x2ffbb8,_0x5d60ba,_0x3ae83e){return new BPromise(function(_0x380ccf,_0x138a10){var _0x471448=_0x3ae83e||client;return _0x471448[_0x382c('0x1c')](_0x28b189,_0x5d60ba)[_0x382c('0x1d')](function(_0x3a69a6){logger[_0x382c('0x1e')](_0x382c('0x1f'),_0x2ffbb8,'request\x20sent');logger[_0x382c('0x20')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x2ffbb8,_0x382c('0x21'),JSON['stringify'](_0x3a69a6));if(_0x3a69a6[_0x382c('0x22')]){if(_0x3a69a6[_0x382c('0x22')][_0x382c('0x23')]===0x1f4){logger[_0x382c('0x22')](_0x382c('0x1f'),_0x2ffbb8,_0x3a69a6['error'][_0x382c('0x24')]);return _0x138a10(_0x3a69a6['error']['message']);}logger['error'](_0x382c('0x1f'),_0x2ffbb8,_0x3a69a6[_0x382c('0x22')][_0x382c('0x24')]);return _0x380ccf(_0x3a69a6['error']['message']);}else{logger[_0x382c('0x1e')]('FreshdeskAccount,\x20%s,\x20%s',_0x2ffbb8,_0x382c('0x21'));_0x380ccf(_0x3a69a6[_0x382c('0x25')][_0x382c('0x24')]);}})['catch'](function(_0x439f62){logger[_0x382c('0x22')](_0x382c('0x1f'),_0x2ffbb8,_0x439f62);_0x138a10(_0x439f62);});});}function respondWithStatusCode(_0x845fa8,_0x578f4e){_0x578f4e=_0x578f4e||0xcc;return function(_0x5e307e){if(_0x5e307e){return _0x845fa8[_0x382c('0x26')](_0x578f4e);}return _0x845fa8[_0x382c('0x27')](_0x578f4e)[_0x382c('0x28')]();};}function respondWithResult(_0x73af43,_0x18780e){_0x18780e=_0x18780e||0xc8;return function(_0x106d91){if(_0x106d91){return _0x73af43[_0x382c('0x27')](_0x18780e)[_0x382c('0x29')](_0x106d91);}};}function respondWithFilteredResult(_0x2ac2cc,_0x1a1462){return function(_0x35f14f){if(_0x35f14f){var _0x4090d8=_0x35f14f[_0x382c('0x2a')],_0x472a81=_0x1a1462['offset'],_0x45363d=_0x1a1462['offset']+_0x1a1462[_0x382c('0x2b')],_0x3d1307;if(_0x45363d>=_0x4090d8){_0x45363d=_0x4090d8;_0x3d1307=0xc8;}else{_0x3d1307=0xce;}_0x2ac2cc[_0x382c('0x27')](_0x3d1307);return _0x2ac2cc[_0x382c('0x2c')]('Content-Range',_0x472a81+'-'+_0x45363d+'/'+_0x4090d8)[_0x382c('0x29')](_0x35f14f);}return null;};}function patchUpdates(_0x1482d7){return function(_0x21cfa3){try{jsonpatch[_0x382c('0x2d')](_0x21cfa3,_0x1482d7,!![]);}catch(_0x2d50e4){return BPromise[_0x382c('0x2e')](_0x2d50e4);}return _0x21cfa3[_0x382c('0x2f')]();};}function saveUpdates(_0x52c77c,_0x8b4895){return function(_0x353ab3){if(_0x353ab3){return _0x353ab3[_0x382c('0x30')](_0x52c77c)['then'](function(_0x5d3b6e){return _0x5d3b6e;});}return null;};}function removeEntity(_0x5a9334,_0x4a859b){return function(_0x17829b){if(_0x17829b){return _0x17829b[_0x382c('0x31')]()['then'](function(){_0x5a9334[_0x382c('0x27')](0xcc)[_0x382c('0x28')]();});}};}function handleEntityNotFound(_0x127910,_0x27d32e){return function(_0x524d3d){if(!_0x524d3d){_0x127910[_0x382c('0x26')](0x194);}return _0x524d3d;};}function handleError(_0x47cc7b,_0x8f04e6){_0x8f04e6=_0x8f04e6||0x1f4;return function(_0x5f3fd7){logger['error'](_0x5f3fd7[_0x382c('0x32')]);if(_0x5f3fd7['name']){delete _0x5f3fd7['name'];}_0x47cc7b[_0x382c('0x27')](_0x8f04e6)['send'](_0x5f3fd7);};}exports[_0x382c('0x33')]=function(_0x235674,_0x5cb153){var _0x195a60={},_0x398cba={},_0x446d86={'count':0x0,'rows':[]};var _0x5aaf5a=_['map'](db[_0x382c('0x34')]['rawAttributes'],function(_0x555964){return{'name':_0x555964[_0x382c('0x35')],'type':_0x555964[_0x382c('0x36')]['key']};});_0x398cba[_0x382c('0x37')]=_['map'](_0x5aaf5a,_0x382c('0x38'));_0x398cba['query']=_[_0x382c('0x39')](_0x235674['query']);_0x398cba[_0x382c('0x3a')]=_[_0x382c('0x3b')](_0x398cba[_0x382c('0x37')],_0x398cba['query']);_0x195a60[_0x382c('0x3c')]=_['intersection'](_0x398cba[_0x382c('0x37')],qs[_0x382c('0x3d')](_0x235674[_0x382c('0x3e')][_0x382c('0x3d')]));_0x195a60[_0x382c('0x3c')]=_0x195a60[_0x382c('0x3c')]['length']?_0x195a60[_0x382c('0x3c')]:_0x398cba[_0x382c('0x37')];if(!_0x235674[_0x382c('0x3e')][_0x382c('0x3f')](_0x382c('0x40'))){_0x195a60[_0x382c('0x2b')]=qs[_0x382c('0x2b')](_0x235674[_0x382c('0x3e')]['limit']);_0x195a60['offset']=qs[_0x382c('0x41')](_0x235674[_0x382c('0x3e')]['offset']);}_0x195a60[_0x382c('0x42')]=qs[_0x382c('0x43')](_0x235674[_0x382c('0x3e')][_0x382c('0x43')]);_0x195a60['where']=qs[_0x382c('0x3a')](_[_0x382c('0x44')](_0x235674['query'],_0x398cba[_0x382c('0x3a')]),_0x5aaf5a);if(_0x235674[_0x382c('0x3e')]['filter']){_0x195a60[_0x382c('0x45')]=_[_0x382c('0x46')](_0x195a60['where'],{'$or':_[_0x382c('0x47')](_0x5aaf5a,function(_0xd1577a){if(_0xd1577a[_0x382c('0x36')]!==_0x382c('0x48')){var _0x5c7368={};_0x5c7368[_0xd1577a[_0x382c('0x38')]]={'$like':'%'+_0x235674[_0x382c('0x3e')][_0x382c('0x49')]+'%'};return _0x5c7368;}})});}_0x195a60=_[_0x382c('0x46')]({},_0x195a60,_0x235674[_0x382c('0x4a')]);var _0x370dd8={'where':_0x195a60['where']};return db['FreshdeskAccount'][_0x382c('0x2a')](_0x370dd8)['then'](function(_0x21050e){_0x446d86[_0x382c('0x2a')]=_0x21050e;if(_0x235674['query'][_0x382c('0x4b')]){_0x195a60[_0x382c('0x4c')]=[{'all':!![]}];}return db[_0x382c('0x34')]['findAll'](_0x195a60);})[_0x382c('0x1d')](function(_0x581001){_0x446d86[_0x382c('0x4d')]=_0x581001;return _0x446d86;})[_0x382c('0x1d')](respondWithFilteredResult(_0x5cb153,_0x195a60))['catch'](handleError(_0x5cb153,null));};exports[_0x382c('0x4e')]=function(_0x5b70dd,_0x2cf2f0){var _0x16fea2={'raw':![],'where':{'id':_0x5b70dd[_0x382c('0x4f')]['id']}},_0x234ec0={};_0x234ec0[_0x382c('0x37')]=_[_0x382c('0x39')](db['FreshdeskAccount']['rawAttributes']);_0x234ec0['query']=_[_0x382c('0x39')](_0x5b70dd[_0x382c('0x3e')]);_0x234ec0[_0x382c('0x3a')]=_['intersection'](_0x234ec0[_0x382c('0x37')],_0x234ec0[_0x382c('0x3e')]);_0x16fea2[_0x382c('0x3c')]=_[_0x382c('0x3b')](_0x234ec0[_0x382c('0x37')],qs[_0x382c('0x3d')](_0x5b70dd[_0x382c('0x3e')][_0x382c('0x3d')]));_0x16fea2[_0x382c('0x3c')]=_0x16fea2[_0x382c('0x3c')][_0x382c('0x50')]?_0x16fea2[_0x382c('0x3c')]:_0x234ec0[_0x382c('0x37')];if(_0x5b70dd['query']['includeAll']){_0x16fea2[_0x382c('0x4c')]=[{'all':!![]}];}_0x16fea2=_[_0x382c('0x46')]({},_0x16fea2,_0x5b70dd[_0x382c('0x4a')]);return db[_0x382c('0x34')][_0x382c('0x51')](_0x16fea2)[_0x382c('0x1d')](handleEntityNotFound(_0x2cf2f0,null))[_0x382c('0x1d')](respondWithResult(_0x2cf2f0,null))[_0x382c('0x52')](handleError(_0x2cf2f0,null));};exports['create']=function(_0x39c0f8,_0x18c211){return db['FreshdeskAccount'][_0x382c('0x53')](_0x39c0f8[_0x382c('0x54')],{})[_0x382c('0x1d')](respondWithResult(_0x18c211,0xc9))[_0x382c('0x52')](handleError(_0x18c211,null));};exports[_0x382c('0x30')]=function(_0x256556,_0x36bc08){if(_0x256556[_0x382c('0x54')]['id']){delete _0x256556['body']['id'];}return db[_0x382c('0x34')][_0x382c('0x51')]({'where':{'id':_0x256556[_0x382c('0x4f')]['id']}})[_0x382c('0x1d')](handleEntityNotFound(_0x36bc08,null))['then'](saveUpdates(_0x256556[_0x382c('0x54')],null))[_0x382c('0x1d')](respondWithResult(_0x36bc08,null))['catch'](handleError(_0x36bc08,null));};exports[_0x382c('0x31')]=function(_0x38bd5e,_0x421d9b){return db[_0x382c('0x34')][_0x382c('0x51')]({'where':{'id':_0x38bd5e[_0x382c('0x4f')]['id']}})[_0x382c('0x1d')](handleEntityNotFound(_0x421d9b,null))[_0x382c('0x1d')](removeEntity(_0x421d9b,null))['catch'](handleError(_0x421d9b,null));};exports[_0x382c('0x55')]=function(_0x199f8b,_0x1cc23d,_0x5936a2){var _0x2ce220={};var _0x15cb8a={};var _0x5356cb;var _0x25d4ed;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x199f8b[_0x382c('0x4f')]['id']}})[_0x382c('0x1d')](handleEntityNotFound(_0x1cc23d,null))[_0x382c('0x1d')](function(_0x2b495a){if(_0x2b495a){_0x5356cb=_0x2b495a;_0x15cb8a[_0x382c('0x37')]=_[_0x382c('0x39')](db[_0x382c('0x56')]['rawAttributes']);_0x15cb8a[_0x382c('0x3e')]=_[_0x382c('0x39')](_0x199f8b[_0x382c('0x3e')]);_0x15cb8a['filters']=_[_0x382c('0x3b')](_0x15cb8a[_0x382c('0x37')],_0x15cb8a['query']);_0x2ce220['attributes']=_[_0x382c('0x3b')](_0x15cb8a[_0x382c('0x37')],qs['fields'](_0x199f8b[_0x382c('0x3e')][_0x382c('0x3d')]));_0x2ce220[_0x382c('0x3c')]=_0x2ce220[_0x382c('0x3c')]['length']?_0x2ce220['attributes']:_0x15cb8a[_0x382c('0x37')];_0x2ce220[_0x382c('0x42')]=qs[_0x382c('0x43')](_0x199f8b['query'][_0x382c('0x43')]);_0x2ce220[_0x382c('0x45')]=qs['filters'](_[_0x382c('0x44')](_0x199f8b[_0x382c('0x3e')],_0x15cb8a['filters']));if(_0x199f8b['query'][_0x382c('0x49')]){_0x2ce220[_0x382c('0x45')]=_[_0x382c('0x46')](_0x2ce220[_0x382c('0x45')],{'$or':_['map'](_0x2ce220[_0x382c('0x3c')],function(_0xf67ebb){var _0x3ba072={};_0x3ba072[_0xf67ebb]={'$like':'%'+_0x199f8b['query'][_0x382c('0x49')]+'%'};return _0x3ba072;})});}_0x2ce220=_['merge']({},_0x2ce220,_0x199f8b[_0x382c('0x4a')]);return _0x5356cb['getConfigurations'](_0x2ce220);}})[_0x382c('0x1d')](function(_0x4f23d1){if(_0x4f23d1){_0x25d4ed=_0x4f23d1['length'];if(!_0x199f8b['query'][_0x382c('0x3f')](_0x382c('0x40'))){_0x2ce220[_0x382c('0x2b')]=qs['limit'](_0x199f8b[_0x382c('0x3e')][_0x382c('0x2b')]);_0x2ce220[_0x382c('0x41')]=qs[_0x382c('0x41')](_0x199f8b[_0x382c('0x3e')]['offset']);}return _0x5356cb[_0x382c('0x55')](_0x2ce220);}})[_0x382c('0x1d')](function(_0x4dc562){if(_0x4dc562){return _0x4dc562?{'count':_0x25d4ed,'rows':_0x4dc562}:null;}})['then'](respondWithResult(_0x1cc23d,null))['catch'](handleError(_0x1cc23d,null));};exports[_0x382c('0x57')]=function(_0x4a8edf,_0x9a277,_0x1e4931){if(_0x4a8edf['body']['id']){delete _0x4a8edf[_0x382c('0x54')]['id'];}return db['FreshdeskAccount'][_0x382c('0x58')]({'where':{'id':_0x4a8edf[_0x382c('0x4f')]['id']}})[_0x382c('0x1d')](handleEntityNotFound(_0x9a277,null))[_0x382c('0x1d')](function(_0x150644){if(_0x150644){_0x4a8edf[_0x382c('0x54')][_0x382c('0x59')]=_0x150644['id'];_0x4a8edf[_0x382c('0x54')][_0x382c('0x5a')]=integrations['getSubjects'](_0x4a8edf[_0x382c('0x54')][_0x382c('0x5b')],_0x4a8edf[_0x382c('0x54')][_0x382c('0x36')]);_0x4a8edf['body'][_0x382c('0x5c')]=integrations[_0x382c('0x5d')](_0x4a8edf[_0x382c('0x54')][_0x382c('0x5b')],_0x4a8edf[_0x382c('0x54')][_0x382c('0x36')]);return db[_0x382c('0x56')]['create'](_0x4a8edf[_0x382c('0x54')],{'include':[{'model':db[_0x382c('0x5e')],'as':_0x382c('0x5a')},{'model':db[_0x382c('0x5e')],'as':'Descriptions'}]});}return null;})[_0x382c('0x1d')](respondWithResult(_0x9a277,null))[_0x382c('0x52')](handleError(_0x9a277,null));};exports['getFields']=function(_0xd5aec9,_0x3b801d,_0x207f51){var _0xd4c4a0='';return db['FreshdeskAccount']['findOne']({'where':{'id':_0xd5aec9['params']['id']},'attributes':['id',_0x382c('0x5f'),_0x382c('0x60')]})[_0x382c('0x1d')](handleEntityNotFound(_0x3b801d,null))[_0x382c('0x1d')](function(_0x1b6f09){if(_0x1b6f09){_0xd4c4a0=_0x1b6f09[_0x382c('0x5f')];var _0x2444f9=_0xd4c4a0[_0x382c('0x61')](-0x1);if(_0x2444f9==='/'){_0xd4c4a0=_0xd4c4a0[_0x382c('0x62')](0x0,_0xd4c4a0[_0x382c('0x63')](_0x2444f9));}return rp({'method':'GET','uri':util[_0x382c('0x64')](_0x382c('0x65'),_0xd4c4a0,_0x382c('0x66')),'headers':{'Authorization':util['format'](_0x382c('0x67'),new Buffer(util[_0x382c('0x64')](_0x382c('0x68'),_0x1b6f09[_0x382c('0x60')]))[_0x382c('0x69')](_0x382c('0x6a')))},'json':!![]});}})[_0x382c('0x1d')](function(_0xbf8d7){if(_0xbf8d7){var _0x2ff8c1=['requester','subject',_0x382c('0x6b'),_0x382c('0x6c'),'status',_0x382c('0x6d'),_0x382c('0x6e'),'source',_0x382c('0x6f'),'group',_0x382c('0x70')];_['remove'](_0xbf8d7,function(_0x3dd0ec){return _0x2ff8c1[_0x382c('0x71')](_0x3dd0ec[_0x382c('0x38')])||!_0x3dd0ec[_0x382c('0x72')]&&_0x3dd0ec[_0x382c('0x36')]!==_0x382c('0x73')&&_0x3dd0ec[_0x382c('0x36')]!==_0x382c('0x74');});return{'count':_0xbf8d7['length'],'rows':_['map'](_0xbf8d7,function(_0x1c9d41){return{'id':_0x1c9d41[_0x382c('0x38')],'name':_0x1c9d41['label'],'custom':!_0x1c9d41['default'],'options':_0x1c9d41['choices']?_[_0x382c('0x47')](_0x1c9d41[_0x382c('0x75')],function(_0xca171){return{'name':_[_0x382c('0x76')](_0xca171),'value':_0xca171};}):[]};})};}})[_0x382c('0x1d')](respondWithResult(_0x3b801d,null))[_0x382c('0x52')](function(_0x40a16a){var _0x18435f=_0xd5aec9[_0x382c('0x3e')]['test']?0x1f4:_0x40a16a['statusCode']||0x1f4;logger['error'](_0x382c('0x77'),_0x382c('0x78'),_0x18435f,JSON[_0x382c('0x79')](_0x40a16a));delete _0x40a16a[_0x382c('0x38')];if(_0x18435f===0x191){_0x18435f=0x190;}_0x3b801d[_0x382c('0x27')](_0x18435f)[_0x382c('0x7a')](_0xd5aec9[_0x382c('0x3e')]['test']?{'message':_0x382c('0x7b'),'statusCode':_0x40a16a['statusCode']}:_0x40a16a);});};