Built motion from commit (unavailable).|2.5.18
[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 _0xd719=['../../mysqldb','../../components/integrations/configuration','client','http','then','info','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','FreshdeskAccount,\x20%s,\x20%s','message','result','sendStatus','status','end','count','offset','Content-Range','json','save','destroy','stack','name','send','index','FreshdeskAccount','rawAttributes','type','key','map','keys','query','filters','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','show','params','intersection','find','create','body','update','findOne','FreshdeskConfiguration','getConfigurations','addConfiguration','getSubjects','channel','Descriptions','Subjects','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','%s:X','base64','requester','subject','agent','description','group','source','includes','default','custom_text','custom_dropdown','label','choices','capitalize','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils'];(function(_0x8c8f9f,_0x54c30d){var _0x274dd0=function(_0x4ff142){while(--_0x4ff142){_0x8c8f9f['push'](_0x8c8f9f['shift']());}};_0x274dd0(++_0x54c30d);}(_0xd719,0x147));var _0x9d71=function(_0x28edda,_0xbd447a){_0x28edda=_0x28edda-0x0;var _0x21f4a4=_0xd719[_0x28edda];return _0x21f4a4;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x9d71('0x0'));var rimraf=require(_0x9d71('0x1'));var zipdir=require(_0x9d71('0x2'));var jsonpatch=require(_0x9d71('0x3'));var rp=require(_0x9d71('0x4'));var moment=require(_0x9d71('0x5'));var BPromise=require(_0x9d71('0x6'));var Mustache=require(_0x9d71('0x7'));var util=require(_0x9d71('0x8'));var path=require('path');var sox=require(_0x9d71('0x9'));var csv=require(_0x9d71('0xa'));var ejs=require(_0x9d71('0xb'));var fs=require('fs');var _=require(_0x9d71('0xc'));var squel=require(_0x9d71('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9d71('0xe'));var toCsv=require(_0x9d71('0xa'));var querystring=require('querystring');var Papa=require(_0x9d71('0xf'));var Redis=require(_0x9d71('0x10'));var authService=require(_0x9d71('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d71('0x12'))(_0x9d71('0x13'));var utils=require(_0x9d71('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9d71('0x15'))['db'];var integrations=require(_0x9d71('0x16'));var jayson=require('jayson/promise');var client=jayson[_0x9d71('0x17')][_0x9d71('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x220789,_0x5bea4b,_0x2456f8,_0x37770a){return new BPromise(function(_0x3ad7ec,_0xd39b33){var _0x2ad51f=_0x37770a||client;return _0x2ad51f['request'](_0x220789,_0x2456f8)[_0x9d71('0x19')](function(_0x411f91){logger[_0x9d71('0x1a')]('FreshdeskAccount,\x20%s,\x20%s',_0x5bea4b,_0x9d71('0x1b'));logger['debug'](_0x9d71('0x1c'),_0x5bea4b,'request\x20sent',JSON[_0x9d71('0x1d')](_0x411f91));if(_0x411f91[_0x9d71('0x1e')]){if(_0x411f91['error']['code']===0x1f4){logger['error'](_0x9d71('0x1f'),_0x5bea4b,_0x411f91[_0x9d71('0x1e')][_0x9d71('0x20')]);return _0xd39b33(_0x411f91[_0x9d71('0x1e')][_0x9d71('0x20')]);}logger[_0x9d71('0x1e')](_0x9d71('0x1f'),_0x5bea4b,_0x411f91[_0x9d71('0x1e')]['message']);return _0x3ad7ec(_0x411f91[_0x9d71('0x1e')][_0x9d71('0x20')]);}else{logger[_0x9d71('0x1a')](_0x9d71('0x1f'),_0x5bea4b,_0x9d71('0x1b'));_0x3ad7ec(_0x411f91[_0x9d71('0x21')][_0x9d71('0x20')]);}})['catch'](function(_0x19b4fb){logger['error'](_0x9d71('0x1f'),_0x5bea4b,_0x19b4fb);_0xd39b33(_0x19b4fb);});});}function respondWithStatusCode(_0xf62fd5,_0x479f1a){_0x479f1a=_0x479f1a||0xcc;return function(_0x98cfe4){if(_0x98cfe4){return _0xf62fd5[_0x9d71('0x22')](_0x479f1a);}return _0xf62fd5[_0x9d71('0x23')](_0x479f1a)[_0x9d71('0x24')]();};}function respondWithResult(_0x762ada,_0x48d93b){_0x48d93b=_0x48d93b||0xc8;return function(_0x49a183){if(_0x49a183){return _0x762ada[_0x9d71('0x23')](_0x48d93b)['json'](_0x49a183);}};}function respondWithFilteredResult(_0x4c4ed8,_0x2ce577){return function(_0xc84abd){if(_0xc84abd){var _0x536e87=_0xc84abd[_0x9d71('0x25')],_0x5a6d83=_0x2ce577[_0x9d71('0x26')],_0x221d84=_0x2ce577[_0x9d71('0x26')]+_0x2ce577['limit'],_0x2bdfc4;if(_0x221d84>=_0x536e87){_0x221d84=_0x536e87;_0x2bdfc4=0xc8;}else{_0x2bdfc4=0xce;}_0x4c4ed8[_0x9d71('0x23')](_0x2bdfc4);return _0x4c4ed8['set'](_0x9d71('0x27'),_0x5a6d83+'-'+_0x221d84+'/'+_0x536e87)[_0x9d71('0x28')](_0xc84abd);}return null;};}function patchUpdates(_0x3f0410){return function(_0x13d086){try{jsonpatch['apply'](_0x13d086,_0x3f0410,!![]);}catch(_0x148f50){return BPromise['reject'](_0x148f50);}return _0x13d086[_0x9d71('0x29')]();};}function saveUpdates(_0x459d13,_0x1383b4){return function(_0x3c00da){if(_0x3c00da){return _0x3c00da['update'](_0x459d13)[_0x9d71('0x19')](function(_0x53a4c8){return _0x53a4c8;});}return null;};}function removeEntity(_0x4daf9b,_0x290b49){return function(_0x312edb){if(_0x312edb){return _0x312edb[_0x9d71('0x2a')]()[_0x9d71('0x19')](function(){_0x4daf9b['status'](0xcc)[_0x9d71('0x24')]();});}};}function handleEntityNotFound(_0x13aa01,_0x493680){return function(_0x4fd5bc){if(!_0x4fd5bc){_0x13aa01[_0x9d71('0x22')](0x194);}return _0x4fd5bc;};}function handleError(_0x3e3924,_0x3e7824){_0x3e7824=_0x3e7824||0x1f4;return function(_0x4c46c3){logger[_0x9d71('0x1e')](_0x4c46c3[_0x9d71('0x2b')]);if(_0x4c46c3[_0x9d71('0x2c')]){delete _0x4c46c3[_0x9d71('0x2c')];}_0x3e3924[_0x9d71('0x23')](_0x3e7824)[_0x9d71('0x2d')](_0x4c46c3);};}exports[_0x9d71('0x2e')]=function(_0x1f65e2,_0x1fdb33){var _0x2f3166={},_0x15246b={},_0x33bfeb={'count':0x0,'rows':[]};var _0x46d3e1=_['map'](db[_0x9d71('0x2f')][_0x9d71('0x30')],function(_0x4fe528){return{'name':_0x4fe528['fieldName'],'type':_0x4fe528[_0x9d71('0x31')][_0x9d71('0x32')]};});_0x15246b['model']=_[_0x9d71('0x33')](_0x46d3e1,_0x9d71('0x2c'));_0x15246b['query']=_[_0x9d71('0x34')](_0x1f65e2[_0x9d71('0x35')]);_0x15246b[_0x9d71('0x36')]=_['intersection'](_0x15246b[_0x9d71('0x37')],_0x15246b[_0x9d71('0x35')]);_0x2f3166['attributes']=_['intersection'](_0x15246b[_0x9d71('0x37')],qs[_0x9d71('0x38')](_0x1f65e2[_0x9d71('0x35')]['fields']));_0x2f3166[_0x9d71('0x39')]=_0x2f3166[_0x9d71('0x39')][_0x9d71('0x3a')]?_0x2f3166[_0x9d71('0x39')]:_0x15246b[_0x9d71('0x37')];if(!_0x1f65e2['query'][_0x9d71('0x3b')](_0x9d71('0x3c'))){_0x2f3166[_0x9d71('0x3d')]=qs['limit'](_0x1f65e2['query'][_0x9d71('0x3d')]);_0x2f3166['offset']=qs[_0x9d71('0x26')](_0x1f65e2[_0x9d71('0x35')]['offset']);}_0x2f3166[_0x9d71('0x3e')]=qs[_0x9d71('0x3f')](_0x1f65e2[_0x9d71('0x35')][_0x9d71('0x3f')]);_0x2f3166[_0x9d71('0x40')]=qs[_0x9d71('0x36')](_[_0x9d71('0x41')](_0x1f65e2[_0x9d71('0x35')],_0x15246b[_0x9d71('0x36')]),_0x46d3e1);if(_0x1f65e2[_0x9d71('0x35')][_0x9d71('0x42')]){_0x2f3166['where']=_[_0x9d71('0x43')](_0x2f3166['where'],{'$or':_['map'](_0x46d3e1,function(_0x3fdc12){if(_0x3fdc12['type']!==_0x9d71('0x44')){var _0x449a75={};_0x449a75[_0x3fdc12[_0x9d71('0x2c')]]={'$like':'%'+_0x1f65e2['query'][_0x9d71('0x42')]+'%'};return _0x449a75;}})});}_0x2f3166=_[_0x9d71('0x43')]({},_0x2f3166,_0x1f65e2[_0x9d71('0x45')]);var _0x496c87={'where':_0x2f3166['where']};return db[_0x9d71('0x2f')][_0x9d71('0x25')](_0x496c87)['then'](function(_0xe17d14){_0x33bfeb['count']=_0xe17d14;if(_0x1f65e2['query']['includeAll']){_0x2f3166[_0x9d71('0x46')]=[{'all':!![]}];}return db[_0x9d71('0x2f')]['findAll'](_0x2f3166);})[_0x9d71('0x19')](function(_0x48503a){_0x33bfeb[_0x9d71('0x47')]=_0x48503a;return _0x33bfeb;})[_0x9d71('0x19')](respondWithFilteredResult(_0x1fdb33,_0x2f3166))[_0x9d71('0x48')](handleError(_0x1fdb33,null));};exports[_0x9d71('0x49')]=function(_0x1a5baf,_0x532d1a){var _0x4eee46={'raw':![],'where':{'id':_0x1a5baf[_0x9d71('0x4a')]['id']}},_0x5365c2={};_0x5365c2[_0x9d71('0x37')]=_['keys'](db['FreshdeskAccount'][_0x9d71('0x30')]);_0x5365c2['query']=_['keys'](_0x1a5baf[_0x9d71('0x35')]);_0x5365c2['filters']=_[_0x9d71('0x4b')](_0x5365c2[_0x9d71('0x37')],_0x5365c2['query']);_0x4eee46[_0x9d71('0x39')]=_['intersection'](_0x5365c2[_0x9d71('0x37')],qs['fields'](_0x1a5baf[_0x9d71('0x35')]['fields']));_0x4eee46[_0x9d71('0x39')]=_0x4eee46[_0x9d71('0x39')][_0x9d71('0x3a')]?_0x4eee46[_0x9d71('0x39')]:_0x5365c2['model'];if(_0x1a5baf[_0x9d71('0x35')]['includeAll']){_0x4eee46[_0x9d71('0x46')]=[{'all':!![]}];}_0x4eee46=_[_0x9d71('0x43')]({},_0x4eee46,_0x1a5baf['options']);return db[_0x9d71('0x2f')][_0x9d71('0x4c')](_0x4eee46)[_0x9d71('0x19')](handleEntityNotFound(_0x532d1a,null))[_0x9d71('0x19')](respondWithResult(_0x532d1a,null))['catch'](handleError(_0x532d1a,null));};exports[_0x9d71('0x4d')]=function(_0x431e9b,_0x1e221e){return db[_0x9d71('0x2f')][_0x9d71('0x4d')](_0x431e9b[_0x9d71('0x4e')],{})[_0x9d71('0x19')](respondWithResult(_0x1e221e,0xc9))[_0x9d71('0x48')](handleError(_0x1e221e,null));};exports[_0x9d71('0x4f')]=function(_0x405cea,_0x2210d1){if(_0x405cea[_0x9d71('0x4e')]['id']){delete _0x405cea[_0x9d71('0x4e')]['id'];}return db['FreshdeskAccount'][_0x9d71('0x4c')]({'where':{'id':_0x405cea['params']['id']}})[_0x9d71('0x19')](handleEntityNotFound(_0x2210d1,null))['then'](saveUpdates(_0x405cea[_0x9d71('0x4e')],null))[_0x9d71('0x19')](respondWithResult(_0x2210d1,null))[_0x9d71('0x48')](handleError(_0x2210d1,null));};exports[_0x9d71('0x2a')]=function(_0x1bf573,_0x62d667){return db[_0x9d71('0x2f')][_0x9d71('0x4c')]({'where':{'id':_0x1bf573[_0x9d71('0x4a')]['id']}})[_0x9d71('0x19')](handleEntityNotFound(_0x62d667,null))[_0x9d71('0x19')](removeEntity(_0x62d667,null))[_0x9d71('0x48')](handleError(_0x62d667,null));};exports['getConfigurations']=function(_0x82bafe,_0xef2dc3,_0x46b771){var _0x2576c0={};var _0x36e25b={};var _0x406439;var _0xfbc909;return db[_0x9d71('0x2f')][_0x9d71('0x50')]({'where':{'id':_0x82bafe[_0x9d71('0x4a')]['id']}})['then'](handleEntityNotFound(_0xef2dc3,null))[_0x9d71('0x19')](function(_0x25257d){if(_0x25257d){_0x406439=_0x25257d;_0x36e25b[_0x9d71('0x37')]=_[_0x9d71('0x34')](db[_0x9d71('0x51')][_0x9d71('0x30')]);_0x36e25b[_0x9d71('0x35')]=_[_0x9d71('0x34')](_0x82bafe['query']);_0x36e25b[_0x9d71('0x36')]=_[_0x9d71('0x4b')](_0x36e25b[_0x9d71('0x37')],_0x36e25b[_0x9d71('0x35')]);_0x2576c0[_0x9d71('0x39')]=_[_0x9d71('0x4b')](_0x36e25b[_0x9d71('0x37')],qs[_0x9d71('0x38')](_0x82bafe[_0x9d71('0x35')][_0x9d71('0x38')]));_0x2576c0['attributes']=_0x2576c0['attributes'][_0x9d71('0x3a')]?_0x2576c0[_0x9d71('0x39')]:_0x36e25b['model'];_0x2576c0[_0x9d71('0x3e')]=qs[_0x9d71('0x3f')](_0x82bafe[_0x9d71('0x35')][_0x9d71('0x3f')]);_0x2576c0[_0x9d71('0x40')]=qs['filters'](_[_0x9d71('0x41')](_0x82bafe[_0x9d71('0x35')],_0x36e25b['filters']));if(_0x82bafe['query'][_0x9d71('0x42')]){_0x2576c0['where']=_[_0x9d71('0x43')](_0x2576c0[_0x9d71('0x40')],{'$or':_[_0x9d71('0x33')](_0x2576c0[_0x9d71('0x39')],function(_0x30ef9e){var _0xe4bb94={};_0xe4bb94[_0x30ef9e]={'$like':'%'+_0x82bafe[_0x9d71('0x35')][_0x9d71('0x42')]+'%'};return _0xe4bb94;})});}_0x2576c0=_[_0x9d71('0x43')]({},_0x2576c0,_0x82bafe[_0x9d71('0x45')]);return _0x406439[_0x9d71('0x52')](_0x2576c0);}})[_0x9d71('0x19')](function(_0x1aef41){if(_0x1aef41){_0xfbc909=_0x1aef41[_0x9d71('0x3a')];if(!_0x82bafe[_0x9d71('0x35')]['hasOwnProperty'](_0x9d71('0x3c'))){_0x2576c0[_0x9d71('0x3d')]=qs[_0x9d71('0x3d')](_0x82bafe[_0x9d71('0x35')][_0x9d71('0x3d')]);_0x2576c0[_0x9d71('0x26')]=qs['offset'](_0x82bafe[_0x9d71('0x35')]['offset']);}return _0x406439[_0x9d71('0x52')](_0x2576c0);}})[_0x9d71('0x19')](function(_0x28a86e){if(_0x28a86e){return _0x28a86e?{'count':_0xfbc909,'rows':_0x28a86e}:null;}})[_0x9d71('0x19')](respondWithResult(_0xef2dc3,null))[_0x9d71('0x48')](handleError(_0xef2dc3,null));};exports[_0x9d71('0x53')]=function(_0x48e984,_0x42db4f,_0x212876){if(_0x48e984[_0x9d71('0x4e')]['id']){delete _0x48e984[_0x9d71('0x4e')]['id'];}return db[_0x9d71('0x2f')]['findOne']({'where':{'id':_0x48e984[_0x9d71('0x4a')]['id']}})[_0x9d71('0x19')](handleEntityNotFound(_0x42db4f,null))[_0x9d71('0x19')](function(_0x1b4713){if(_0x1b4713){_0x48e984[_0x9d71('0x4e')]['AccountId']=_0x1b4713['id'];_0x48e984['body']['Subjects']=integrations[_0x9d71('0x54')](_0x48e984[_0x9d71('0x4e')][_0x9d71('0x55')],_0x48e984[_0x9d71('0x4e')][_0x9d71('0x31')]);_0x48e984[_0x9d71('0x4e')][_0x9d71('0x56')]=integrations['getDescriptions'](_0x48e984[_0x9d71('0x4e')][_0x9d71('0x55')],_0x48e984['body']['type']);return db[_0x9d71('0x51')][_0x9d71('0x4d')](_0x48e984[_0x9d71('0x4e')],{'include':[{'model':db['FreshdeskField'],'as':_0x9d71('0x57')},{'model':db[_0x9d71('0x58')],'as':_0x9d71('0x56')}]});}return null;})[_0x9d71('0x19')](respondWithResult(_0x42db4f,null))['catch'](handleError(_0x42db4f,null));};exports[_0x9d71('0x59')]=function(_0x4ac428,_0x35be89,_0x5bf86f){var _0x85105b='';return db[_0x9d71('0x2f')][_0x9d71('0x50')]({'where':{'id':_0x4ac428['params']['id']},'attributes':['id',_0x9d71('0x5a'),_0x9d71('0x5b')]})[_0x9d71('0x19')](handleEntityNotFound(_0x35be89,null))[_0x9d71('0x19')](function(_0x107815){if(_0x107815){_0x85105b=_0x107815[_0x9d71('0x5a')];var _0x2469d1=_0x85105b[_0x9d71('0x5c')](-0x1);if(_0x2469d1==='/'){_0x85105b=_0x85105b[_0x9d71('0x5d')](0x0,_0x85105b[_0x9d71('0x5e')](_0x2469d1));}return rp({'method':_0x9d71('0x5f'),'uri':util[_0x9d71('0x60')](_0x9d71('0x61'),_0x85105b,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x9d71('0x60')](_0x9d71('0x62'),new Buffer(util['format'](_0x9d71('0x63'),_0x107815[_0x9d71('0x5b')]))['toString'](_0x9d71('0x64')))},'json':!![]});}})['then'](function(_0xe647ec){if(_0xe647ec){var _0x112d29=[_0x9d71('0x65'),_0x9d71('0x66'),_0x9d71('0x67'),_0x9d71('0x68'),_0x9d71('0x23'),'priority',_0x9d71('0x69'),_0x9d71('0x6a'),'ticket_type','group','company'];_['remove'](_0xe647ec,function(_0x43b367){return _0x112d29[_0x9d71('0x6b')](_0x43b367[_0x9d71('0x2c')])||!_0x43b367[_0x9d71('0x6c')]&&_0x43b367[_0x9d71('0x31')]!==_0x9d71('0x6d')&&_0x43b367[_0x9d71('0x31')]!==_0x9d71('0x6e');});return{'count':_0xe647ec[_0x9d71('0x3a')],'rows':_['map'](_0xe647ec,function(_0x25bddf){return{'id':_0x25bddf[_0x9d71('0x2c')],'name':_0x25bddf[_0x9d71('0x6f')],'custom':!_0x25bddf[_0x9d71('0x6c')],'options':_0x25bddf['choices']?_[_0x9d71('0x33')](_0x25bddf[_0x9d71('0x70')],function(_0x52a291){return{'name':_[_0x9d71('0x71')](_0x52a291),'value':_0x52a291};}):[]};})};}})[_0x9d71('0x19')](respondWithResult(_0x35be89,null))[_0x9d71('0x48')](function(_0xe49cef){var _0x4b3e42=_0x4ac428[_0x9d71('0x35')]['test']?0x1f4:_0xe49cef[_0x9d71('0x72')]||0x1f4;logger[_0x9d71('0x1e')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x4b3e42,JSON['stringify'](_0xe49cef));delete _0xe49cef[_0x9d71('0x2c')];if(_0x4b3e42===0x191){_0x4b3e42=0x190;}_0x35be89['status'](_0x4b3e42)[_0x9d71('0x2d')](_0x4ac428[_0x9d71('0x35')]['test']?{'message':_0x9d71('0x73'),'statusCode':_0xe49cef['statusCode']}:_0xe49cef);});};