588f88854b764dc043c41f529cc908d0dbc4b280
[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 _0xd240=['description','priority','group','source','ticket_type','company','remove','default','custom_text','label','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','rimraf','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','map','FreshdeskAccount','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','merge','find','catch','create','body','params','destroy','findOne','FreshdeskConfiguration','filters','order','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','format','%s/%s','toString','subject','agent'];(function(_0xe01d60,_0x340301){var _0x46d858=function(_0x25e8ba){while(--_0x25e8ba){_0xe01d60['push'](_0xe01d60['shift']());}};_0x46d858(++_0x340301);}(_0xd240,0x1c7));var _0x0d24=function(_0x24235c,_0xe0c1b1){_0x24235c=_0x24235c-0x0;var _0x2b8961=_0xd240[_0x24235c];return _0x2b8961;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0d24('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0d24('0x1'));var moment=require(_0x0d24('0x2'));var BPromise=require(_0x0d24('0x3'));var Mustache=require(_0x0d24('0x4'));var util=require(_0x0d24('0x5'));var path=require(_0x0d24('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d24('0x7'));var fs=require('fs');var fs_extra=require(_0x0d24('0x8'));var _=require(_0x0d24('0x9'));var squel=require(_0x0d24('0xa'));var crypto=require('crypto');var jsforce=require(_0x0d24('0xb'));var deskjs=require(_0x0d24('0xc'));var toCsv=require(_0x0d24('0xd'));var querystring=require(_0x0d24('0xe'));var Papa=require(_0x0d24('0xf'));var Redis=require(_0x0d24('0x10'));var authService=require(_0x0d24('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0d24('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d24('0x13'))('api');var utils=require(_0x0d24('0x14'));var config=require(_0x0d24('0x15'));var licenseUtil=require(_0x0d24('0x16'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x29f892,_0x1b6f50){_0x1b6f50=_0x1b6f50||0xcc;return function(_0x41838d){if(_0x41838d){return _0x29f892['sendStatus'](_0x1b6f50);}return _0x29f892[_0x0d24('0x17')](_0x1b6f50)[_0x0d24('0x18')]();};}function respondWithResult(_0x58ac0d,_0x4d24b5){_0x4d24b5=_0x4d24b5||0xc8;return function(_0x13c2ce){if(_0x13c2ce){return _0x58ac0d[_0x0d24('0x17')](_0x4d24b5)[_0x0d24('0x19')](_0x13c2ce);}};}function respondWithFilteredResult(_0x175841,_0xd9a534){return function(_0x6ec239){if(_0x6ec239){var _0xf188c9=typeof _0xd9a534[_0x0d24('0x1a')]==='undefined'&&typeof _0xd9a534[_0x0d24('0x1b')]===_0x0d24('0x1c');var _0x591d04=_0x6ec239[_0x0d24('0x1d')];var _0x1c5899=_0xf188c9?0x0:_0xd9a534[_0x0d24('0x1a')];var _0x151030=_0xf188c9?_0x6ec239['count']:_0xd9a534[_0x0d24('0x1a')]+_0xd9a534[_0x0d24('0x1b')];var _0x527f6b;if(_0x151030>=_0x591d04){_0x151030=_0x591d04;_0x527f6b=0xc8;}else{_0x527f6b=0xce;}_0x175841['status'](_0x527f6b);return _0x175841[_0x0d24('0x1e')](_0x0d24('0x1f'),_0x1c5899+'-'+_0x151030+'/'+_0x591d04)[_0x0d24('0x19')](_0x6ec239);}return null;};}function patchUpdates(_0x2f611b){return function(_0x30e520){try{jsonpatch[_0x0d24('0x20')](_0x30e520,_0x2f611b,!![]);}catch(_0x120625){return BPromise[_0x0d24('0x21')](_0x120625);}return _0x30e520[_0x0d24('0x22')]();};}function saveUpdates(_0x5df68d,_0x2499e1){return function(_0x14108f){if(_0x14108f){return _0x14108f[_0x0d24('0x23')](_0x5df68d)[_0x0d24('0x24')](function(_0x4e6ded){return _0x4e6ded;});}return null;};}function removeEntity(_0x23440c,_0x3cd88f){return function(_0x367028){if(_0x367028){return _0x367028['destroy']()[_0x0d24('0x24')](function(){_0x23440c[_0x0d24('0x17')](0xcc)[_0x0d24('0x18')]();});}};}function handleEntityNotFound(_0x5905c3,_0x26db95){return function(_0xa5d22d){if(!_0xa5d22d){_0x5905c3[_0x0d24('0x25')](0x194);}return _0xa5d22d;};}function handleError(_0x582169,_0x2226d6){_0x2226d6=_0x2226d6||0x1f4;return function(_0x1a5feb){logger[_0x0d24('0x26')](_0x1a5feb[_0x0d24('0x27')]);if(_0x1a5feb[_0x0d24('0x28')]){delete _0x1a5feb[_0x0d24('0x28')];}_0x582169['status'](_0x2226d6)['send'](_0x1a5feb);};}exports['index']=function(_0x1057c3,_0x2064e3){var _0x1a1ef7={},_0xa1bccb={},_0x31ea4b={'count':0x0,'rows':[]};var _0x8f3446=_[_0x0d24('0x29')](db[_0x0d24('0x2a')][_0x0d24('0x2b')],function(_0x45c4bc){return{'name':_0x45c4bc[_0x0d24('0x2c')],'type':_0x45c4bc['type']['key']};});_0xa1bccb[_0x0d24('0x2d')]=_['map'](_0x8f3446,'name');_0xa1bccb[_0x0d24('0x2e')]=_[_0x0d24('0x2f')](_0x1057c3[_0x0d24('0x2e')]);_0xa1bccb['filters']=_[_0x0d24('0x30')](_0xa1bccb['model'],_0xa1bccb[_0x0d24('0x2e')]);_0x1a1ef7[_0x0d24('0x31')]=_[_0x0d24('0x30')](_0xa1bccb[_0x0d24('0x2d')],qs[_0x0d24('0x32')](_0x1057c3['query']['fields']));_0x1a1ef7[_0x0d24('0x31')]=_0x1a1ef7[_0x0d24('0x31')][_0x0d24('0x33')]?_0x1a1ef7[_0x0d24('0x31')]:_0xa1bccb[_0x0d24('0x2d')];if(!_0x1057c3[_0x0d24('0x2e')]['hasOwnProperty'](_0x0d24('0x34'))){_0x1a1ef7[_0x0d24('0x1b')]=qs['limit'](_0x1057c3[_0x0d24('0x2e')][_0x0d24('0x1b')]);_0x1a1ef7['offset']=qs[_0x0d24('0x1a')](_0x1057c3[_0x0d24('0x2e')][_0x0d24('0x1a')]);}_0x1a1ef7['order']=qs[_0x0d24('0x35')](_0x1057c3[_0x0d24('0x2e')][_0x0d24('0x35')]);_0x1a1ef7[_0x0d24('0x36')]=qs['filters'](_['pick'](_0x1057c3[_0x0d24('0x2e')],_0xa1bccb['filters']),_0x8f3446);if(_0x1057c3['query']['filter']){_0x1a1ef7[_0x0d24('0x36')]=_['merge'](_0x1a1ef7[_0x0d24('0x36')],{'$or':_[_0x0d24('0x29')](_0x8f3446,function(_0x37302d){if(_0x37302d[_0x0d24('0x37')]!==_0x0d24('0x38')){var _0x274cf5={};_0x274cf5[_0x37302d[_0x0d24('0x28')]]={'$like':'%'+_0x1057c3[_0x0d24('0x2e')][_0x0d24('0x39')]+'%'};return _0x274cf5;}})});}_0x1a1ef7=_['merge']({},_0x1a1ef7,_0x1057c3[_0x0d24('0x3a')]);var _0x554917={'where':_0x1a1ef7['where']};return db[_0x0d24('0x2a')][_0x0d24('0x1d')](_0x554917)[_0x0d24('0x24')](function(_0x1396cf){_0x31ea4b[_0x0d24('0x1d')]=_0x1396cf;if(_0x1057c3[_0x0d24('0x2e')][_0x0d24('0x3b')]){_0x1a1ef7[_0x0d24('0x3c')]=[{'all':!![]}];}return db[_0x0d24('0x2a')][_0x0d24('0x3d')](_0x1a1ef7);})[_0x0d24('0x24')](function(_0x548fee){_0x31ea4b[_0x0d24('0x3e')]=_0x548fee;return _0x31ea4b;})[_0x0d24('0x24')](respondWithFilteredResult(_0x2064e3,_0x1a1ef7))['catch'](handleError(_0x2064e3,null));};exports[_0x0d24('0x3f')]=function(_0x9dd427,_0x119152){var _0x1fbff7={'raw':![],'where':{'id':_0x9dd427['params']['id']}},_0x4004d7={};_0x4004d7[_0x0d24('0x2d')]=_['keys'](db[_0x0d24('0x2a')][_0x0d24('0x2b')]);_0x4004d7['query']=_[_0x0d24('0x2f')](_0x9dd427[_0x0d24('0x2e')]);_0x4004d7['filters']=_['intersection'](_0x4004d7['model'],_0x4004d7[_0x0d24('0x2e')]);_0x1fbff7[_0x0d24('0x31')]=_[_0x0d24('0x30')](_0x4004d7[_0x0d24('0x2d')],qs[_0x0d24('0x32')](_0x9dd427['query'][_0x0d24('0x32')]));_0x1fbff7[_0x0d24('0x31')]=_0x1fbff7['attributes'][_0x0d24('0x33')]?_0x1fbff7['attributes']:_0x4004d7[_0x0d24('0x2d')];if(_0x9dd427[_0x0d24('0x2e')]['includeAll']){_0x1fbff7[_0x0d24('0x3c')]=[{'all':!![]}];}_0x1fbff7=_[_0x0d24('0x40')]({},_0x1fbff7,_0x9dd427[_0x0d24('0x3a')]);return db[_0x0d24('0x2a')][_0x0d24('0x41')](_0x1fbff7)[_0x0d24('0x24')](handleEntityNotFound(_0x119152,null))[_0x0d24('0x24')](respondWithResult(_0x119152,null))[_0x0d24('0x42')](handleError(_0x119152,null));};exports[_0x0d24('0x43')]=function(_0x211bea,_0x149ea2){return db[_0x0d24('0x2a')]['create'](_0x211bea[_0x0d24('0x44')],{})[_0x0d24('0x24')](respondWithResult(_0x149ea2,0xc9))[_0x0d24('0x42')](handleError(_0x149ea2,null));};exports[_0x0d24('0x23')]=function(_0x39e695,_0xfc9d42){if(_0x39e695[_0x0d24('0x44')]['id']){delete _0x39e695['body']['id'];}return db['FreshdeskAccount'][_0x0d24('0x41')]({'where':{'id':_0x39e695[_0x0d24('0x45')]['id']}})[_0x0d24('0x24')](handleEntityNotFound(_0xfc9d42,null))[_0x0d24('0x24')](saveUpdates(_0x39e695['body'],null))[_0x0d24('0x24')](respondWithResult(_0xfc9d42,null))[_0x0d24('0x42')](handleError(_0xfc9d42,null));};exports[_0x0d24('0x46')]=function(_0x5544ff,_0x1c52f2){return db[_0x0d24('0x2a')][_0x0d24('0x41')]({'where':{'id':_0x5544ff[_0x0d24('0x45')]['id']}})[_0x0d24('0x24')](handleEntityNotFound(_0x1c52f2,null))[_0x0d24('0x24')](removeEntity(_0x1c52f2,null))[_0x0d24('0x42')](handleError(_0x1c52f2,null));};exports['getConfigurations']=function(_0x574242,_0x141c37,_0x3bc338){var _0xbf0dc0={};var _0x5e1df1={};var _0x3d7e8e;var _0x306897;return db[_0x0d24('0x2a')][_0x0d24('0x47')]({'where':{'id':_0x574242[_0x0d24('0x45')]['id']}})[_0x0d24('0x24')](handleEntityNotFound(_0x141c37,null))[_0x0d24('0x24')](function(_0x4e2969){if(_0x4e2969){_0x3d7e8e=_0x4e2969;_0x5e1df1[_0x0d24('0x2d')]=_[_0x0d24('0x2f')](db[_0x0d24('0x48')][_0x0d24('0x2b')]);_0x5e1df1[_0x0d24('0x2e')]=_['keys'](_0x574242[_0x0d24('0x2e')]);_0x5e1df1[_0x0d24('0x49')]=_[_0x0d24('0x30')](_0x5e1df1[_0x0d24('0x2d')],_0x5e1df1[_0x0d24('0x2e')]);_0xbf0dc0['attributes']=_[_0x0d24('0x30')](_0x5e1df1['model'],qs[_0x0d24('0x32')](_0x574242[_0x0d24('0x2e')]['fields']));_0xbf0dc0[_0x0d24('0x31')]=_0xbf0dc0[_0x0d24('0x31')][_0x0d24('0x33')]?_0xbf0dc0[_0x0d24('0x31')]:_0x5e1df1[_0x0d24('0x2d')];_0xbf0dc0[_0x0d24('0x4a')]=qs[_0x0d24('0x35')](_0x574242[_0x0d24('0x2e')][_0x0d24('0x35')]);_0xbf0dc0[_0x0d24('0x36')]=qs[_0x0d24('0x49')](_[_0x0d24('0x4b')](_0x574242[_0x0d24('0x2e')],_0x5e1df1[_0x0d24('0x49')]));if(_0x574242[_0x0d24('0x2e')]['filter']){_0xbf0dc0[_0x0d24('0x36')]=_[_0x0d24('0x40')](_0xbf0dc0[_0x0d24('0x36')],{'$or':_[_0x0d24('0x29')](_0xbf0dc0[_0x0d24('0x31')],function(_0x3a347e){var _0x147461={};_0x147461[_0x3a347e]={'$like':'%'+_0x574242[_0x0d24('0x2e')][_0x0d24('0x39')]+'%'};return _0x147461;})});}_0xbf0dc0=_['merge']({},_0xbf0dc0,_0x574242[_0x0d24('0x3a')]);return _0x3d7e8e['getConfigurations'](_0xbf0dc0);}})[_0x0d24('0x24')](function(_0x24ce98){if(_0x24ce98){_0x306897=_0x24ce98[_0x0d24('0x33')];if(!_0x574242[_0x0d24('0x2e')]['hasOwnProperty'](_0x0d24('0x34'))){_0xbf0dc0[_0x0d24('0x1b')]=qs[_0x0d24('0x1b')](_0x574242[_0x0d24('0x2e')]['limit']);_0xbf0dc0[_0x0d24('0x1a')]=qs[_0x0d24('0x1a')](_0x574242[_0x0d24('0x2e')]['offset']);}return _0x3d7e8e['getConfigurations'](_0xbf0dc0);}})[_0x0d24('0x24')](function(_0x476c62){if(_0x476c62){return _0x476c62?{'count':_0x306897,'rows':_0x476c62}:null;}})[_0x0d24('0x24')](respondWithResult(_0x141c37,null))['catch'](handleError(_0x141c37,null));};exports[_0x0d24('0x4c')]=function(_0x5a91db,_0x4794cf,_0x3f711d){if(_0x5a91db['body']['id']){delete _0x5a91db[_0x0d24('0x44')]['id'];}return db['FreshdeskAccount'][_0x0d24('0x47')]({'where':{'id':_0x5a91db[_0x0d24('0x45')]['id']}})[_0x0d24('0x24')](handleEntityNotFound(_0x4794cf,null))[_0x0d24('0x24')](function(_0x957841){if(_0x957841){_0x5a91db['body'][_0x0d24('0x4d')]=_0x957841['id'];_0x5a91db[_0x0d24('0x44')][_0x0d24('0x4e')]=integrations[_0x0d24('0x4f')](_0x5a91db[_0x0d24('0x44')][_0x0d24('0x50')],_0x5a91db[_0x0d24('0x44')][_0x0d24('0x37')]);_0x5a91db[_0x0d24('0x44')][_0x0d24('0x51')]=integrations[_0x0d24('0x52')](_0x5a91db[_0x0d24('0x44')][_0x0d24('0x50')],_0x5a91db[_0x0d24('0x44')][_0x0d24('0x37')]);return db['FreshdeskConfiguration'][_0x0d24('0x43')](_0x5a91db[_0x0d24('0x44')],{'include':[{'model':db['FreshdeskField'],'as':_0x0d24('0x4e')},{'model':db[_0x0d24('0x53')],'as':_0x0d24('0x51')}]});}return null;})[_0x0d24('0x24')](respondWithResult(_0x4794cf,null))['catch'](handleError(_0x4794cf,null));};exports[_0x0d24('0x54')]=function(_0x3ba9b6,_0x2248bf,_0x24639d){var _0x515309='';return db[_0x0d24('0x2a')][_0x0d24('0x47')]({'where':{'id':_0x3ba9b6[_0x0d24('0x45')]['id']},'attributes':['id',_0x0d24('0x55'),_0x0d24('0x56')]})[_0x0d24('0x24')](handleEntityNotFound(_0x2248bf,null))[_0x0d24('0x24')](function(_0xbe28b9){if(_0xbe28b9){_0x515309=_0xbe28b9[_0x0d24('0x55')];var _0x187cc1=_0x515309[_0x0d24('0x57')](-0x1);if(_0x187cc1==='/'){_0x515309=_0x515309[_0x0d24('0x58')](0x0,_0x515309[_0x0d24('0x59')](_0x187cc1));}return rp({'method':'GET','uri':util[_0x0d24('0x5a')](_0x0d24('0x5b'),_0x515309,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x0d24('0x5a')]('Basic\x20%s',new Buffer(util[_0x0d24('0x5a')]('%s:X',_0xbe28b9['apiKey']))[_0x0d24('0x5c')]('base64'))},'json':!![]});}})[_0x0d24('0x24')](function(_0xd836d4){if(_0xd836d4){var _0x134063=['requester',_0x0d24('0x5d'),_0x0d24('0x5e'),_0x0d24('0x5f'),'status',_0x0d24('0x60'),_0x0d24('0x61'),_0x0d24('0x62'),_0x0d24('0x63'),_0x0d24('0x61'),_0x0d24('0x64')];_[_0x0d24('0x65')](_0xd836d4,function(_0x31e6c7){return _0x134063['includes'](_0x31e6c7[_0x0d24('0x28')])||!_0x31e6c7[_0x0d24('0x66')]&&_0x31e6c7[_0x0d24('0x37')]!==_0x0d24('0x67')&&_0x31e6c7[_0x0d24('0x37')]!=='custom_dropdown';});return{'count':_0xd836d4[_0x0d24('0x33')],'rows':_[_0x0d24('0x29')](_0xd836d4,function(_0x29a08a){return{'id':_0x29a08a[_0x0d24('0x28')],'name':_0x29a08a[_0x0d24('0x68')],'custom':!_0x29a08a[_0x0d24('0x66')],'options':_0x29a08a['choices']?_[_0x0d24('0x29')](_0x29a08a['choices'],function(_0x4d0314){return{'name':_[_0x0d24('0x69')](_0x4d0314),'value':_0x4d0314};}):[]};})};}})[_0x0d24('0x24')](respondWithResult(_0x2248bf,null))[_0x0d24('0x42')](function(_0x116066){var _0x43bb46=_0x3ba9b6['query'][_0x0d24('0x6a')]?0x1f4:_0x116066[_0x0d24('0x6b')]||0x1f4;logger[_0x0d24('0x26')](_0x0d24('0x6c'),_0x0d24('0x54'),_0x43bb46,JSON[_0x0d24('0x6d')](_0x116066));delete _0x116066[_0x0d24('0x28')];if(_0x43bb46===0x191){_0x43bb46=0x190;}_0x2248bf[_0x0d24('0x17')](_0x43bb46)['send'](_0x3ba9b6['query'][_0x0d24('0x6a')]?{'message':'Wrong\x20credentials','statusCode':_0x116066[_0x0d24('0x6b')]}:_0x116066);});};