c7749dffb18d0fb91d66ad5fdcee8f72b47f8922
[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 _0xd812=['map','FreshdeskAccount','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','%s:X','toString','base64','requester','subject','agent','description','priority','group','ticket_type','company','remove','includes','custom_text','custom_dropdown','default','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','client','http','Sequelize','ValidationError','then','info','request\x20sent','debug','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','sendStatus','status','json','count','offset','limit','set','Content-Range','reject','destroy','end','stack','name'];(function(_0x5cca9f,_0x154684){var _0x55edda=function(_0x115aa2){while(--_0x115aa2){_0x5cca9f['push'](_0x5cca9f['shift']());}};_0x55edda(++_0x154684);}(_0xd812,0x145));var _0x2d81=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0xd812[_0x47a12a];return _0x30cd40;};'use strict';var pdf=require(_0x2d81('0x0'));var emlformat=require(_0x2d81('0x1'));var rimraf=require(_0x2d81('0x2'));var zipdir=require(_0x2d81('0x3'));var jsonpatch=require(_0x2d81('0x4'));var rp=require(_0x2d81('0x5'));var moment=require(_0x2d81('0x6'));var BPromise=require(_0x2d81('0x7'));var Mustache=require(_0x2d81('0x8'));var util=require('util');var path=require(_0x2d81('0x9'));var sox=require(_0x2d81('0xa'));var csv=require(_0x2d81('0xb'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x2d81('0xc'));var squel=require(_0x2d81('0xd'));var crypto=require(_0x2d81('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2d81('0xf'));var toCsv=require(_0x2d81('0xb'));var querystring=require(_0x2d81('0x10'));var Papa=require(_0x2d81('0x11'));var Redis=require('ioredis');var authService=require(_0x2d81('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2d81('0x13'));var hardwareService=require(_0x2d81('0x14'));var logger=require('../../config/logger')(_0x2d81('0x15'));var utils=require(_0x2d81('0x16'));var config=require(_0x2d81('0x17'));var db=require(_0x2d81('0x18'))['db'];var integrations=require(_0x2d81('0x19'));var jayson=require('jayson/promise');var client=jayson[_0x2d81('0x1a')][_0x2d81('0x1b')]({'port':0x232a});function checkPasswordPattern(_0x1a0ad5,_0x4fe1ae,_0x5683bc){if(_0x5683bc){var _0x1e3a50=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x1e3a50['test'](_0x4fe1ae)){return _0x1a0ad5;}else{throw new db[(_0x2d81('0x1c'))][(_0x2d81('0x1d'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');}}else{return _0x1a0ad5;}}function respondWithRpcPromise(_0x3b0225,_0x4c64aa,_0x4c2309,_0x5ef67b){return new BPromise(function(_0x1f15e7,_0x598196){var _0x4740e0=_0x5ef67b||client;return _0x4740e0['request'](_0x3b0225,_0x4c2309)[_0x2d81('0x1e')](function(_0x45b2ac){logger[_0x2d81('0x1f')]('FreshdeskAccount,\x20%s,\x20%s',_0x4c64aa,_0x2d81('0x20'));logger[_0x2d81('0x21')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x4c64aa,_0x2d81('0x20'),JSON[_0x2d81('0x22')](_0x45b2ac));if(_0x45b2ac['error']){if(_0x45b2ac[_0x2d81('0x23')][_0x2d81('0x24')]===0x1f4){logger[_0x2d81('0x23')](_0x2d81('0x25'),_0x4c64aa,_0x45b2ac[_0x2d81('0x23')]['message']);return _0x598196(_0x45b2ac[_0x2d81('0x23')]['message']);}logger[_0x2d81('0x23')]('FreshdeskAccount,\x20%s,\x20%s',_0x4c64aa,_0x45b2ac[_0x2d81('0x23')][_0x2d81('0x26')]);return _0x1f15e7(_0x45b2ac[_0x2d81('0x23')][_0x2d81('0x26')]);}else{logger[_0x2d81('0x1f')](_0x2d81('0x25'),_0x4c64aa,_0x2d81('0x20'));_0x1f15e7(_0x45b2ac[_0x2d81('0x27')][_0x2d81('0x26')]);}})['catch'](function(_0x246b70){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x4c64aa,_0x246b70);_0x598196(_0x246b70);});});}function respondWithStatusCode(_0x35e107,_0x8fa683){_0x8fa683=_0x8fa683||0xcc;return function(_0x4c2ab8){if(_0x4c2ab8){return _0x35e107[_0x2d81('0x28')](_0x8fa683);}return _0x35e107['status'](_0x8fa683)['end']();};}function respondWithResult(_0x373308,_0x25a091){_0x25a091=_0x25a091||0xc8;return function(_0x14952f){if(_0x14952f){return _0x373308[_0x2d81('0x29')](_0x25a091)[_0x2d81('0x2a')](_0x14952f);}};}function respondWithFilteredResult(_0x55629f,_0x1d4e8b){return function(_0x3e42d6){if(_0x3e42d6){var _0x9aba76=_0x3e42d6[_0x2d81('0x2b')],_0x17426c=_0x1d4e8b['offset'],_0x12a22f=_0x1d4e8b[_0x2d81('0x2c')]+_0x1d4e8b[_0x2d81('0x2d')],_0x5d5b0c;if(_0x12a22f>=_0x9aba76){_0x12a22f=_0x9aba76;_0x5d5b0c=0xc8;}else{_0x5d5b0c=0xce;}_0x55629f['status'](_0x5d5b0c);return _0x55629f[_0x2d81('0x2e')](_0x2d81('0x2f'),_0x17426c+'-'+_0x12a22f+'/'+_0x9aba76)[_0x2d81('0x2a')](_0x3e42d6);}return null;};}function patchUpdates(_0x652c4e){return function(_0x3622af){try{jsonpatch['apply'](_0x3622af,_0x652c4e,!![]);}catch(_0x3d92b1){return BPromise[_0x2d81('0x30')](_0x3d92b1);}return _0x3622af['save']();};}function saveUpdates(_0x973a2f,_0x4f5e03){return function(_0x5151e1){if(_0x5151e1){return _0x5151e1['update'](_0x973a2f)['then'](function(_0x14e12a){return _0x14e12a;});}return null;};}function removeEntity(_0x163586,_0x10ef3c){return function(_0x178395){if(_0x178395){return _0x178395[_0x2d81('0x31')]()[_0x2d81('0x1e')](function(){_0x163586[_0x2d81('0x29')](0xcc)[_0x2d81('0x32')]();});}};}function handleEntityNotFound(_0x1cfa49,_0x270255){return function(_0x49db8d){if(!_0x49db8d){_0x1cfa49[_0x2d81('0x28')](0x194);}return _0x49db8d;};}function handleError(_0xc282b1,_0x484bac){_0x484bac=_0x484bac||0x1f4;return function(_0x29ed19){logger[_0x2d81('0x23')](_0x29ed19[_0x2d81('0x33')]);if(_0x29ed19['name']){delete _0x29ed19[_0x2d81('0x34')];}_0xc282b1[_0x2d81('0x29')](_0x484bac)['send'](_0x29ed19);};}exports['index']=function(_0x3acdce,_0x2f6ec2){var _0x489157={},_0x431b4e={},_0xf8e280={'count':0x0,'rows':[]};var _0x3e8bbc=_[_0x2d81('0x35')](db[_0x2d81('0x36')][_0x2d81('0x37')],function(_0x565d53){return{'name':_0x565d53['fieldName'],'type':_0x565d53[_0x2d81('0x38')]['key']};});_0x431b4e[_0x2d81('0x39')]=_[_0x2d81('0x35')](_0x3e8bbc,_0x2d81('0x34'));_0x431b4e[_0x2d81('0x3a')]=_['keys'](_0x3acdce[_0x2d81('0x3a')]);_0x431b4e[_0x2d81('0x3b')]=_[_0x2d81('0x3c')](_0x431b4e['model'],_0x431b4e[_0x2d81('0x3a')]);_0x489157[_0x2d81('0x3d')]=_['intersection'](_0x431b4e[_0x2d81('0x39')],qs['fields'](_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x3e')]));_0x489157[_0x2d81('0x3d')]=_0x489157[_0x2d81('0x3d')][_0x2d81('0x3f')]?_0x489157[_0x2d81('0x3d')]:_0x431b4e[_0x2d81('0x39')];if(!_0x3acdce['query'][_0x2d81('0x40')](_0x2d81('0x41'))){_0x489157['limit']=qs[_0x2d81('0x2d')](_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x2d')]);_0x489157[_0x2d81('0x2c')]=qs[_0x2d81('0x2c')](_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x2c')]);}_0x489157[_0x2d81('0x42')]=qs[_0x2d81('0x43')](_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x43')]);_0x489157['where']=qs['filters'](_[_0x2d81('0x44')](_0x3acdce[_0x2d81('0x3a')],_0x431b4e['filters']));if(_0x3acdce[_0x2d81('0x3a')]['filter']){_0x489157[_0x2d81('0x45')]=_[_0x2d81('0x46')](_0x489157['where'],{'$or':_[_0x2d81('0x35')](_0x3e8bbc,function(_0x2cdcc9){if(_0x2cdcc9[_0x2d81('0x38')]!==_0x2d81('0x47')){var _0x3491f5={};_0x3491f5[_0x2cdcc9[_0x2d81('0x34')]]={'$like':'%'+_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x48')]+'%'};return _0x3491f5;}})});}_0x489157=_[_0x2d81('0x46')]({},_0x489157,_0x3acdce[_0x2d81('0x49')]);var _0x4aad6b={'where':_0x489157[_0x2d81('0x45')]};return db[_0x2d81('0x36')][_0x2d81('0x2b')](_0x4aad6b)[_0x2d81('0x1e')](function(_0x432a19){_0xf8e280['count']=_0x432a19;if(_0x3acdce[_0x2d81('0x3a')][_0x2d81('0x4a')]){_0x489157[_0x2d81('0x4b')]=[{'all':!![]}];}return db[_0x2d81('0x36')][_0x2d81('0x4c')](_0x489157);})[_0x2d81('0x1e')](function(_0x575192){_0xf8e280[_0x2d81('0x4d')]=_0x575192;return _0xf8e280;})[_0x2d81('0x1e')](respondWithFilteredResult(_0x2f6ec2,_0x489157))[_0x2d81('0x4e')](handleError(_0x2f6ec2,null));};exports['show']=function(_0x355352,_0x19965a){var _0x13720a={'raw':![],'where':{'id':_0x355352[_0x2d81('0x4f')]['id']}},_0x2a90ac={};_0x2a90ac['model']=_['keys'](db[_0x2d81('0x36')][_0x2d81('0x37')]);_0x2a90ac[_0x2d81('0x3a')]=_[_0x2d81('0x50')](_0x355352[_0x2d81('0x3a')]);_0x2a90ac[_0x2d81('0x3b')]=_[_0x2d81('0x3c')](_0x2a90ac[_0x2d81('0x39')],_0x2a90ac[_0x2d81('0x3a')]);_0x13720a[_0x2d81('0x3d')]=_[_0x2d81('0x3c')](_0x2a90ac[_0x2d81('0x39')],qs[_0x2d81('0x3e')](_0x355352[_0x2d81('0x3a')][_0x2d81('0x3e')]));_0x13720a[_0x2d81('0x3d')]=_0x13720a[_0x2d81('0x3d')][_0x2d81('0x3f')]?_0x13720a[_0x2d81('0x3d')]:_0x2a90ac[_0x2d81('0x39')];if(_0x355352[_0x2d81('0x3a')][_0x2d81('0x4a')]){_0x13720a['include']=[{'all':!![]}];}_0x13720a=_[_0x2d81('0x46')]({},_0x13720a,_0x355352[_0x2d81('0x49')]);return db[_0x2d81('0x36')][_0x2d81('0x51')](_0x13720a)['then'](handleEntityNotFound(_0x19965a,null))[_0x2d81('0x1e')](respondWithResult(_0x19965a,null))[_0x2d81('0x4e')](handleError(_0x19965a,null));};exports[_0x2d81('0x52')]=function(_0x3eea8,_0x56a499){return db[_0x2d81('0x36')][_0x2d81('0x52')](_0x3eea8[_0x2d81('0x53')],{})[_0x2d81('0x1e')](respondWithResult(_0x56a499,0xc9))[_0x2d81('0x4e')](handleError(_0x56a499,null));};exports['update']=function(_0x2b32c5,_0xdef192){if(_0x2b32c5[_0x2d81('0x53')]['id']){delete _0x2b32c5[_0x2d81('0x53')]['id'];}return db[_0x2d81('0x36')][_0x2d81('0x51')]({'where':{'id':_0x2b32c5[_0x2d81('0x4f')]['id']}})[_0x2d81('0x1e')](handleEntityNotFound(_0xdef192,null))[_0x2d81('0x1e')](saveUpdates(_0x2b32c5['body'],null))[_0x2d81('0x1e')](respondWithResult(_0xdef192,null))[_0x2d81('0x4e')](handleError(_0xdef192,null));};exports['destroy']=function(_0x374dd0,_0x379f23){return db[_0x2d81('0x36')][_0x2d81('0x51')]({'where':{'id':_0x374dd0['params']['id']}})['then'](handleEntityNotFound(_0x379f23,null))[_0x2d81('0x1e')](removeEntity(_0x379f23,null))[_0x2d81('0x4e')](handleError(_0x379f23,null));};exports[_0x2d81('0x54')]=function(_0x4f89ce,_0x2b68c8,_0x4bbed0){var _0x3d2616={};var _0x1b691f={};var _0x138f05;var _0x15c74a;return db[_0x2d81('0x36')][_0x2d81('0x55')]({'where':{'id':_0x4f89ce[_0x2d81('0x4f')]['id']}})[_0x2d81('0x1e')](handleEntityNotFound(_0x2b68c8,null))['then'](function(_0xace07d){if(_0xace07d){_0x138f05=_0xace07d;_0x1b691f[_0x2d81('0x39')]=_['keys'](db[_0x2d81('0x56')][_0x2d81('0x37')]);_0x1b691f[_0x2d81('0x3a')]=_['keys'](_0x4f89ce['query']);_0x1b691f[_0x2d81('0x3b')]=_[_0x2d81('0x3c')](_0x1b691f[_0x2d81('0x39')],_0x1b691f[_0x2d81('0x3a')]);_0x3d2616[_0x2d81('0x3d')]=_[_0x2d81('0x3c')](_0x1b691f[_0x2d81('0x39')],qs[_0x2d81('0x3e')](_0x4f89ce[_0x2d81('0x3a')][_0x2d81('0x3e')]));_0x3d2616[_0x2d81('0x3d')]=_0x3d2616[_0x2d81('0x3d')][_0x2d81('0x3f')]?_0x3d2616[_0x2d81('0x3d')]:_0x1b691f['model'];_0x3d2616[_0x2d81('0x42')]=qs['sort'](_0x4f89ce[_0x2d81('0x3a')][_0x2d81('0x43')]);_0x3d2616['where']=qs[_0x2d81('0x3b')](_[_0x2d81('0x44')](_0x4f89ce[_0x2d81('0x3a')],_0x1b691f[_0x2d81('0x3b')]));if(_0x4f89ce['query'][_0x2d81('0x48')]){_0x3d2616['where']=_[_0x2d81('0x46')](_0x3d2616[_0x2d81('0x45')],{'$or':_[_0x2d81('0x35')](_0x3d2616[_0x2d81('0x3d')],function(_0xc7b84e){var _0x1d8e27={};_0x1d8e27[_0xc7b84e]={'$like':'%'+_0x4f89ce['query'][_0x2d81('0x48')]+'%'};return _0x1d8e27;})});}_0x3d2616=_[_0x2d81('0x46')]({},_0x3d2616,_0x4f89ce['options']);return _0x138f05['getConfigurations'](_0x3d2616);}})[_0x2d81('0x1e')](function(_0x87e5a1){if(_0x87e5a1){_0x15c74a=_0x87e5a1[_0x2d81('0x3f')];if(!_0x4f89ce[_0x2d81('0x3a')][_0x2d81('0x40')](_0x2d81('0x41'))){_0x3d2616[_0x2d81('0x2d')]=qs[_0x2d81('0x2d')](_0x4f89ce['query'][_0x2d81('0x2d')]);_0x3d2616[_0x2d81('0x2c')]=qs['offset'](_0x4f89ce[_0x2d81('0x3a')][_0x2d81('0x2c')]);}return _0x138f05[_0x2d81('0x54')](_0x3d2616);}})[_0x2d81('0x1e')](function(_0x50ea28){if(_0x50ea28){return _0x50ea28?{'count':_0x15c74a,'rows':_0x50ea28}:null;}})[_0x2d81('0x1e')](respondWithResult(_0x2b68c8,null))[_0x2d81('0x4e')](handleError(_0x2b68c8,null));};exports[_0x2d81('0x57')]=function(_0x4f4269,_0x35a7ff,_0x1d32ca){if(_0x4f4269[_0x2d81('0x53')]['id']){delete _0x4f4269[_0x2d81('0x53')]['id'];}return db[_0x2d81('0x36')][_0x2d81('0x55')]({'where':{'id':_0x4f4269['params']['id']}})[_0x2d81('0x1e')](handleEntityNotFound(_0x35a7ff,null))[_0x2d81('0x1e')](function(_0x3c926a){if(_0x3c926a){_0x4f4269[_0x2d81('0x53')][_0x2d81('0x58')]=_0x3c926a['id'];_0x4f4269[_0x2d81('0x53')][_0x2d81('0x59')]=integrations[_0x2d81('0x5a')](_0x4f4269['body'][_0x2d81('0x5b')],_0x4f4269['body']['type']);_0x4f4269[_0x2d81('0x53')][_0x2d81('0x5c')]=integrations[_0x2d81('0x5d')](_0x4f4269['body'][_0x2d81('0x5b')],_0x4f4269[_0x2d81('0x53')][_0x2d81('0x38')]);return db[_0x2d81('0x56')]['create'](_0x4f4269[_0x2d81('0x53')],{'include':[{'model':db[_0x2d81('0x5e')],'as':_0x2d81('0x59')},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})[_0x2d81('0x1e')](respondWithResult(_0x35a7ff,null))[_0x2d81('0x4e')](handleError(_0x35a7ff,null));};exports[_0x2d81('0x5f')]=function(_0x5b20d6,_0x172951,_0x2ff914){var _0x51aee5='';return db[_0x2d81('0x36')]['findOne']({'where':{'id':_0x5b20d6['params']['id']},'attributes':['id','remoteUri',_0x2d81('0x60')]})[_0x2d81('0x1e')](handleEntityNotFound(_0x172951,null))[_0x2d81('0x1e')](function(_0x5a39d6){if(_0x5a39d6){_0x51aee5=_0x5a39d6[_0x2d81('0x61')];var _0x2b2e5d=_0x51aee5[_0x2d81('0x62')](-0x1);if(_0x2b2e5d==='/'){_0x51aee5=_0x51aee5[_0x2d81('0x63')](0x0,_0x51aee5[_0x2d81('0x64')](_0x2b2e5d));}return rp({'method':_0x2d81('0x65'),'uri':util[_0x2d81('0x66')](_0x2d81('0x67'),_0x51aee5,_0x2d81('0x68')),'headers':{'Authorization':util[_0x2d81('0x66')]('Basic\x20%s',new Buffer(util[_0x2d81('0x66')](_0x2d81('0x69'),_0x5a39d6[_0x2d81('0x60')]))[_0x2d81('0x6a')](_0x2d81('0x6b')))},'json':!![]});}})[_0x2d81('0x1e')](function(_0xda107c){if(_0xda107c){var _0xa16324=[_0x2d81('0x6c'),_0x2d81('0x6d'),_0x2d81('0x6e'),_0x2d81('0x6f'),_0x2d81('0x29'),_0x2d81('0x70'),_0x2d81('0x71'),'source',_0x2d81('0x72'),_0x2d81('0x71'),_0x2d81('0x73')];_[_0x2d81('0x74')](_0xda107c,function(_0x519acb){return _0xa16324[_0x2d81('0x75')](_0x519acb['name'])||!_0x519acb['default']&&_0x519acb[_0x2d81('0x38')]!==_0x2d81('0x76')&&_0x519acb[_0x2d81('0x38')]!==_0x2d81('0x77');});return{'count':_0xda107c[_0x2d81('0x3f')],'rows':_[_0x2d81('0x35')](_0xda107c,function(_0x4bcfb5){return{'id':_0x4bcfb5[_0x2d81('0x34')],'name':_0x4bcfb5['label'],'custom':!_0x4bcfb5[_0x2d81('0x78')],'options':_0x4bcfb5['choices']?_['map'](_0x4bcfb5['choices'],function(_0x809bee){return{'name':_[_0x2d81('0x79')](_0x809bee),'value':_0x809bee};}):[]};})};}})[_0x2d81('0x1e')](respondWithResult(_0x172951,null))[_0x2d81('0x4e')](function(_0x5ebf37){var _0x5ad237=_0x5b20d6[_0x2d81('0x3a')][_0x2d81('0x7a')]?0x1f4:_0x5ebf37[_0x2d81('0x7b')]||0x1f4;logger[_0x2d81('0x23')](_0x2d81('0x7c'),'getFields',_0x5ad237,JSON[_0x2d81('0x22')](_0x5ebf37));delete _0x5ebf37[_0x2d81('0x34')];if(_0x5ad237===0x191){_0x5ad237=0x190;}_0x172951[_0x2d81('0x29')](_0x5ad237)[_0x2d81('0x7d')](_0x5b20d6['query'][_0x2d81('0x7a')]?{'message':'Wrong\x20credentials','statusCode':_0x5ebf37[_0x2d81('0x7b')]}:_0x5ebf37);});};