1279cbfc27b67ea738970c1e6bb86ac45cca6cfe
[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 _0x1ca7=['includes','default','custom_dropdown','label','choices','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','FreshdeskAccount','includeAll','include','findAll','rows','catch','show','find','create','body','params','findOne','FreshdeskConfiguration','rawAttributes','AccountId','Subjects','getSubjects','channel','Descriptions','getFields','remoteUri','slice','lastIndexOf','format','api/v2/ticket_fields','%s:X','apiKey','toString','base64','requester','subject','agent','description','priority','group','source','remove'];(function(_0x358df5,_0x2d31af){var _0x3727b2=function(_0x1c7e9a){while(--_0x1c7e9a){_0x358df5['push'](_0x358df5['shift']());}};_0x3727b2(++_0x2d31af);}(_0x1ca7,0x157));var _0x71ca=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1ca7[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0x71ca('0x0'));var rimraf=require(_0x71ca('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x71ca('0x2'));var BPromise=require(_0x71ca('0x3'));var Mustache=require(_0x71ca('0x4'));var util=require('util');var path=require(_0x71ca('0x5'));var sox=require(_0x71ca('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x71ca('0x7'));var _=require(_0x71ca('0x8'));var squel=require(_0x71ca('0x9'));var crypto=require(_0x71ca('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x71ca('0xb'));var toCsv=require(_0x71ca('0xc'));var querystring=require('querystring');var Papa=require(_0x71ca('0xd'));var Redis=require(_0x71ca('0xe'));var authService=require(_0x71ca('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x71ca('0x10'));var hardwareService=require(_0x71ca('0x11'));var logger=require(_0x71ca('0x12'))(_0x71ca('0x13'));var utils=require(_0x71ca('0x14'));var config=require(_0x71ca('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x71ca('0x16'))['db'];var integrations=require(_0x71ca('0x17'));function respondWithStatusCode(_0x4da234,_0x230345){_0x230345=_0x230345||0xcc;return function(_0x42ad77){if(_0x42ad77){return _0x4da234[_0x71ca('0x18')](_0x230345);}return _0x4da234[_0x71ca('0x19')](_0x230345)[_0x71ca('0x1a')]();};}function respondWithResult(_0x393db8,_0x2a38af){_0x2a38af=_0x2a38af||0xc8;return function(_0x3cbe45){if(_0x3cbe45){return _0x393db8[_0x71ca('0x19')](_0x2a38af)[_0x71ca('0x1b')](_0x3cbe45);}};}function respondWithFilteredResult(_0x505f8e,_0x4b65de){return function(_0x3f206d){if(_0x3f206d){var _0x5c6b85=typeof _0x4b65de[_0x71ca('0x1c')]===_0x71ca('0x1d')&&typeof _0x4b65de['limit']==='undefined';var _0x470470=_0x3f206d['count'];var _0x2c4310=_0x5c6b85?0x0:_0x4b65de[_0x71ca('0x1c')];var _0x302d9b=_0x5c6b85?_0x3f206d[_0x71ca('0x1e')]:_0x4b65de['offset']+_0x4b65de['limit'];var _0x5a4076;if(_0x302d9b>=_0x470470){_0x302d9b=_0x470470;_0x5a4076=0xc8;}else{_0x5a4076=0xce;}_0x505f8e[_0x71ca('0x19')](_0x5a4076);return _0x505f8e[_0x71ca('0x1f')](_0x71ca('0x20'),_0x2c4310+'-'+_0x302d9b+'/'+_0x470470)[_0x71ca('0x1b')](_0x3f206d);}return null;};}function patchUpdates(_0x363fb5){return function(_0xc37e2c){try{jsonpatch[_0x71ca('0x21')](_0xc37e2c,_0x363fb5,!![]);}catch(_0x259bc5){return BPromise[_0x71ca('0x22')](_0x259bc5);}return _0xc37e2c[_0x71ca('0x23')]();};}function saveUpdates(_0x5a501f,_0x48692c){return function(_0x4a7820){if(_0x4a7820){return _0x4a7820[_0x71ca('0x24')](_0x5a501f)['then'](function(_0x4fa46e){return _0x4fa46e;});}return null;};}function removeEntity(_0x1015c0,_0x2e2e22){return function(_0x458d4a){if(_0x458d4a){return _0x458d4a[_0x71ca('0x25')]()[_0x71ca('0x26')](function(){_0x1015c0[_0x71ca('0x19')](0xcc)[_0x71ca('0x1a')]();});}};}function handleEntityNotFound(_0x106f65,_0x35f577){return function(_0x4bfe19){if(!_0x4bfe19){_0x106f65[_0x71ca('0x18')](0x194);}return _0x4bfe19;};}function handleError(_0xddd38a,_0x35c857){_0x35c857=_0x35c857||0x1f4;return function(_0xd6ac43){logger['error'](_0xd6ac43[_0x71ca('0x27')]);if(_0xd6ac43[_0x71ca('0x28')]){delete _0xd6ac43[_0x71ca('0x28')];}_0xddd38a[_0x71ca('0x19')](_0x35c857)[_0x71ca('0x29')](_0xd6ac43);};}exports[_0x71ca('0x2a')]=function(_0x991bc,_0x5f2367){var _0x53562d={},_0xabe6e7={},_0x220584={'count':0x0,'rows':[]};var _0x7feccd=_['map'](db['FreshdeskAccount']['rawAttributes'],function(_0x1bcccb){return{'name':_0x1bcccb['fieldName'],'type':_0x1bcccb['type'][_0x71ca('0x2b')]};});_0xabe6e7['model']=_[_0x71ca('0x2c')](_0x7feccd,_0x71ca('0x28'));_0xabe6e7[_0x71ca('0x2d')]=_['keys'](_0x991bc[_0x71ca('0x2d')]);_0xabe6e7[_0x71ca('0x2e')]=_[_0x71ca('0x2f')](_0xabe6e7[_0x71ca('0x30')],_0xabe6e7[_0x71ca('0x2d')]);_0x53562d['attributes']=_[_0x71ca('0x2f')](_0xabe6e7[_0x71ca('0x30')],qs[_0x71ca('0x31')](_0x991bc[_0x71ca('0x2d')][_0x71ca('0x31')]));_0x53562d[_0x71ca('0x32')]=_0x53562d[_0x71ca('0x32')][_0x71ca('0x33')]?_0x53562d['attributes']:_0xabe6e7['model'];if(!_0x991bc[_0x71ca('0x2d')][_0x71ca('0x34')](_0x71ca('0x35'))){_0x53562d[_0x71ca('0x36')]=qs[_0x71ca('0x36')](_0x991bc[_0x71ca('0x2d')][_0x71ca('0x36')]);_0x53562d[_0x71ca('0x1c')]=qs['offset'](_0x991bc[_0x71ca('0x2d')]['offset']);}_0x53562d[_0x71ca('0x37')]=qs[_0x71ca('0x38')](_0x991bc[_0x71ca('0x2d')][_0x71ca('0x38')]);_0x53562d[_0x71ca('0x39')]=qs[_0x71ca('0x2e')](_[_0x71ca('0x3a')](_0x991bc[_0x71ca('0x2d')],_0xabe6e7[_0x71ca('0x2e')]),_0x7feccd);if(_0x991bc[_0x71ca('0x2d')][_0x71ca('0x3b')]){_0x53562d['where']=_[_0x71ca('0x3c')](_0x53562d[_0x71ca('0x39')],{'$or':_[_0x71ca('0x2c')](_0x7feccd,function(_0x53bb16){if(_0x53bb16[_0x71ca('0x3d')]!==_0x71ca('0x3e')){var _0x1dfc57={};_0x1dfc57[_0x53bb16[_0x71ca('0x28')]]={'$like':'%'+_0x991bc[_0x71ca('0x2d')]['filter']+'%'};return _0x1dfc57;}})});}_0x53562d=_['merge']({},_0x53562d,_0x991bc[_0x71ca('0x3f')]);var _0x9a7046={'where':_0x53562d[_0x71ca('0x39')]};return db[_0x71ca('0x40')][_0x71ca('0x1e')](_0x9a7046)[_0x71ca('0x26')](function(_0x5b567b){_0x220584['count']=_0x5b567b;if(_0x991bc[_0x71ca('0x2d')][_0x71ca('0x41')]){_0x53562d[_0x71ca('0x42')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x71ca('0x43')](_0x53562d);})[_0x71ca('0x26')](function(_0xd53d29){_0x220584[_0x71ca('0x44')]=_0xd53d29;return _0x220584;})[_0x71ca('0x26')](respondWithFilteredResult(_0x5f2367,_0x53562d))[_0x71ca('0x45')](handleError(_0x5f2367,null));};exports[_0x71ca('0x46')]=function(_0x3b6d51,_0x37e83a){var _0x223aa5={'raw':![],'where':{'id':_0x3b6d51['params']['id']}},_0x550d50={};_0x550d50[_0x71ca('0x30')]=_['keys'](db['FreshdeskAccount']['rawAttributes']);_0x550d50['query']=_['keys'](_0x3b6d51[_0x71ca('0x2d')]);_0x550d50[_0x71ca('0x2e')]=_[_0x71ca('0x2f')](_0x550d50[_0x71ca('0x30')],_0x550d50[_0x71ca('0x2d')]);_0x223aa5['attributes']=_['intersection'](_0x550d50[_0x71ca('0x30')],qs[_0x71ca('0x31')](_0x3b6d51[_0x71ca('0x2d')][_0x71ca('0x31')]));_0x223aa5[_0x71ca('0x32')]=_0x223aa5[_0x71ca('0x32')]['length']?_0x223aa5[_0x71ca('0x32')]:_0x550d50[_0x71ca('0x30')];if(_0x3b6d51[_0x71ca('0x2d')][_0x71ca('0x41')]){_0x223aa5['include']=[{'all':!![]}];}_0x223aa5=_[_0x71ca('0x3c')]({},_0x223aa5,_0x3b6d51['options']);return db[_0x71ca('0x40')][_0x71ca('0x47')](_0x223aa5)[_0x71ca('0x26')](handleEntityNotFound(_0x37e83a,null))[_0x71ca('0x26')](respondWithResult(_0x37e83a,null))[_0x71ca('0x45')](handleError(_0x37e83a,null));};exports[_0x71ca('0x48')]=function(_0x2441e4,_0x5a2ae2){return db[_0x71ca('0x40')][_0x71ca('0x48')](_0x2441e4[_0x71ca('0x49')],{})[_0x71ca('0x26')](respondWithResult(_0x5a2ae2,0xc9))[_0x71ca('0x45')](handleError(_0x5a2ae2,null));};exports[_0x71ca('0x24')]=function(_0x18bf0d,_0x546ff0){if(_0x18bf0d[_0x71ca('0x49')]['id']){delete _0x18bf0d['body']['id'];}return db[_0x71ca('0x40')][_0x71ca('0x47')]({'where':{'id':_0x18bf0d[_0x71ca('0x4a')]['id']}})['then'](handleEntityNotFound(_0x546ff0,null))[_0x71ca('0x26')](saveUpdates(_0x18bf0d['body'],null))[_0x71ca('0x26')](respondWithResult(_0x546ff0,null))['catch'](handleError(_0x546ff0,null));};exports[_0x71ca('0x25')]=function(_0x14f264,_0x14b83d){return db['FreshdeskAccount'][_0x71ca('0x47')]({'where':{'id':_0x14f264[_0x71ca('0x4a')]['id']}})[_0x71ca('0x26')](handleEntityNotFound(_0x14b83d,null))[_0x71ca('0x26')](removeEntity(_0x14b83d,null))['catch'](handleError(_0x14b83d,null));};exports['getConfigurations']=function(_0x1c9a4e,_0x2a2680,_0x4abd78){var _0x3364b4={};var _0x35471a={};var _0x4f133f;var _0xf11ba3;return db['FreshdeskAccount'][_0x71ca('0x4b')]({'where':{'id':_0x1c9a4e[_0x71ca('0x4a')]['id']}})[_0x71ca('0x26')](handleEntityNotFound(_0x2a2680,null))[_0x71ca('0x26')](function(_0x171be3){if(_0x171be3){_0x4f133f=_0x171be3;_0x35471a['model']=_['keys'](db[_0x71ca('0x4c')][_0x71ca('0x4d')]);_0x35471a[_0x71ca('0x2d')]=_['keys'](_0x1c9a4e[_0x71ca('0x2d')]);_0x35471a[_0x71ca('0x2e')]=_[_0x71ca('0x2f')](_0x35471a[_0x71ca('0x30')],_0x35471a[_0x71ca('0x2d')]);_0x3364b4[_0x71ca('0x32')]=_[_0x71ca('0x2f')](_0x35471a[_0x71ca('0x30')],qs[_0x71ca('0x31')](_0x1c9a4e[_0x71ca('0x2d')]['fields']));_0x3364b4['attributes']=_0x3364b4[_0x71ca('0x32')][_0x71ca('0x33')]?_0x3364b4['attributes']:_0x35471a[_0x71ca('0x30')];_0x3364b4[_0x71ca('0x37')]=qs['sort'](_0x1c9a4e[_0x71ca('0x2d')]['sort']);_0x3364b4[_0x71ca('0x39')]=qs[_0x71ca('0x2e')](_[_0x71ca('0x3a')](_0x1c9a4e[_0x71ca('0x2d')],_0x35471a[_0x71ca('0x2e')]));if(_0x1c9a4e['query'][_0x71ca('0x3b')]){_0x3364b4['where']=_['merge'](_0x3364b4[_0x71ca('0x39')],{'$or':_['map'](_0x3364b4[_0x71ca('0x32')],function(_0x1625ce){var _0x160c25={};_0x160c25[_0x1625ce]={'$like':'%'+_0x1c9a4e[_0x71ca('0x2d')][_0x71ca('0x3b')]+'%'};return _0x160c25;})});}_0x3364b4=_['merge']({},_0x3364b4,_0x1c9a4e[_0x71ca('0x3f')]);return _0x4f133f['getConfigurations'](_0x3364b4);}})['then'](function(_0x15fe12){if(_0x15fe12){_0xf11ba3=_0x15fe12[_0x71ca('0x33')];if(!_0x1c9a4e['query'][_0x71ca('0x34')]('nolimit')){_0x3364b4['limit']=qs[_0x71ca('0x36')](_0x1c9a4e[_0x71ca('0x2d')]['limit']);_0x3364b4[_0x71ca('0x1c')]=qs[_0x71ca('0x1c')](_0x1c9a4e[_0x71ca('0x2d')][_0x71ca('0x1c')]);}return _0x4f133f['getConfigurations'](_0x3364b4);}})[_0x71ca('0x26')](function(_0x5bd8fb){if(_0x5bd8fb){return _0x5bd8fb?{'count':_0xf11ba3,'rows':_0x5bd8fb}:null;}})[_0x71ca('0x26')](respondWithResult(_0x2a2680,null))[_0x71ca('0x45')](handleError(_0x2a2680,null));};exports['addConfiguration']=function(_0x398345,_0x5881b8,_0x53460f){if(_0x398345[_0x71ca('0x49')]['id']){delete _0x398345[_0x71ca('0x49')]['id'];}return db['FreshdeskAccount'][_0x71ca('0x4b')]({'where':{'id':_0x398345['params']['id']}})[_0x71ca('0x26')](handleEntityNotFound(_0x5881b8,null))[_0x71ca('0x26')](function(_0x1ebbe8){if(_0x1ebbe8){_0x398345[_0x71ca('0x49')][_0x71ca('0x4e')]=_0x1ebbe8['id'];_0x398345['body'][_0x71ca('0x4f')]=integrations[_0x71ca('0x50')](_0x398345['body'][_0x71ca('0x51')],_0x398345[_0x71ca('0x49')][_0x71ca('0x3d')]);_0x398345[_0x71ca('0x49')]['Descriptions']=integrations['getDescriptions'](_0x398345[_0x71ca('0x49')]['channel'],_0x398345[_0x71ca('0x49')][_0x71ca('0x3d')]);return db['FreshdeskConfiguration']['create'](_0x398345['body'],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db['FreshdeskField'],'as':_0x71ca('0x52')}]});}return null;})[_0x71ca('0x26')](respondWithResult(_0x5881b8,null))[_0x71ca('0x45')](handleError(_0x5881b8,null));};exports[_0x71ca('0x53')]=function(_0x2b2c05,_0x3c1714,_0x133fd4){var _0x30d863='';return db[_0x71ca('0x40')][_0x71ca('0x4b')]({'where':{'id':_0x2b2c05[_0x71ca('0x4a')]['id']},'attributes':['id',_0x71ca('0x54'),'apiKey']})[_0x71ca('0x26')](handleEntityNotFound(_0x3c1714,null))[_0x71ca('0x26')](function(_0x2e80c3){if(_0x2e80c3){_0x30d863=_0x2e80c3[_0x71ca('0x54')];var _0x2a2ffc=_0x30d863[_0x71ca('0x55')](-0x1);if(_0x2a2ffc==='/'){_0x30d863=_0x30d863['substring'](0x0,_0x30d863[_0x71ca('0x56')](_0x2a2ffc));}return rp({'method':'GET','uri':util[_0x71ca('0x57')]('%s/%s',_0x30d863,_0x71ca('0x58')),'headers':{'Authorization':util[_0x71ca('0x57')]('Basic\x20%s',new Buffer(util[_0x71ca('0x57')](_0x71ca('0x59'),_0x2e80c3[_0x71ca('0x5a')]))[_0x71ca('0x5b')](_0x71ca('0x5c')))},'json':!![]});}})[_0x71ca('0x26')](function(_0x6e5094){if(_0x6e5094){var _0x56e953=[_0x71ca('0x5d'),_0x71ca('0x5e'),_0x71ca('0x5f'),_0x71ca('0x60'),_0x71ca('0x19'),_0x71ca('0x61'),_0x71ca('0x62'),_0x71ca('0x63'),'ticket_type',_0x71ca('0x62'),'company'];_[_0x71ca('0x64')](_0x6e5094,function(_0x1e37a8){return _0x56e953[_0x71ca('0x65')](_0x1e37a8[_0x71ca('0x28')])||!_0x1e37a8[_0x71ca('0x66')]&&_0x1e37a8[_0x71ca('0x3d')]!=='custom_text'&&_0x1e37a8[_0x71ca('0x3d')]!==_0x71ca('0x67');});return{'count':_0x6e5094[_0x71ca('0x33')],'rows':_[_0x71ca('0x2c')](_0x6e5094,function(_0x2d7c4c){return{'id':_0x2d7c4c[_0x71ca('0x28')],'name':_0x2d7c4c[_0x71ca('0x68')],'custom':!_0x2d7c4c['default'],'options':_0x2d7c4c[_0x71ca('0x69')]?_[_0x71ca('0x2c')](_0x2d7c4c[_0x71ca('0x69')],function(_0x370ba0){return{'name':_['capitalize'](_0x370ba0),'value':_0x370ba0};}):[]};})};}})[_0x71ca('0x26')](respondWithResult(_0x3c1714,null))[_0x71ca('0x45')](function(_0x1c6b5b){var _0x4a716a=_0x2b2c05[_0x71ca('0x2d')][_0x71ca('0x6a')]?0x1f4:_0x1c6b5b[_0x71ca('0x6b')]||0x1f4;logger[_0x71ca('0x6c')](_0x71ca('0x6d'),'getFields',_0x4a716a,JSON[_0x71ca('0x6e')](_0x1c6b5b));delete _0x1c6b5b[_0x71ca('0x28')];if(_0x4a716a===0x191){_0x4a716a=0x190;}_0x3c1714[_0x71ca('0x19')](_0x4a716a)[_0x71ca('0x29')](_0x2b2c05[_0x71ca('0x2d')][_0x71ca('0x6a')]?{'message':'Wrong\x20credentials','statusCode':_0x1c6b5b[_0x71ca('0x6b')]}:_0x1c6b5b);});};