98676675840bccb8ee9d1fc156ae9b92c2df53c3
[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 _0xa9e0=['map','VIRTUAL','options','includeAll','include','findAll','show','params','filtears','find','create','body','destroy','findOne','FreshdeskConfiguration','length','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','type','Descriptions','getDescriptions','channel','FreshdeskField','remoteUri','apiKey','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','description','priority','group','company','default','custom_text','custom_dropdown','choices','capitalize','test','statusCode','stringify','html-pdf','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','../../components/integrations/configuration','jayson/promise','client','http','then','info','request\x20sent','debug','error','code','FreshdeskAccount,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','stack','name','send','FreshdeskAccount','rawAttributes','fieldName','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','filter','merge'];(function(_0xa11e41,_0x3ce19c){var _0x408c88=function(_0xd5d663){while(--_0xd5d663){_0xa11e41['push'](_0xa11e41['shift']());}};_0x408c88(++_0x3ce19c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'use strict';var pdf=require(_0x0a9e('0x0'));var emlformat=require(_0x0a9e('0x1'));var rimraf=require(_0x0a9e('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a9e('0x3'));var moment=require('moment');var BPromise=require(_0x0a9e('0x4'));var Mustache=require(_0x0a9e('0x5'));var util=require(_0x0a9e('0x6'));var path=require(_0x0a9e('0x7'));var sox=require(_0x0a9e('0x8'));var csv=require('to-csv');var ejs=require(_0x0a9e('0x9'));var fs=require('fs');var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];var integrations=require(_0x0a9e('0x15'));var jayson=require(_0x0a9e('0x16'));var client=jayson[_0x0a9e('0x17')][_0x0a9e('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x5db4b0,_0x4283ce,_0x239b12,_0x2b4227){return new BPromise(function(_0x281129,_0x44dcfd){var _0x4d5611=_0x2b4227||client;return _0x4d5611['request'](_0x5db4b0,_0x239b12)[_0x0a9e('0x19')](function(_0x5d0880){logger[_0x0a9e('0x1a')]('FreshdeskAccount,\x20%s,\x20%s',_0x4283ce,_0x0a9e('0x1b'));logger[_0x0a9e('0x1c')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x4283ce,_0x0a9e('0x1b'),JSON['stringify'](_0x5d0880));if(_0x5d0880[_0x0a9e('0x1d')]){if(_0x5d0880[_0x0a9e('0x1d')][_0x0a9e('0x1e')]===0x1f4){logger[_0x0a9e('0x1d')](_0x0a9e('0x1f'),_0x4283ce,_0x5d0880[_0x0a9e('0x1d')][_0x0a9e('0x20')]);return _0x44dcfd(_0x5d0880[_0x0a9e('0x1d')][_0x0a9e('0x20')]);}logger[_0x0a9e('0x1d')](_0x0a9e('0x1f'),_0x4283ce,_0x5d0880[_0x0a9e('0x1d')]['message']);return _0x281129(_0x5d0880[_0x0a9e('0x1d')][_0x0a9e('0x20')]);}else{logger['info'](_0x0a9e('0x1f'),_0x4283ce,'request\x20sent');_0x281129(_0x5d0880['result'][_0x0a9e('0x20')]);}})[_0x0a9e('0x21')](function(_0x38e7c4){logger[_0x0a9e('0x1d')]('FreshdeskAccount,\x20%s,\x20%s',_0x4283ce,_0x38e7c4);_0x44dcfd(_0x38e7c4);});});}function respondWithStatusCode(_0xfb6e48,_0x2fb0e4){_0x2fb0e4=_0x2fb0e4||0xcc;return function(_0x3b45bc){if(_0x3b45bc){return _0xfb6e48[_0x0a9e('0x22')](_0x2fb0e4);}return _0xfb6e48[_0x0a9e('0x23')](_0x2fb0e4)[_0x0a9e('0x24')]();};}function respondWithResult(_0x16b1ca,_0x5ea472){_0x5ea472=_0x5ea472||0xc8;return function(_0x59181e){if(_0x59181e){return _0x16b1ca[_0x0a9e('0x23')](_0x5ea472)[_0x0a9e('0x25')](_0x59181e);}};}function respondWithFilteredResult(_0x40c424,_0x33161b){return function(_0x526cf3){if(_0x526cf3){var _0x384319=_0x526cf3[_0x0a9e('0x26')],_0x479bc4=_0x33161b[_0x0a9e('0x27')],_0x45a1e7=_0x33161b[_0x0a9e('0x27')]+_0x33161b[_0x0a9e('0x28')],_0x5bfb33;if(_0x45a1e7>=_0x384319){_0x45a1e7=_0x384319;_0x5bfb33=0xc8;}else{_0x5bfb33=0xce;}_0x40c424[_0x0a9e('0x23')](_0x5bfb33);return _0x40c424[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x479bc4+'-'+_0x45a1e7+'/'+_0x384319)[_0x0a9e('0x25')](_0x526cf3);}return null;};}function patchUpdates(_0x5a101a){return function(_0x3652a7){try{jsonpatch[_0x0a9e('0x2b')](_0x3652a7,_0x5a101a,!![]);}catch(_0x2b1f27){return BPromise[_0x0a9e('0x2c')](_0x2b1f27);}return _0x3652a7['save']();};}function saveUpdates(_0x15b200,_0x40e7a3){return function(_0x1843b2){if(_0x1843b2){return _0x1843b2[_0x0a9e('0x2d')](_0x15b200)[_0x0a9e('0x19')](function(_0x563b45){return _0x563b45;});}return null;};}function removeEntity(_0x296f41,_0x2e8759){return function(_0x1dbde2){if(_0x1dbde2){return _0x1dbde2['destroy']()[_0x0a9e('0x19')](function(){_0x296f41['status'](0xcc)[_0x0a9e('0x24')]();});}};}function handleEntityNotFound(_0x3ae878,_0x1122db){return function(_0x33bdb7){if(!_0x33bdb7){_0x3ae878[_0x0a9e('0x22')](0x194);}return _0x33bdb7;};}function handleError(_0x5180f1,_0x66c1d2){_0x66c1d2=_0x66c1d2||0x1f4;return function(_0x46f0a5){logger[_0x0a9e('0x1d')](_0x46f0a5[_0x0a9e('0x2e')]);if(_0x46f0a5[_0x0a9e('0x2f')]){delete _0x46f0a5[_0x0a9e('0x2f')];}_0x5180f1[_0x0a9e('0x23')](_0x66c1d2)[_0x0a9e('0x30')](_0x46f0a5);};}exports['index']=function(_0x44295a,_0x5e7238){var _0x2cc7a0={},_0x14b13f={},_0x2b7e7f={'count':0x0,'rows':[]};var _0x3f3d41=_['map'](db[_0x0a9e('0x31')][_0x0a9e('0x32')],function(_0x1fa90d){return{'name':_0x1fa90d[_0x0a9e('0x33')],'type':_0x1fa90d['type']['key']};});_0x14b13f[_0x0a9e('0x34')]=_['map'](_0x3f3d41,_0x0a9e('0x2f'));_0x14b13f[_0x0a9e('0x35')]=_[_0x0a9e('0x36')](_0x44295a[_0x0a9e('0x35')]);_0x14b13f['filters']=_[_0x0a9e('0x37')](_0x14b13f[_0x0a9e('0x34')],_0x14b13f[_0x0a9e('0x35')]);_0x2cc7a0['attributes']=_[_0x0a9e('0x37')](_0x14b13f[_0x0a9e('0x34')],qs[_0x0a9e('0x38')](_0x44295a['query']['fields']));_0x2cc7a0[_0x0a9e('0x39')]=_0x2cc7a0[_0x0a9e('0x39')]['length']?_0x2cc7a0[_0x0a9e('0x39')]:_0x14b13f[_0x0a9e('0x34')];if(!_0x44295a[_0x0a9e('0x35')][_0x0a9e('0x3a')]('nolimit')){_0x2cc7a0['limit']=qs[_0x0a9e('0x28')](_0x44295a[_0x0a9e('0x35')]['limit']);_0x2cc7a0[_0x0a9e('0x27')]=qs[_0x0a9e('0x27')](_0x44295a[_0x0a9e('0x35')]['offset']);}_0x2cc7a0[_0x0a9e('0x3b')]=qs[_0x0a9e('0x3c')](_0x44295a[_0x0a9e('0x35')][_0x0a9e('0x3c')]);_0x2cc7a0[_0x0a9e('0x3d')]=qs[_0x0a9e('0x3e')](_[_0x0a9e('0x3f')](_0x44295a[_0x0a9e('0x35')],_0x14b13f[_0x0a9e('0x3e')]),_0x3f3d41);if(_0x44295a[_0x0a9e('0x35')][_0x0a9e('0x40')]){_0x2cc7a0[_0x0a9e('0x3d')]=_[_0x0a9e('0x41')](_0x2cc7a0[_0x0a9e('0x3d')],{'$or':_[_0x0a9e('0x42')](_0x3f3d41,function(_0x4d04c8){if(_0x4d04c8['type']!==_0x0a9e('0x43')){var _0xb3795a={};_0xb3795a[_0x4d04c8[_0x0a9e('0x2f')]]={'$like':'%'+_0x44295a[_0x0a9e('0x35')][_0x0a9e('0x40')]+'%'};return _0xb3795a;}})});}_0x2cc7a0=_[_0x0a9e('0x41')]({},_0x2cc7a0,_0x44295a[_0x0a9e('0x44')]);var _0x445e25={'where':_0x2cc7a0[_0x0a9e('0x3d')]};return db[_0x0a9e('0x31')][_0x0a9e('0x26')](_0x445e25)[_0x0a9e('0x19')](function(_0x5026aa){_0x2b7e7f[_0x0a9e('0x26')]=_0x5026aa;if(_0x44295a[_0x0a9e('0x35')][_0x0a9e('0x45')]){_0x2cc7a0[_0x0a9e('0x46')]=[{'all':!![]}];}return db[_0x0a9e('0x31')][_0x0a9e('0x47')](_0x2cc7a0);})[_0x0a9e('0x19')](function(_0x44dd99){_0x2b7e7f['rows']=_0x44dd99;return _0x2b7e7f;})[_0x0a9e('0x19')](respondWithFilteredResult(_0x5e7238,_0x2cc7a0))['catch'](handleError(_0x5e7238,null));};exports[_0x0a9e('0x48')]=function(_0x476688,_0x8d6dd1){var _0x562fb4={'raw':![],'where':{'id':_0x476688[_0x0a9e('0x49')]['id']}},_0x14bec2={};_0x14bec2[_0x0a9e('0x34')]=_[_0x0a9e('0x36')](db[_0x0a9e('0x31')][_0x0a9e('0x32')]);_0x14bec2[_0x0a9e('0x35')]=_['keys'](_0x476688[_0x0a9e('0x35')]);_0x14bec2[_0x0a9e('0x4a')]=_[_0x0a9e('0x37')](_0x14bec2[_0x0a9e('0x34')],_0x14bec2[_0x0a9e('0x35')]);_0x562fb4[_0x0a9e('0x39')]=_[_0x0a9e('0x37')](_0x14bec2[_0x0a9e('0x34')],qs[_0x0a9e('0x38')](_0x476688['query'][_0x0a9e('0x38')]));_0x562fb4[_0x0a9e('0x39')]=_0x562fb4['attributes']['length']?_0x562fb4['attributes']:_0x14bec2[_0x0a9e('0x34')];if(_0x476688[_0x0a9e('0x35')][_0x0a9e('0x45')]){_0x562fb4[_0x0a9e('0x46')]=[{'all':!![]}];}_0x562fb4=_[_0x0a9e('0x41')]({},_0x562fb4,_0x476688[_0x0a9e('0x44')]);return db[_0x0a9e('0x31')][_0x0a9e('0x4b')](_0x562fb4)['then'](handleEntityNotFound(_0x8d6dd1,null))['then'](respondWithResult(_0x8d6dd1,null))['catch'](handleError(_0x8d6dd1,null));};exports[_0x0a9e('0x4c')]=function(_0x204173,_0x14d602){return db['FreshdeskAccount'][_0x0a9e('0x4c')](_0x204173[_0x0a9e('0x4d')],{})['then'](respondWithResult(_0x14d602,0xc9))['catch'](handleError(_0x14d602,null));};exports[_0x0a9e('0x2d')]=function(_0x59c6ff,_0x443e72){if(_0x59c6ff['body']['id']){delete _0x59c6ff[_0x0a9e('0x4d')]['id'];}return db[_0x0a9e('0x31')][_0x0a9e('0x4b')]({'where':{'id':_0x59c6ff['params']['id']}})[_0x0a9e('0x19')](handleEntityNotFound(_0x443e72,null))[_0x0a9e('0x19')](saveUpdates(_0x59c6ff['body'],null))['then'](respondWithResult(_0x443e72,null))[_0x0a9e('0x21')](handleError(_0x443e72,null));};exports[_0x0a9e('0x4e')]=function(_0x49c095,_0x145931){return db['FreshdeskAccount'][_0x0a9e('0x4b')]({'where':{'id':_0x49c095['params']['id']}})[_0x0a9e('0x19')](handleEntityNotFound(_0x145931,null))['then'](removeEntity(_0x145931,null))['catch'](handleError(_0x145931,null));};exports['getConfigurations']=function(_0x2da03c,_0x47de4c,_0x2f7092){var _0x65432={};var _0x3cfd00={};var _0x19b4df;var _0x232830;return db[_0x0a9e('0x31')][_0x0a9e('0x4f')]({'where':{'id':_0x2da03c[_0x0a9e('0x49')]['id']}})['then'](handleEntityNotFound(_0x47de4c,null))[_0x0a9e('0x19')](function(_0x121cef){if(_0x121cef){_0x19b4df=_0x121cef;_0x3cfd00[_0x0a9e('0x34')]=_[_0x0a9e('0x36')](db[_0x0a9e('0x50')][_0x0a9e('0x32')]);_0x3cfd00['query']=_[_0x0a9e('0x36')](_0x2da03c[_0x0a9e('0x35')]);_0x3cfd00['filters']=_[_0x0a9e('0x37')](_0x3cfd00['model'],_0x3cfd00[_0x0a9e('0x35')]);_0x65432['attributes']=_['intersection'](_0x3cfd00['model'],qs[_0x0a9e('0x38')](_0x2da03c['query'][_0x0a9e('0x38')]));_0x65432[_0x0a9e('0x39')]=_0x65432[_0x0a9e('0x39')][_0x0a9e('0x51')]?_0x65432[_0x0a9e('0x39')]:_0x3cfd00[_0x0a9e('0x34')];_0x65432['order']=qs[_0x0a9e('0x3c')](_0x2da03c['query'][_0x0a9e('0x3c')]);_0x65432[_0x0a9e('0x3d')]=qs[_0x0a9e('0x3e')](_['pick'](_0x2da03c[_0x0a9e('0x35')],_0x3cfd00[_0x0a9e('0x3e')]));if(_0x2da03c[_0x0a9e('0x35')][_0x0a9e('0x40')]){_0x65432['where']=_[_0x0a9e('0x41')](_0x65432[_0x0a9e('0x3d')],{'$or':_['map'](_0x65432[_0x0a9e('0x39')],function(_0x17e88c){var _0x88dcbf={};_0x88dcbf[_0x17e88c]={'$like':'%'+_0x2da03c[_0x0a9e('0x35')][_0x0a9e('0x40')]+'%'};return _0x88dcbf;})});}_0x65432=_['merge']({},_0x65432,_0x2da03c[_0x0a9e('0x44')]);return _0x19b4df[_0x0a9e('0x52')](_0x65432);}})[_0x0a9e('0x19')](function(_0x47bb43){if(_0x47bb43){_0x232830=_0x47bb43[_0x0a9e('0x51')];if(!_0x2da03c['query']['hasOwnProperty'](_0x0a9e('0x53'))){_0x65432[_0x0a9e('0x28')]=qs[_0x0a9e('0x28')](_0x2da03c[_0x0a9e('0x35')][_0x0a9e('0x28')]);_0x65432[_0x0a9e('0x27')]=qs[_0x0a9e('0x27')](_0x2da03c[_0x0a9e('0x35')][_0x0a9e('0x27')]);}return _0x19b4df[_0x0a9e('0x52')](_0x65432);}})[_0x0a9e('0x19')](function(_0x19012b){if(_0x19012b){return _0x19012b?{'count':_0x232830,'rows':_0x19012b}:null;}})[_0x0a9e('0x19')](respondWithResult(_0x47de4c,null))[_0x0a9e('0x21')](handleError(_0x47de4c,null));};exports[_0x0a9e('0x54')]=function(_0x412a72,_0x2a28c0,_0x4257c9){if(_0x412a72['body']['id']){delete _0x412a72[_0x0a9e('0x4d')]['id'];}return db[_0x0a9e('0x31')][_0x0a9e('0x4f')]({'where':{'id':_0x412a72['params']['id']}})[_0x0a9e('0x19')](handleEntityNotFound(_0x2a28c0,null))[_0x0a9e('0x19')](function(_0x4b341d){if(_0x4b341d){_0x412a72[_0x0a9e('0x4d')][_0x0a9e('0x55')]=_0x4b341d['id'];_0x412a72[_0x0a9e('0x4d')][_0x0a9e('0x56')]=integrations[_0x0a9e('0x57')](_0x412a72['body']['channel'],_0x412a72['body'][_0x0a9e('0x58')]);_0x412a72[_0x0a9e('0x4d')][_0x0a9e('0x59')]=integrations[_0x0a9e('0x5a')](_0x412a72[_0x0a9e('0x4d')][_0x0a9e('0x5b')],_0x412a72[_0x0a9e('0x4d')][_0x0a9e('0x58')]);return db['FreshdeskConfiguration'][_0x0a9e('0x4c')](_0x412a72[_0x0a9e('0x4d')],{'include':[{'model':db[_0x0a9e('0x5c')],'as':'Subjects'},{'model':db[_0x0a9e('0x5c')],'as':'Descriptions'}]});}return null;})[_0x0a9e('0x19')](respondWithResult(_0x2a28c0,null))[_0x0a9e('0x21')](handleError(_0x2a28c0,null));};exports['getFields']=function(_0x2ed01e,_0x75912a,_0x2cc7a7){var _0x317c0c='';return db['FreshdeskAccount'][_0x0a9e('0x4f')]({'where':{'id':_0x2ed01e[_0x0a9e('0x49')]['id']},'attributes':['id',_0x0a9e('0x5d'),_0x0a9e('0x5e')]})['then'](handleEntityNotFound(_0x75912a,null))[_0x0a9e('0x19')](function(_0x3d91db){if(_0x3d91db){_0x317c0c=_0x3d91db[_0x0a9e('0x5d')];var _0x361b21=_0x317c0c['slice'](-0x1);if(_0x361b21==='/'){_0x317c0c=_0x317c0c[_0x0a9e('0x5f')](0x0,_0x317c0c[_0x0a9e('0x60')](_0x361b21));}return rp({'method':_0x0a9e('0x61'),'uri':util[_0x0a9e('0x62')](_0x0a9e('0x63'),_0x317c0c,_0x0a9e('0x64')),'headers':{'Authorization':util[_0x0a9e('0x62')](_0x0a9e('0x65'),new Buffer(util[_0x0a9e('0x62')](_0x0a9e('0x66'),_0x3d91db[_0x0a9e('0x5e')]))[_0x0a9e('0x67')](_0x0a9e('0x68')))},'json':!![]});}})[_0x0a9e('0x19')](function(_0x5b35db){if(_0x5b35db){var _0xf4120f=[_0x0a9e('0x69'),_0x0a9e('0x6a'),'agent',_0x0a9e('0x6b'),_0x0a9e('0x23'),_0x0a9e('0x6c'),_0x0a9e('0x6d'),'source','ticket_type',_0x0a9e('0x6d'),_0x0a9e('0x6e')];_['remove'](_0x5b35db,function(_0x45108c){return _0xf4120f['includes'](_0x45108c[_0x0a9e('0x2f')])||!_0x45108c[_0x0a9e('0x6f')]&&_0x45108c['type']!==_0x0a9e('0x70')&&_0x45108c[_0x0a9e('0x58')]!==_0x0a9e('0x71');});return{'count':_0x5b35db[_0x0a9e('0x51')],'rows':_[_0x0a9e('0x42')](_0x5b35db,function(_0x1f42a0){return{'id':_0x1f42a0[_0x0a9e('0x2f')],'name':_0x1f42a0['label'],'custom':!_0x1f42a0[_0x0a9e('0x6f')],'options':_0x1f42a0[_0x0a9e('0x72')]?_[_0x0a9e('0x42')](_0x1f42a0[_0x0a9e('0x72')],function(_0x492543){return{'name':_[_0x0a9e('0x73')](_0x492543),'value':_0x492543};}):[]};})};}})[_0x0a9e('0x19')](respondWithResult(_0x75912a,null))['catch'](function(_0x1d6834){var _0x5b7940=_0x2ed01e[_0x0a9e('0x35')][_0x0a9e('0x74')]?0x1f4:_0x1d6834[_0x0a9e('0x75')]||0x1f4;logger[_0x0a9e('0x1d')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5b7940,JSON[_0x0a9e('0x76')](_0x1d6834));delete _0x1d6834[_0x0a9e('0x2f')];if(_0x5b7940===0x191){_0x5b7940=0x190;}_0x75912a[_0x0a9e('0x23')](_0x5b7940)['send'](_0x2ed01e[_0x0a9e('0x35')][_0x0a9e('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x1d6834['statusCode']}:_0x1d6834);});};