6deee9a557bf2f0d044f192e4ac15aeb74007e35
[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 _0x9993=['rows','catch','find','create','body','params','FreshdeskConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','remoteUri','apiKey','lastIndexOf','%s/%s','format','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','priority','group','source','ticket_type','company','custom_text','custom_dropdown','default','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','map','VIRTUAL','filter','merge','options','FreshdeskAccount','includeAll','include','findAll'];(function(_0x125068,_0x19f720){var _0x1da90c=function(_0x175d7c){while(--_0x175d7c){_0x125068['push'](_0x125068['shift']());}};_0x1da90c(++_0x19f720);}(_0x9993,0x109));var _0x3999=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x9993[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0x3999('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3999('0x1'));var jsonpatch=require(_0x3999('0x2'));var rp=require(_0x3999('0x3'));var moment=require('moment');var BPromise=require(_0x3999('0x4'));var Mustache=require('mustache');var util=require(_0x3999('0x5'));var path=require(_0x3999('0x6'));var sox=require(_0x3999('0x7'));var csv=require('to-csv');var ejs=require(_0x3999('0x8'));var fs=require('fs');var fs_extra=require(_0x3999('0x9'));var _=require('lodash');var squel=require(_0x3999('0xa'));var crypto=require(_0x3999('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x3999('0xc'));var toCsv=require(_0x3999('0xd'));var querystring=require('querystring');var Papa=require(_0x3999('0xe'));var Redis=require('ioredis');var authService=require(_0x3999('0xf'));var qs=require(_0x3999('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3999('0x11'));var logger=require(_0x3999('0x12'))(_0x3999('0x13'));var utils=require(_0x3999('0x14'));var config=require(_0x3999('0x15'));var licenseUtil=require(_0x3999('0x16'));var db=require(_0x3999('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x7f35f5,_0x3e34e9){_0x3e34e9=_0x3e34e9||0xcc;return function(_0x4e67ed){if(_0x4e67ed){return _0x7f35f5[_0x3999('0x18')](_0x3e34e9);}return _0x7f35f5[_0x3999('0x19')](_0x3e34e9)[_0x3999('0x1a')]();};}function respondWithResult(_0x30ca58,_0x5a36b0){_0x5a36b0=_0x5a36b0||0xc8;return function(_0x471033){if(_0x471033){return _0x30ca58['status'](_0x5a36b0)[_0x3999('0x1b')](_0x471033);}};}function respondWithFilteredResult(_0x5803af,_0x1756e7){return function(_0x56787c){if(_0x56787c){var _0x28561f=typeof _0x1756e7[_0x3999('0x1c')]===_0x3999('0x1d')&&typeof _0x1756e7[_0x3999('0x1e')]==='undefined';var _0x5e1aa5=_0x56787c[_0x3999('0x1f')];var _0x29ca01=_0x28561f?0x0:_0x1756e7['offset'];var _0x19c2fa=_0x28561f?_0x56787c[_0x3999('0x1f')]:_0x1756e7['offset']+_0x1756e7[_0x3999('0x1e')];var _0x5999b6;if(_0x19c2fa>=_0x5e1aa5){_0x19c2fa=_0x5e1aa5;_0x5999b6=0xc8;}else{_0x5999b6=0xce;}_0x5803af[_0x3999('0x19')](_0x5999b6);return _0x5803af['set']('Content-Range',_0x29ca01+'-'+_0x19c2fa+'/'+_0x5e1aa5)[_0x3999('0x1b')](_0x56787c);}return null;};}function patchUpdates(_0x3e4509){return function(_0x46e9b0){try{jsonpatch[_0x3999('0x20')](_0x46e9b0,_0x3e4509,!![]);}catch(_0x39debe){return BPromise[_0x3999('0x21')](_0x39debe);}return _0x46e9b0['save']();};}function saveUpdates(_0xb7a29f,_0x53ea75){return function(_0x28fec1){if(_0x28fec1){return _0x28fec1[_0x3999('0x22')](_0xb7a29f)[_0x3999('0x23')](function(_0x39858b){return _0x39858b;});}return null;};}function removeEntity(_0xb17e81,_0x553535){return function(_0x4f9096){if(_0x4f9096){return _0x4f9096[_0x3999('0x24')]()[_0x3999('0x23')](function(){_0xb17e81[_0x3999('0x19')](0xcc)[_0x3999('0x1a')]();});}};}function handleEntityNotFound(_0xedc3db,_0x5f3883){return function(_0xf9749b){if(!_0xf9749b){_0xedc3db[_0x3999('0x18')](0x194);}return _0xf9749b;};}function handleError(_0x2e0b94,_0xe8ed9e){_0xe8ed9e=_0xe8ed9e||0x1f4;return function(_0x276543){logger[_0x3999('0x25')](_0x276543[_0x3999('0x26')]);if(_0x276543[_0x3999('0x27')]){delete _0x276543['name'];}_0x2e0b94[_0x3999('0x19')](_0xe8ed9e)[_0x3999('0x28')](_0x276543);};}exports[_0x3999('0x29')]=function(_0x404d3f,_0xe22b0a){var _0x5937ef={},_0x2994b7={},_0x1d8942={'count':0x0,'rows':[]};var _0x516e0f=_['map'](db['FreshdeskAccount'][_0x3999('0x2a')],function(_0x29e3c8){return{'name':_0x29e3c8[_0x3999('0x2b')],'type':_0x29e3c8[_0x3999('0x2c')][_0x3999('0x2d')]};});_0x2994b7[_0x3999('0x2e')]=_['map'](_0x516e0f,_0x3999('0x27'));_0x2994b7[_0x3999('0x2f')]=_[_0x3999('0x30')](_0x404d3f[_0x3999('0x2f')]);_0x2994b7[_0x3999('0x31')]=_[_0x3999('0x32')](_0x2994b7['model'],_0x2994b7['query']);_0x5937ef[_0x3999('0x33')]=_[_0x3999('0x32')](_0x2994b7[_0x3999('0x2e')],qs['fields'](_0x404d3f['query'][_0x3999('0x34')]));_0x5937ef[_0x3999('0x33')]=_0x5937ef[_0x3999('0x33')][_0x3999('0x35')]?_0x5937ef[_0x3999('0x33')]:_0x2994b7[_0x3999('0x2e')];if(!_0x404d3f[_0x3999('0x2f')][_0x3999('0x36')](_0x3999('0x37'))){_0x5937ef[_0x3999('0x1e')]=qs[_0x3999('0x1e')](_0x404d3f[_0x3999('0x2f')]['limit']);_0x5937ef['offset']=qs[_0x3999('0x1c')](_0x404d3f[_0x3999('0x2f')][_0x3999('0x1c')]);}_0x5937ef[_0x3999('0x38')]=qs[_0x3999('0x39')](_0x404d3f['query'][_0x3999('0x39')]);_0x5937ef[_0x3999('0x3a')]=qs[_0x3999('0x31')](_['pick'](_0x404d3f[_0x3999('0x2f')],_0x2994b7[_0x3999('0x31')]),_0x516e0f);if(_0x404d3f[_0x3999('0x2f')]['filter']){_0x5937ef[_0x3999('0x3a')]=_['merge'](_0x5937ef['where'],{'$or':_[_0x3999('0x3b')](_0x516e0f,function(_0x20030d){if(_0x20030d[_0x3999('0x2c')]!==_0x3999('0x3c')){var _0x507a13={};_0x507a13[_0x20030d[_0x3999('0x27')]]={'$like':'%'+_0x404d3f[_0x3999('0x2f')][_0x3999('0x3d')]+'%'};return _0x507a13;}})});}_0x5937ef=_[_0x3999('0x3e')]({},_0x5937ef,_0x404d3f[_0x3999('0x3f')]);var _0x570881={'where':_0x5937ef[_0x3999('0x3a')]};return db[_0x3999('0x40')]['count'](_0x570881)[_0x3999('0x23')](function(_0x11234b){_0x1d8942[_0x3999('0x1f')]=_0x11234b;if(_0x404d3f[_0x3999('0x2f')][_0x3999('0x41')]){_0x5937ef[_0x3999('0x42')]=[{'all':!![]}];}return db[_0x3999('0x40')][_0x3999('0x43')](_0x5937ef);})[_0x3999('0x23')](function(_0x142864){_0x1d8942[_0x3999('0x44')]=_0x142864;return _0x1d8942;})['then'](respondWithFilteredResult(_0xe22b0a,_0x5937ef))[_0x3999('0x45')](handleError(_0xe22b0a,null));};exports['show']=function(_0x41dedc,_0x3575cf){var _0x15ddcb={'raw':![],'where':{'id':_0x41dedc['params']['id']}},_0x35c536={};_0x35c536[_0x3999('0x2e')]=_[_0x3999('0x30')](db[_0x3999('0x40')]['rawAttributes']);_0x35c536[_0x3999('0x2f')]=_[_0x3999('0x30')](_0x41dedc[_0x3999('0x2f')]);_0x35c536[_0x3999('0x31')]=_[_0x3999('0x32')](_0x35c536[_0x3999('0x2e')],_0x35c536['query']);_0x15ddcb[_0x3999('0x33')]=_['intersection'](_0x35c536[_0x3999('0x2e')],qs['fields'](_0x41dedc[_0x3999('0x2f')][_0x3999('0x34')]));_0x15ddcb[_0x3999('0x33')]=_0x15ddcb['attributes'][_0x3999('0x35')]?_0x15ddcb[_0x3999('0x33')]:_0x35c536[_0x3999('0x2e')];if(_0x41dedc[_0x3999('0x2f')][_0x3999('0x41')]){_0x15ddcb[_0x3999('0x42')]=[{'all':!![]}];}_0x15ddcb=_[_0x3999('0x3e')]({},_0x15ddcb,_0x41dedc[_0x3999('0x3f')]);return db[_0x3999('0x40')][_0x3999('0x46')](_0x15ddcb)[_0x3999('0x23')](handleEntityNotFound(_0x3575cf,null))[_0x3999('0x23')](respondWithResult(_0x3575cf,null))[_0x3999('0x45')](handleError(_0x3575cf,null));};exports[_0x3999('0x47')]=function(_0xfe044d,_0x664042){return db[_0x3999('0x40')][_0x3999('0x47')](_0xfe044d[_0x3999('0x48')],{})[_0x3999('0x23')](respondWithResult(_0x664042,0xc9))[_0x3999('0x45')](handleError(_0x664042,null));};exports[_0x3999('0x22')]=function(_0x58ab03,_0x375e01){if(_0x58ab03[_0x3999('0x48')]['id']){delete _0x58ab03['body']['id'];}return db[_0x3999('0x40')][_0x3999('0x46')]({'where':{'id':_0x58ab03['params']['id']}})[_0x3999('0x23')](handleEntityNotFound(_0x375e01,null))[_0x3999('0x23')](saveUpdates(_0x58ab03['body'],null))[_0x3999('0x23')](respondWithResult(_0x375e01,null))['catch'](handleError(_0x375e01,null));};exports[_0x3999('0x24')]=function(_0x281ef4,_0x34c650){return db[_0x3999('0x40')][_0x3999('0x46')]({'where':{'id':_0x281ef4[_0x3999('0x49')]['id']}})[_0x3999('0x23')](handleEntityNotFound(_0x34c650,null))[_0x3999('0x23')](removeEntity(_0x34c650,null))[_0x3999('0x45')](handleError(_0x34c650,null));};exports['getConfigurations']=function(_0x5162c0,_0x2e4ff5,_0x39810e){var _0x98b5c5={};var _0x3df432={};var _0x5030b7;var _0x3deb72;return db[_0x3999('0x40')]['findOne']({'where':{'id':_0x5162c0[_0x3999('0x49')]['id']}})[_0x3999('0x23')](handleEntityNotFound(_0x2e4ff5,null))['then'](function(_0x1dfbe9){if(_0x1dfbe9){_0x5030b7=_0x1dfbe9;_0x3df432[_0x3999('0x2e')]=_[_0x3999('0x30')](db[_0x3999('0x4a')]['rawAttributes']);_0x3df432[_0x3999('0x2f')]=_['keys'](_0x5162c0[_0x3999('0x2f')]);_0x3df432[_0x3999('0x31')]=_[_0x3999('0x32')](_0x3df432[_0x3999('0x2e')],_0x3df432[_0x3999('0x2f')]);_0x98b5c5[_0x3999('0x33')]=_[_0x3999('0x32')](_0x3df432[_0x3999('0x2e')],qs[_0x3999('0x34')](_0x5162c0[_0x3999('0x2f')]['fields']));_0x98b5c5['attributes']=_0x98b5c5[_0x3999('0x33')][_0x3999('0x35')]?_0x98b5c5[_0x3999('0x33')]:_0x3df432[_0x3999('0x2e')];_0x98b5c5['order']=qs[_0x3999('0x39')](_0x5162c0[_0x3999('0x2f')][_0x3999('0x39')]);_0x98b5c5[_0x3999('0x3a')]=qs[_0x3999('0x31')](_['pick'](_0x5162c0['query'],_0x3df432[_0x3999('0x31')]));if(_0x5162c0[_0x3999('0x2f')][_0x3999('0x3d')]){_0x98b5c5[_0x3999('0x3a')]=_[_0x3999('0x3e')](_0x98b5c5[_0x3999('0x3a')],{'$or':_[_0x3999('0x3b')](_0x98b5c5[_0x3999('0x33')],function(_0xf06f94){var _0x45d7e1={};_0x45d7e1[_0xf06f94]={'$like':'%'+_0x5162c0[_0x3999('0x2f')][_0x3999('0x3d')]+'%'};return _0x45d7e1;})});}_0x98b5c5=_['merge']({},_0x98b5c5,_0x5162c0[_0x3999('0x3f')]);return _0x5030b7[_0x3999('0x4b')](_0x98b5c5);}})[_0x3999('0x23')](function(_0x541f75){if(_0x541f75){_0x3deb72=_0x541f75[_0x3999('0x35')];if(!_0x5162c0[_0x3999('0x2f')][_0x3999('0x36')](_0x3999('0x37'))){_0x98b5c5[_0x3999('0x1e')]=qs[_0x3999('0x1e')](_0x5162c0[_0x3999('0x2f')][_0x3999('0x1e')]);_0x98b5c5['offset']=qs[_0x3999('0x1c')](_0x5162c0[_0x3999('0x2f')][_0x3999('0x1c')]);}return _0x5030b7[_0x3999('0x4b')](_0x98b5c5);}})[_0x3999('0x23')](function(_0x4463c6){if(_0x4463c6){return _0x4463c6?{'count':_0x3deb72,'rows':_0x4463c6}:null;}})[_0x3999('0x23')](respondWithResult(_0x2e4ff5,null))[_0x3999('0x45')](handleError(_0x2e4ff5,null));};exports[_0x3999('0x4c')]=function(_0x40311a,_0x444155,_0x31da76){if(_0x40311a[_0x3999('0x48')]['id']){delete _0x40311a['body']['id'];}return db[_0x3999('0x40')][_0x3999('0x4d')]({'where':{'id':_0x40311a['params']['id']}})[_0x3999('0x23')](handleEntityNotFound(_0x444155,null))[_0x3999('0x23')](function(_0x413102){if(_0x413102){_0x40311a[_0x3999('0x48')][_0x3999('0x4e')]=_0x413102['id'];_0x40311a[_0x3999('0x48')][_0x3999('0x4f')]=integrations[_0x3999('0x50')](_0x40311a[_0x3999('0x48')][_0x3999('0x51')],_0x40311a[_0x3999('0x48')][_0x3999('0x2c')]);_0x40311a[_0x3999('0x48')][_0x3999('0x52')]=integrations[_0x3999('0x53')](_0x40311a[_0x3999('0x48')][_0x3999('0x51')],_0x40311a['body'][_0x3999('0x2c')]);return db[_0x3999('0x4a')]['create'](_0x40311a[_0x3999('0x48')],{'include':[{'model':db['FreshdeskField'],'as':_0x3999('0x4f')},{'model':db[_0x3999('0x54')],'as':_0x3999('0x52')}]});}return null;})[_0x3999('0x23')](respondWithResult(_0x444155,null))[_0x3999('0x45')](handleError(_0x444155,null));};exports['getFields']=function(_0x33cf54,_0x248418,_0x2d8c29){var _0x2baf4f='';return db[_0x3999('0x40')][_0x3999('0x4d')]({'where':{'id':_0x33cf54[_0x3999('0x49')]['id']},'attributes':['id',_0x3999('0x55'),_0x3999('0x56')]})[_0x3999('0x23')](handleEntityNotFound(_0x248418,null))['then'](function(_0x10b7cf){if(_0x10b7cf){_0x2baf4f=_0x10b7cf['remoteUri'];var _0x278080=_0x2baf4f['slice'](-0x1);if(_0x278080==='/'){_0x2baf4f=_0x2baf4f['substring'](0x0,_0x2baf4f[_0x3999('0x57')](_0x278080));}return rp({'method':'GET','uri':util['format'](_0x3999('0x58'),_0x2baf4f,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x3999('0x59')](_0x3999('0x5a'),new Buffer(util[_0x3999('0x59')](_0x3999('0x5b'),_0x10b7cf['apiKey']))[_0x3999('0x5c')](_0x3999('0x5d')))},'json':!![]});}})[_0x3999('0x23')](function(_0x4c005e){if(_0x4c005e){var _0x3f284d=[_0x3999('0x5e'),_0x3999('0x5f'),_0x3999('0x60'),'description',_0x3999('0x19'),_0x3999('0x61'),_0x3999('0x62'),_0x3999('0x63'),_0x3999('0x64'),'group',_0x3999('0x65')];_['remove'](_0x4c005e,function(_0x5e5a61){return _0x3f284d['includes'](_0x5e5a61['name'])||!_0x5e5a61['default']&&_0x5e5a61['type']!==_0x3999('0x66')&&_0x5e5a61[_0x3999('0x2c')]!==_0x3999('0x67');});return{'count':_0x4c005e[_0x3999('0x35')],'rows':_[_0x3999('0x3b')](_0x4c005e,function(_0x1c4bb6){return{'id':_0x1c4bb6[_0x3999('0x27')],'name':_0x1c4bb6['label'],'custom':!_0x1c4bb6[_0x3999('0x68')],'options':_0x1c4bb6['choices']?_['map'](_0x1c4bb6[_0x3999('0x69')],function(_0x2844df){return{'name':_[_0x3999('0x6a')](_0x2844df),'value':_0x2844df};}):[]};})};}})[_0x3999('0x23')](respondWithResult(_0x248418,null))[_0x3999('0x45')](function(_0x42e707){var _0x32f92c=_0x33cf54[_0x3999('0x2f')][_0x3999('0x6b')]?0x1f4:_0x42e707[_0x3999('0x6c')]||0x1f4;logger[_0x3999('0x25')](_0x3999('0x6d'),'getFields',_0x32f92c,JSON[_0x3999('0x6e')](_0x42e707));delete _0x42e707[_0x3999('0x27')];if(_0x32f92c===0x191){_0x32f92c=0x190;}_0x248418[_0x3999('0x19')](_0x32f92c)[_0x3999('0x28')](_0x33cf54[_0x3999('0x2f')][_0x3999('0x6b')]?{'message':'Wrong\x20credentials','statusCode':_0x42e707[_0x3999('0x6c')]}:_0x42e707);});};