4f9b17fcf28660e14e2dad20be5136184ef9c903
[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 _0xd91f=['lastIndexOf','GET','format','%s/%s','%s:X','toString','requester','subject','agent','description','priority','source','ticket_type','group','company','remove','includes','default','custom_text','custom_dropdown','label','choices','capitalize','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','jayson/promise','client','http','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','count','offset','limit','set','Content-Range','apply','save','destroy','then','name','send','index','FreshdeskAccount','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','length','options','find','create','body','update','params','getConfigurations','findOne','FreshdeskConfiguration','nolimit','addConfiguration','AccountId','Subjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','apiKey','remoteUri','slice','substring'];(function(_0x594168,_0x3ac22f){var _0x31645f=function(_0x47f9a3){while(--_0x47f9a3){_0x594168['push'](_0x594168['shift']());}};_0x31645f(++_0x3ac22f);}(_0xd91f,0x1a3));var _0xfd91=function(_0x22cea4,_0x54f16a){_0x22cea4=_0x22cea4-0x0;var _0x59d75b=_0xd91f[_0x22cea4];return _0x59d75b;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xfd91('0x0'));var rimraf=require(_0xfd91('0x1'));var zipdir=require(_0xfd91('0x2'));var jsonpatch=require(_0xfd91('0x3'));var rp=require(_0xfd91('0x4'));var moment=require(_0xfd91('0x5'));var BPromise=require(_0xfd91('0x6'));var Mustache=require(_0xfd91('0x7'));var util=require(_0xfd91('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xfd91('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xfd91('0xa'));var squel=require(_0xfd91('0xb'));var crypto=require(_0xfd91('0xc'));var jsforce=require(_0xfd91('0xd'));var deskjs=require(_0xfd91('0xe'));var toCsv=require('to-csv');var querystring=require(_0xfd91('0xf'));var Papa=require(_0xfd91('0x10'));var Redis=require('ioredis');var authService=require(_0xfd91('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xfd91('0x12'));var hardwareService=require(_0xfd91('0x13'));var logger=require(_0xfd91('0x14'))('api');var utils=require(_0xfd91('0x15'));var config=require('../../config/environment');var db=require(_0xfd91('0x16'))['db'];var integrations=require('../../components/integrations/configuration');var jayson=require(_0xfd91('0x17'));var client=jayson[_0xfd91('0x18')][_0xfd91('0x19')]({'port':0x232a});function checkPasswordPattern(_0xfc29e0,_0x273916,_0xeb3bb5){if(_0xeb3bb5){var _0x13aabb=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x13aabb[_0xfd91('0x1a')](_0x273916)){return _0xfc29e0;}else{throw new db[(_0xfd91('0x1b'))][(_0xfd91('0x1c'))](_0xfd91('0x1d'));}}else{return _0xfc29e0;}}function respondWithRpcPromise(_0x15202e,_0x56be27,_0x3104d4,_0x2b0397){return new BPromise(function(_0xefe09a,_0x5583fb){var _0x55756f=_0x2b0397||client;return _0x55756f[_0xfd91('0x1e')](_0x15202e,_0x3104d4)['then'](function(_0x8ac6e3){logger[_0xfd91('0x1f')](_0xfd91('0x20'),_0x56be27,_0xfd91('0x21'));logger[_0xfd91('0x22')](_0xfd91('0x23'),_0x56be27,_0xfd91('0x21'),JSON[_0xfd91('0x24')](_0x8ac6e3));if(_0x8ac6e3['error']){if(_0x8ac6e3[_0xfd91('0x25')][_0xfd91('0x26')]===0x1f4){logger[_0xfd91('0x25')](_0xfd91('0x20'),_0x56be27,_0x8ac6e3['error'][_0xfd91('0x27')]);return _0x5583fb(_0x8ac6e3[_0xfd91('0x25')][_0xfd91('0x27')]);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x56be27,_0x8ac6e3[_0xfd91('0x25')][_0xfd91('0x27')]);return _0xefe09a(_0x8ac6e3[_0xfd91('0x25')]['message']);}else{logger[_0xfd91('0x1f')](_0xfd91('0x20'),_0x56be27,_0xfd91('0x21'));_0xefe09a(_0x8ac6e3[_0xfd91('0x28')][_0xfd91('0x27')]);}})[_0xfd91('0x29')](function(_0x520074){logger[_0xfd91('0x25')](_0xfd91('0x20'),_0x56be27,_0x520074);_0x5583fb(_0x520074);});});}function respondWithStatusCode(_0x3efe97,_0xaca504){_0xaca504=_0xaca504||0xcc;return function(_0x3886e6){if(_0x3886e6){return _0x3efe97[_0xfd91('0x2a')](_0xaca504);}return _0x3efe97['status'](_0xaca504)[_0xfd91('0x2b')]();};}function respondWithResult(_0x29a96b,_0x303c01){_0x303c01=_0x303c01||0xc8;return function(_0x15405a){if(_0x15405a){return _0x29a96b[_0xfd91('0x2c')](_0x303c01)[_0xfd91('0x2d')](_0x15405a);}};}function respondWithFilteredResult(_0x5a1e00,_0xe0f974){return function(_0x528ac6){if(_0x528ac6){var _0x3d39bc=_0x528ac6[_0xfd91('0x2e')],_0x233e8e=_0xe0f974[_0xfd91('0x2f')],_0x14369d=_0xe0f974[_0xfd91('0x2f')]+_0xe0f974[_0xfd91('0x30')],_0x3c4e65;if(_0x14369d>=_0x3d39bc){_0x14369d=_0x3d39bc;_0x3c4e65=0xc8;}else{_0x3c4e65=0xce;}_0x5a1e00['status'](_0x3c4e65);return _0x5a1e00[_0xfd91('0x31')](_0xfd91('0x32'),_0x233e8e+'-'+_0x14369d+'/'+_0x3d39bc)[_0xfd91('0x2d')](_0x528ac6);}return null;};}function patchUpdates(_0x5b868f){return function(_0x100575){try{jsonpatch[_0xfd91('0x33')](_0x100575,_0x5b868f,!![]);}catch(_0x5bad3f){return BPromise['reject'](_0x5bad3f);}return _0x100575[_0xfd91('0x34')]();};}function saveUpdates(_0xcbf409,_0xab8ad5){return function(_0x4ed7a2){if(_0x4ed7a2){return _0x4ed7a2['update'](_0xcbf409)['then'](function(_0x4b4cd5){return _0x4b4cd5;});}return null;};}function removeEntity(_0x4703dc,_0x20bdbc){return function(_0x1a7faa){if(_0x1a7faa){return _0x1a7faa[_0xfd91('0x35')]()[_0xfd91('0x36')](function(){_0x4703dc[_0xfd91('0x2c')](0xcc)[_0xfd91('0x2b')]();});}};}function handleEntityNotFound(_0x21af1f,_0x5f0e08){return function(_0x30f7c0){if(!_0x30f7c0){_0x21af1f[_0xfd91('0x2a')](0x194);}return _0x30f7c0;};}function handleError(_0x24c1bb,_0x564498){_0x564498=_0x564498||0x1f4;return function(_0x305255){logger['error'](_0x305255['stack']);if(_0x305255[_0xfd91('0x37')]){delete _0x305255[_0xfd91('0x37')];}_0x24c1bb[_0xfd91('0x2c')](_0x564498)[_0xfd91('0x38')](_0x305255);};}exports[_0xfd91('0x39')]=function(_0x1ac512,_0x532b60){var _0x48bf99={},_0x3de8ad={},_0x391abc={'count':0x0,'rows':[]};var _0x264e9e=_['map'](db[_0xfd91('0x3a')][_0xfd91('0x3b')],function(_0x743b1a){return{'name':_0x743b1a[_0xfd91('0x3c')],'type':_0x743b1a[_0xfd91('0x3d')]['key']};});_0x3de8ad[_0xfd91('0x3e')]=_[_0xfd91('0x3f')](_0x264e9e,_0xfd91('0x37'));_0x3de8ad[_0xfd91('0x40')]=_[_0xfd91('0x41')](_0x1ac512[_0xfd91('0x40')]);_0x3de8ad[_0xfd91('0x42')]=_[_0xfd91('0x43')](_0x3de8ad[_0xfd91('0x3e')],_0x3de8ad['query']);_0x48bf99[_0xfd91('0x44')]=_['intersection'](_0x3de8ad[_0xfd91('0x3e')],qs['fields'](_0x1ac512[_0xfd91('0x40')][_0xfd91('0x45')]));_0x48bf99[_0xfd91('0x44')]=_0x48bf99[_0xfd91('0x44')]['length']?_0x48bf99[_0xfd91('0x44')]:_0x3de8ad[_0xfd91('0x3e')];if(!_0x1ac512[_0xfd91('0x40')][_0xfd91('0x46')]('nolimit')){_0x48bf99[_0xfd91('0x30')]=qs[_0xfd91('0x30')](_0x1ac512['query'][_0xfd91('0x30')]);_0x48bf99[_0xfd91('0x2f')]=qs['offset'](_0x1ac512['query'][_0xfd91('0x2f')]);}_0x48bf99[_0xfd91('0x47')]=qs[_0xfd91('0x48')](_0x1ac512['query'][_0xfd91('0x48')]);_0x48bf99[_0xfd91('0x49')]=qs[_0xfd91('0x42')](_[_0xfd91('0x4a')](_0x1ac512['query'],_0x3de8ad[_0xfd91('0x42')]));if(_0x1ac512['query'][_0xfd91('0x4b')]){_0x48bf99[_0xfd91('0x49')]=_[_0xfd91('0x4c')](_0x48bf99[_0xfd91('0x49')],{'$or':_['map'](_0x264e9e,function(_0x455433){if(_0x455433[_0xfd91('0x3d')]!==_0xfd91('0x4d')){var _0x5968dd={};_0x5968dd[_0x455433['name']]={'$like':'%'+_0x1ac512[_0xfd91('0x40')]['filter']+'%'};return _0x5968dd;}})});}_0x48bf99=_[_0xfd91('0x4c')]({},_0x48bf99,_0x1ac512['options']);var _0x7ecf4b={'where':_0x48bf99[_0xfd91('0x49')]};return db['FreshdeskAccount']['count'](_0x7ecf4b)['then'](function(_0x586e5b){_0x391abc['count']=_0x586e5b;if(_0x1ac512['query'][_0xfd91('0x4e')]){_0x48bf99[_0xfd91('0x4f')]=[{'all':!![]}];}return db[_0xfd91('0x3a')][_0xfd91('0x50')](_0x48bf99);})['then'](function(_0x27bccb){_0x391abc[_0xfd91('0x51')]=_0x27bccb;return _0x391abc;})['then'](respondWithFilteredResult(_0x532b60,_0x48bf99))[_0xfd91('0x29')](handleError(_0x532b60,null));};exports['show']=function(_0x8e096e,_0x2b85d0){var _0x297a4a={'raw':![],'where':{'id':_0x8e096e['params']['id']}},_0x5f23ba={};_0x5f23ba[_0xfd91('0x3e')]=_[_0xfd91('0x41')](db[_0xfd91('0x3a')]['rawAttributes']);_0x5f23ba[_0xfd91('0x40')]=_['keys'](_0x8e096e[_0xfd91('0x40')]);_0x5f23ba['filters']=_[_0xfd91('0x43')](_0x5f23ba[_0xfd91('0x3e')],_0x5f23ba[_0xfd91('0x40')]);_0x297a4a[_0xfd91('0x44')]=_[_0xfd91('0x43')](_0x5f23ba['model'],qs['fields'](_0x8e096e[_0xfd91('0x40')][_0xfd91('0x45')]));_0x297a4a[_0xfd91('0x44')]=_0x297a4a[_0xfd91('0x44')][_0xfd91('0x52')]?_0x297a4a[_0xfd91('0x44')]:_0x5f23ba[_0xfd91('0x3e')];if(_0x8e096e[_0xfd91('0x40')][_0xfd91('0x4e')]){_0x297a4a[_0xfd91('0x4f')]=[{'all':!![]}];}_0x297a4a=_[_0xfd91('0x4c')]({},_0x297a4a,_0x8e096e[_0xfd91('0x53')]);return db[_0xfd91('0x3a')][_0xfd91('0x54')](_0x297a4a)[_0xfd91('0x36')](handleEntityNotFound(_0x2b85d0,null))['then'](respondWithResult(_0x2b85d0,null))[_0xfd91('0x29')](handleError(_0x2b85d0,null));};exports[_0xfd91('0x55')]=function(_0x455e1f,_0x54bc11){return db[_0xfd91('0x3a')][_0xfd91('0x55')](_0x455e1f[_0xfd91('0x56')],{})[_0xfd91('0x36')](respondWithResult(_0x54bc11,0xc9))['catch'](handleError(_0x54bc11,null));};exports[_0xfd91('0x57')]=function(_0x445a45,_0x31242f){if(_0x445a45['body']['id']){delete _0x445a45[_0xfd91('0x56')]['id'];}return db['FreshdeskAccount'][_0xfd91('0x54')]({'where':{'id':_0x445a45[_0xfd91('0x58')]['id']}})[_0xfd91('0x36')](handleEntityNotFound(_0x31242f,null))[_0xfd91('0x36')](saveUpdates(_0x445a45[_0xfd91('0x56')],null))['then'](respondWithResult(_0x31242f,null))[_0xfd91('0x29')](handleError(_0x31242f,null));};exports[_0xfd91('0x35')]=function(_0x14c04a,_0x4f57ae){return db[_0xfd91('0x3a')]['find']({'where':{'id':_0x14c04a[_0xfd91('0x58')]['id']}})[_0xfd91('0x36')](handleEntityNotFound(_0x4f57ae,null))[_0xfd91('0x36')](removeEntity(_0x4f57ae,null))[_0xfd91('0x29')](handleError(_0x4f57ae,null));};exports[_0xfd91('0x59')]=function(_0x49d434,_0x39bf6c,_0x301f7b){var _0x3f384b={};var _0x569187={};var _0x14ab31;var _0x49ff00;return db[_0xfd91('0x3a')][_0xfd91('0x5a')]({'where':{'id':_0x49d434[_0xfd91('0x58')]['id']}})[_0xfd91('0x36')](handleEntityNotFound(_0x39bf6c,null))['then'](function(_0x440d47){if(_0x440d47){_0x14ab31=_0x440d47;_0x569187[_0xfd91('0x3e')]=_[_0xfd91('0x41')](db[_0xfd91('0x5b')][_0xfd91('0x3b')]);_0x569187[_0xfd91('0x40')]=_[_0xfd91('0x41')](_0x49d434[_0xfd91('0x40')]);_0x569187[_0xfd91('0x42')]=_[_0xfd91('0x43')](_0x569187[_0xfd91('0x3e')],_0x569187[_0xfd91('0x40')]);_0x3f384b[_0xfd91('0x44')]=_[_0xfd91('0x43')](_0x569187[_0xfd91('0x3e')],qs['fields'](_0x49d434[_0xfd91('0x40')][_0xfd91('0x45')]));_0x3f384b[_0xfd91('0x44')]=_0x3f384b[_0xfd91('0x44')]['length']?_0x3f384b['attributes']:_0x569187[_0xfd91('0x3e')];_0x3f384b['order']=qs['sort'](_0x49d434[_0xfd91('0x40')][_0xfd91('0x48')]);_0x3f384b[_0xfd91('0x49')]=qs['filters'](_[_0xfd91('0x4a')](_0x49d434[_0xfd91('0x40')],_0x569187[_0xfd91('0x42')]));if(_0x49d434[_0xfd91('0x40')][_0xfd91('0x4b')]){_0x3f384b[_0xfd91('0x49')]=_[_0xfd91('0x4c')](_0x3f384b[_0xfd91('0x49')],{'$or':_[_0xfd91('0x3f')](_0x3f384b[_0xfd91('0x44')],function(_0x4ffc96){var _0x203d10={};_0x203d10[_0x4ffc96]={'$like':'%'+_0x49d434[_0xfd91('0x40')][_0xfd91('0x4b')]+'%'};return _0x203d10;})});}_0x3f384b=_[_0xfd91('0x4c')]({},_0x3f384b,_0x49d434[_0xfd91('0x53')]);return _0x14ab31['getConfigurations'](_0x3f384b);}})[_0xfd91('0x36')](function(_0x419947){if(_0x419947){_0x49ff00=_0x419947[_0xfd91('0x52')];if(!_0x49d434[_0xfd91('0x40')]['hasOwnProperty'](_0xfd91('0x5c'))){_0x3f384b[_0xfd91('0x30')]=qs['limit'](_0x49d434[_0xfd91('0x40')]['limit']);_0x3f384b[_0xfd91('0x2f')]=qs[_0xfd91('0x2f')](_0x49d434[_0xfd91('0x40')][_0xfd91('0x2f')]);}return _0x14ab31[_0xfd91('0x59')](_0x3f384b);}})['then'](function(_0x336ec8){if(_0x336ec8){return _0x336ec8?{'count':_0x49ff00,'rows':_0x336ec8}:null;}})[_0xfd91('0x36')](respondWithResult(_0x39bf6c,null))[_0xfd91('0x29')](handleError(_0x39bf6c,null));};exports[_0xfd91('0x5d')]=function(_0x38fa09,_0x521a7f,_0xe7871f){if(_0x38fa09['body']['id']){delete _0x38fa09[_0xfd91('0x56')]['id'];}return db[_0xfd91('0x3a')][_0xfd91('0x5a')]({'where':{'id':_0x38fa09[_0xfd91('0x58')]['id']}})[_0xfd91('0x36')](handleEntityNotFound(_0x521a7f,null))[_0xfd91('0x36')](function(_0x5947eb){if(_0x5947eb){_0x38fa09[_0xfd91('0x56')][_0xfd91('0x5e')]=_0x5947eb['id'];_0x38fa09[_0xfd91('0x56')][_0xfd91('0x5f')]=integrations['getSubjects'](_0x38fa09[_0xfd91('0x56')][_0xfd91('0x60')],_0x38fa09[_0xfd91('0x56')][_0xfd91('0x3d')]);_0x38fa09[_0xfd91('0x56')]['Descriptions']=integrations[_0xfd91('0x61')](_0x38fa09['body'][_0xfd91('0x60')],_0x38fa09[_0xfd91('0x56')][_0xfd91('0x3d')]);return db[_0xfd91('0x5b')][_0xfd91('0x55')](_0x38fa09['body'],{'include':[{'model':db[_0xfd91('0x62')],'as':_0xfd91('0x5f')},{'model':db[_0xfd91('0x62')],'as':_0xfd91('0x63')}]});}return null;})[_0xfd91('0x36')](respondWithResult(_0x521a7f,null))[_0xfd91('0x29')](handleError(_0x521a7f,null));};exports[_0xfd91('0x64')]=function(_0x2addaf,_0x4689d4,_0x20880c){var _0x5ba610='';return db['FreshdeskAccount'][_0xfd91('0x5a')]({'where':{'id':_0x2addaf[_0xfd91('0x58')]['id']},'attributes':['id','remoteUri',_0xfd91('0x65')]})[_0xfd91('0x36')](handleEntityNotFound(_0x4689d4,null))[_0xfd91('0x36')](function(_0x4d9567){if(_0x4d9567){_0x5ba610=_0x4d9567[_0xfd91('0x66')];var _0x1bc99b=_0x5ba610[_0xfd91('0x67')](-0x1);if(_0x1bc99b==='/'){_0x5ba610=_0x5ba610[_0xfd91('0x68')](0x0,_0x5ba610[_0xfd91('0x69')](_0x1bc99b));}return rp({'method':_0xfd91('0x6a'),'uri':util[_0xfd91('0x6b')](_0xfd91('0x6c'),_0x5ba610,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xfd91('0x6b')]('Basic\x20%s',new Buffer(util['format'](_0xfd91('0x6d'),_0x4d9567[_0xfd91('0x65')]))[_0xfd91('0x6e')]('base64'))},'json':!![]});}})[_0xfd91('0x36')](function(_0xabbc3f){if(_0xabbc3f){var _0x259ecf=[_0xfd91('0x6f'),_0xfd91('0x70'),_0xfd91('0x71'),_0xfd91('0x72'),_0xfd91('0x2c'),_0xfd91('0x73'),'group',_0xfd91('0x74'),_0xfd91('0x75'),_0xfd91('0x76'),_0xfd91('0x77')];_[_0xfd91('0x78')](_0xabbc3f,function(_0x2245d2){return _0x259ecf[_0xfd91('0x79')](_0x2245d2[_0xfd91('0x37')])||!_0x2245d2[_0xfd91('0x7a')]&&_0x2245d2[_0xfd91('0x3d')]!==_0xfd91('0x7b')&&_0x2245d2['type']!==_0xfd91('0x7c');});return{'count':_0xabbc3f[_0xfd91('0x52')],'rows':_[_0xfd91('0x3f')](_0xabbc3f,function(_0x355b5c){return{'id':_0x355b5c[_0xfd91('0x37')],'name':_0x355b5c[_0xfd91('0x7d')],'custom':!_0x355b5c[_0xfd91('0x7a')],'options':_0x355b5c[_0xfd91('0x7e')]?_[_0xfd91('0x3f')](_0x355b5c['choices'],function(_0x43ad18){return{'name':_[_0xfd91('0x7f')](_0x43ad18),'value':_0x43ad18};}):[]};})};}})[_0xfd91('0x36')](respondWithResult(_0x4689d4,null))[_0xfd91('0x29')](function(_0x1feb88){var _0xc112e1=_0x2addaf[_0xfd91('0x40')]['test']?0x1f4:_0x1feb88['statusCode']||0x1f4;logger[_0xfd91('0x25')](_0xfd91('0x80'),_0xfd91('0x64'),_0xc112e1,JSON[_0xfd91('0x24')](_0x1feb88));delete _0x1feb88[_0xfd91('0x37')];if(_0xc112e1===0x191){_0xc112e1=0x190;}_0x4689d4[_0xfd91('0x2c')](_0xc112e1)[_0xfd91('0x38')](_0x2addaf['query'][_0xfd91('0x1a')]?{'message':_0xfd91('0x81'),'statusCode':_0x1feb88[_0xfd91('0x82')]}:_0x1feb88);});};