bc088cb0c7b96d3bcbd674caf772306161f88b8b
[motion2.git] / server / api / intZendeskAccount / intZendeskAccount.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 _0xc405=['../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','then','info','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','count','limit','Content-Range','json','apply','reject','save','update','destroy','stack','name','index','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','filters','filter','where','merge','VIRTUAL','options','ZendeskAccount','includeAll','findAll','rows','show','rawAttributes','include','find','body','params','getConfigurations','pick','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','toString','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x47a2bf,_0x3ca795){var _0x323b07=function(_0x33a0ce){while(--_0x33a0ce){_0x47a2bf['push'](_0x47a2bf['shift']());}};_0x323b07(++_0x3ca795);}(_0xc405,0x69));var _0x5c40=function(_0x32e54a,_0x59fc0d){_0x32e54a=_0x32e54a-0x0;var _0x109af4=_0xc405[_0x32e54a];return _0x109af4;};'use strict';var pdf=require(_0x5c40('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5c40('0x1'));var jsonpatch=require(_0x5c40('0x2'));var rp=require(_0x5c40('0x3'));var moment=require(_0x5c40('0x4'));var BPromise=require(_0x5c40('0x5'));var Mustache=require('mustache');var util=require(_0x5c40('0x6'));var path=require(_0x5c40('0x7'));var sox=require('sox');var csv=require(_0x5c40('0x8'));var ejs=require(_0x5c40('0x9'));var fs=require('fs');var _=require(_0x5c40('0xa'));var squel=require(_0x5c40('0xb'));var crypto=require(_0x5c40('0xc'));var jsforce=require(_0x5c40('0xd'));var deskjs=require(_0x5c40('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5c40('0xf'));var Papa=require(_0x5c40('0x10'));var Redis=require(_0x5c40('0x11'));var authService=require(_0x5c40('0x12'));var qs=require(_0x5c40('0x13'));var as=require(_0x5c40('0x14'));var hardwareService=require(_0x5c40('0x15'));var logger=require(_0x5c40('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x5c40('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5c40('0x18'))['db'];var integrations=require('../../components/integrations/configuration');var jayson=require(_0x5c40('0x19'));var client=jayson[_0x5c40('0x1a')][_0x5c40('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x18cfc2,_0x21146c,_0x380b11,_0x315039){return new BPromise(function(_0x1f1e8e,_0x1f2078){var _0x3d7ca1=_0x315039||client;return _0x3d7ca1['request'](_0x18cfc2,_0x380b11)[_0x5c40('0x1c')](function(_0x1f9315){logger[_0x5c40('0x1d')]('ZendeskAccount,\x20%s,\x20%s',_0x21146c,'request\x20sent');logger[_0x5c40('0x1e')](_0x5c40('0x1f'),_0x21146c,_0x5c40('0x20'),JSON[_0x5c40('0x21')](_0x1f9315));if(_0x1f9315[_0x5c40('0x22')]){if(_0x1f9315[_0x5c40('0x22')][_0x5c40('0x23')]===0x1f4){logger[_0x5c40('0x22')](_0x5c40('0x24'),_0x21146c,_0x1f9315[_0x5c40('0x22')][_0x5c40('0x25')]);return _0x1f2078(_0x1f9315[_0x5c40('0x22')][_0x5c40('0x25')]);}logger[_0x5c40('0x22')](_0x5c40('0x24'),_0x21146c,_0x1f9315['error'][_0x5c40('0x25')]);return _0x1f1e8e(_0x1f9315['error'][_0x5c40('0x25')]);}else{logger[_0x5c40('0x1d')]('ZendeskAccount,\x20%s,\x20%s',_0x21146c,_0x5c40('0x20'));_0x1f1e8e(_0x1f9315[_0x5c40('0x26')][_0x5c40('0x25')]);}})[_0x5c40('0x27')](function(_0x97681a){logger[_0x5c40('0x22')](_0x5c40('0x24'),_0x21146c,_0x97681a);_0x1f2078(_0x97681a);});});}function respondWithStatusCode(_0x54abbf,_0x449d4e){_0x449d4e=_0x449d4e||0xcc;return function(_0x3f579f){if(_0x3f579f){return _0x54abbf[_0x5c40('0x28')](_0x449d4e);}return _0x54abbf[_0x5c40('0x29')](_0x449d4e)['end']();};}function respondWithResult(_0x1da3db,_0x24fe36){_0x24fe36=_0x24fe36||0xc8;return function(_0x8a1aeb){if(_0x8a1aeb){return _0x1da3db[_0x5c40('0x29')](_0x24fe36)['json'](_0x8a1aeb);}};}function respondWithFilteredResult(_0x358eb4,_0x2b4a81){return function(_0x364de6){if(_0x364de6){var _0x2bbac6=_0x364de6[_0x5c40('0x2a')],_0x1172e3=_0x2b4a81['offset'],_0x32d02c=_0x2b4a81['offset']+_0x2b4a81[_0x5c40('0x2b')],_0x49f362;if(_0x32d02c>=_0x2bbac6){_0x32d02c=_0x2bbac6;_0x49f362=0xc8;}else{_0x49f362=0xce;}_0x358eb4['status'](_0x49f362);return _0x358eb4['set'](_0x5c40('0x2c'),_0x1172e3+'-'+_0x32d02c+'/'+_0x2bbac6)[_0x5c40('0x2d')](_0x364de6);}return null;};}function patchUpdates(_0x1291ee){return function(_0x53377d){try{jsonpatch[_0x5c40('0x2e')](_0x53377d,_0x1291ee,!![]);}catch(_0x1b71e6){return BPromise[_0x5c40('0x2f')](_0x1b71e6);}return _0x53377d[_0x5c40('0x30')]();};}function saveUpdates(_0x4ce8e1,_0x24dec7){return function(_0x4b9a49){if(_0x4b9a49){return _0x4b9a49[_0x5c40('0x31')](_0x4ce8e1)['then'](function(_0x295a26){return _0x295a26;});}return null;};}function removeEntity(_0x2ce03f,_0x632622){return function(_0x4c6c43){if(_0x4c6c43){return _0x4c6c43[_0x5c40('0x32')]()['then'](function(){_0x2ce03f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a8a3e,_0x1600d8){return function(_0x69cc5f){if(!_0x69cc5f){_0x1a8a3e[_0x5c40('0x28')](0x194);}return _0x69cc5f;};}function handleError(_0x31718b,_0x1c68dd){_0x1c68dd=_0x1c68dd||0x1f4;return function(_0x432173){logger[_0x5c40('0x22')](_0x432173[_0x5c40('0x33')]);if(_0x432173[_0x5c40('0x34')]){delete _0x432173[_0x5c40('0x34')];}_0x31718b[_0x5c40('0x29')](_0x1c68dd)['send'](_0x432173);};}exports[_0x5c40('0x35')]=function(_0x10d00c,_0x2f7220){var _0x273496={},_0x485ebc={},_0x35ed4b={'count':0x0,'rows':[]};var _0x385ed8=_['map'](db['ZendeskAccount']['rawAttributes'],function(_0x5c6277){return{'name':_0x5c6277[_0x5c40('0x36')],'type':_0x5c6277[_0x5c40('0x37')]['key']};});_0x485ebc[_0x5c40('0x38')]=_[_0x5c40('0x39')](_0x385ed8,_0x5c40('0x34'));_0x485ebc[_0x5c40('0x3a')]=_[_0x5c40('0x3b')](_0x10d00c[_0x5c40('0x3a')]);_0x485ebc['filters']=_[_0x5c40('0x3c')](_0x485ebc[_0x5c40('0x38')],_0x485ebc[_0x5c40('0x3a')]);_0x273496[_0x5c40('0x3d')]=_[_0x5c40('0x3c')](_0x485ebc[_0x5c40('0x38')],qs['fields'](_0x10d00c[_0x5c40('0x3a')][_0x5c40('0x3e')]));_0x273496[_0x5c40('0x3d')]=_0x273496[_0x5c40('0x3d')][_0x5c40('0x3f')]?_0x273496[_0x5c40('0x3d')]:_0x485ebc[_0x5c40('0x38')];if(!_0x10d00c[_0x5c40('0x3a')][_0x5c40('0x40')]('nolimit')){_0x273496[_0x5c40('0x2b')]=qs[_0x5c40('0x2b')](_0x10d00c[_0x5c40('0x3a')][_0x5c40('0x2b')]);_0x273496[_0x5c40('0x41')]=qs[_0x5c40('0x41')](_0x10d00c[_0x5c40('0x3a')]['offset']);}_0x273496[_0x5c40('0x42')]=qs[_0x5c40('0x43')](_0x10d00c[_0x5c40('0x3a')][_0x5c40('0x43')]);_0x273496['where']=qs['filters'](_['pick'](_0x10d00c[_0x5c40('0x3a')],_0x485ebc[_0x5c40('0x44')]),_0x385ed8);if(_0x10d00c['query'][_0x5c40('0x45')]){_0x273496[_0x5c40('0x46')]=_[_0x5c40('0x47')](_0x273496[_0x5c40('0x46')],{'$or':_[_0x5c40('0x39')](_0x385ed8,function(_0x20344a){if(_0x20344a[_0x5c40('0x37')]!==_0x5c40('0x48')){var _0x2bf51f={};_0x2bf51f[_0x20344a[_0x5c40('0x34')]]={'$like':'%'+_0x10d00c[_0x5c40('0x3a')][_0x5c40('0x45')]+'%'};return _0x2bf51f;}})});}_0x273496=_[_0x5c40('0x47')]({},_0x273496,_0x10d00c[_0x5c40('0x49')]);var _0x2067cc={'where':_0x273496[_0x5c40('0x46')]};return db[_0x5c40('0x4a')]['count'](_0x2067cc)[_0x5c40('0x1c')](function(_0x587dff){_0x35ed4b[_0x5c40('0x2a')]=_0x587dff;if(_0x10d00c['query'][_0x5c40('0x4b')]){_0x273496['include']=[{'all':!![]}];}return db[_0x5c40('0x4a')][_0x5c40('0x4c')](_0x273496);})['then'](function(_0x459191){_0x35ed4b[_0x5c40('0x4d')]=_0x459191;return _0x35ed4b;})[_0x5c40('0x1c')](respondWithFilteredResult(_0x2f7220,_0x273496))['catch'](handleError(_0x2f7220,null));};exports[_0x5c40('0x4e')]=function(_0x21df94,_0x1197fb){var _0x2ec511={'raw':![],'where':{'id':_0x21df94['params']['id']}},_0x4c133f={};_0x4c133f['model']=_['keys'](db[_0x5c40('0x4a')][_0x5c40('0x4f')]);_0x4c133f[_0x5c40('0x3a')]=_['keys'](_0x21df94['query']);_0x4c133f['filters']=_[_0x5c40('0x3c')](_0x4c133f['model'],_0x4c133f[_0x5c40('0x3a')]);_0x2ec511[_0x5c40('0x3d')]=_[_0x5c40('0x3c')](_0x4c133f['model'],qs[_0x5c40('0x3e')](_0x21df94[_0x5c40('0x3a')][_0x5c40('0x3e')]));_0x2ec511[_0x5c40('0x3d')]=_0x2ec511['attributes'][_0x5c40('0x3f')]?_0x2ec511['attributes']:_0x4c133f[_0x5c40('0x38')];if(_0x21df94[_0x5c40('0x3a')][_0x5c40('0x4b')]){_0x2ec511[_0x5c40('0x50')]=[{'all':!![]}];}_0x2ec511=_[_0x5c40('0x47')]({},_0x2ec511,_0x21df94[_0x5c40('0x49')]);return db['ZendeskAccount'][_0x5c40('0x51')](_0x2ec511)['then'](handleEntityNotFound(_0x1197fb,null))['then'](respondWithResult(_0x1197fb,null))[_0x5c40('0x27')](handleError(_0x1197fb,null));};exports['create']=function(_0x3a4dca,_0x1727b6){return db[_0x5c40('0x4a')]['create'](_0x3a4dca[_0x5c40('0x52')],{})[_0x5c40('0x1c')](respondWithResult(_0x1727b6,0xc9))['catch'](handleError(_0x1727b6,null));};exports[_0x5c40('0x31')]=function(_0x5f55e7,_0x4e734f){if(_0x5f55e7[_0x5c40('0x52')]['id']){delete _0x5f55e7['body']['id'];}return db[_0x5c40('0x4a')][_0x5c40('0x51')]({'where':{'id':_0x5f55e7[_0x5c40('0x53')]['id']}})[_0x5c40('0x1c')](handleEntityNotFound(_0x4e734f,null))['then'](saveUpdates(_0x5f55e7['body'],null))[_0x5c40('0x1c')](respondWithResult(_0x4e734f,null))[_0x5c40('0x27')](handleError(_0x4e734f,null));};exports[_0x5c40('0x32')]=function(_0x147a37,_0x22a888){return db[_0x5c40('0x4a')][_0x5c40('0x51')]({'where':{'id':_0x147a37[_0x5c40('0x53')]['id']}})[_0x5c40('0x1c')](handleEntityNotFound(_0x22a888,null))[_0x5c40('0x1c')](removeEntity(_0x22a888,null))[_0x5c40('0x27')](handleError(_0x22a888,null));};exports[_0x5c40('0x54')]=function(_0x3f9c93,_0x44cd4e,_0xce974c){var _0x3586e5={};var _0x59e2c2={};var _0x1dc9f4;var _0x4a792d;return db[_0x5c40('0x4a')]['findOne']({'where':{'id':_0x3f9c93[_0x5c40('0x53')]['id']}})[_0x5c40('0x1c')](handleEntityNotFound(_0x44cd4e,null))[_0x5c40('0x1c')](function(_0x2b734d){if(_0x2b734d){_0x1dc9f4=_0x2b734d;_0x59e2c2[_0x5c40('0x38')]=_['keys'](db['ZendeskConfiguration'][_0x5c40('0x4f')]);_0x59e2c2['query']=_[_0x5c40('0x3b')](_0x3f9c93[_0x5c40('0x3a')]);_0x59e2c2['filters']=_['intersection'](_0x59e2c2[_0x5c40('0x38')],_0x59e2c2[_0x5c40('0x3a')]);_0x3586e5[_0x5c40('0x3d')]=_['intersection'](_0x59e2c2[_0x5c40('0x38')],qs[_0x5c40('0x3e')](_0x3f9c93[_0x5c40('0x3a')][_0x5c40('0x3e')]));_0x3586e5[_0x5c40('0x3d')]=_0x3586e5[_0x5c40('0x3d')][_0x5c40('0x3f')]?_0x3586e5[_0x5c40('0x3d')]:_0x59e2c2[_0x5c40('0x38')];_0x3586e5['order']=qs[_0x5c40('0x43')](_0x3f9c93['query']['sort']);_0x3586e5[_0x5c40('0x46')]=qs[_0x5c40('0x44')](_[_0x5c40('0x55')](_0x3f9c93[_0x5c40('0x3a')],_0x59e2c2[_0x5c40('0x44')]));if(_0x3f9c93[_0x5c40('0x3a')]['filter']){_0x3586e5[_0x5c40('0x46')]=_[_0x5c40('0x47')](_0x3586e5[_0x5c40('0x46')],{'$or':_[_0x5c40('0x39')](_0x3586e5['attributes'],function(_0x541021){var _0xb9ba1={};_0xb9ba1[_0x541021]={'$like':'%'+_0x3f9c93[_0x5c40('0x3a')][_0x5c40('0x45')]+'%'};return _0xb9ba1;})});}_0x3586e5=_['merge']({},_0x3586e5,_0x3f9c93['options']);return _0x1dc9f4[_0x5c40('0x54')](_0x3586e5);}})[_0x5c40('0x1c')](function(_0x4ab0cd){if(_0x4ab0cd){_0x4a792d=_0x4ab0cd[_0x5c40('0x3f')];if(!_0x3f9c93['query'][_0x5c40('0x40')]('nolimit')){_0x3586e5[_0x5c40('0x2b')]=qs[_0x5c40('0x2b')](_0x3f9c93[_0x5c40('0x3a')][_0x5c40('0x2b')]);_0x3586e5['offset']=qs[_0x5c40('0x41')](_0x3f9c93[_0x5c40('0x3a')][_0x5c40('0x41')]);}return _0x1dc9f4[_0x5c40('0x54')](_0x3586e5);}})[_0x5c40('0x1c')](function(_0x410cd1){if(_0x410cd1){return _0x410cd1?{'count':_0x4a792d,'rows':_0x410cd1}:null;}})[_0x5c40('0x1c')](respondWithResult(_0x44cd4e,null))[_0x5c40('0x27')](handleError(_0x44cd4e,null));};exports['addConfiguration']=function(_0x6999cd,_0x126a8a,_0x490c52){if(_0x6999cd['body']['id']){delete _0x6999cd[_0x5c40('0x52')]['id'];}return db[_0x5c40('0x4a')][_0x5c40('0x56')]({'where':{'id':_0x6999cd['params']['id']}})[_0x5c40('0x1c')](handleEntityNotFound(_0x126a8a,null))[_0x5c40('0x1c')](function(_0x167d0c){if(_0x167d0c){_0x6999cd['body'][_0x5c40('0x57')]=_0x167d0c['id'];_0x6999cd[_0x5c40('0x52')][_0x5c40('0x58')]=integrations[_0x5c40('0x59')](_0x6999cd['body'][_0x5c40('0x5a')],_0x6999cd[_0x5c40('0x52')][_0x5c40('0x37')]);_0x6999cd[_0x5c40('0x52')][_0x5c40('0x5b')]=integrations[_0x5c40('0x5c')](_0x6999cd['body'][_0x5c40('0x5a')],_0x6999cd[_0x5c40('0x52')][_0x5c40('0x37')]);return db['ZendeskConfiguration']['create'](_0x6999cd[_0x5c40('0x52')],{'include':[{'model':db[_0x5c40('0x5d')],'as':_0x5c40('0x58')},{'model':db[_0x5c40('0x5d')],'as':_0x5c40('0x5b')}]});}return null;})[_0x5c40('0x1c')](respondWithResult(_0x126a8a,null))[_0x5c40('0x27')](handleError(_0x126a8a,null));};exports[_0x5c40('0x5e')]=function(_0x59ea0d,_0x4e0f7d,_0x312e76){var _0x10a303='';return db[_0x5c40('0x4a')][_0x5c40('0x56')]({'where':{'id':_0x59ea0d[_0x5c40('0x53')]['id']},'attributes':['id',_0x5c40('0x5f'),_0x5c40('0x60'),_0x5c40('0x61'),_0x5c40('0x62'),'remoteUri']})[_0x5c40('0x1c')](handleEntityNotFound(_0x4e0f7d,null))[_0x5c40('0x1c')](function(_0xb287ac){if(_0xb287ac){_0x10a303=_0xb287ac[_0x5c40('0x63')];var _0x32ccae=_0x10a303[_0x5c40('0x64')](-0x1);if(_0x32ccae==='/'){_0x10a303=_0x10a303[_0x5c40('0x65')](0x0,_0x10a303[_0x5c40('0x66')](_0x32ccae));}var _0x41db79={'method':'GET','uri':util[_0x5c40('0x67')]('%s/%s',_0x10a303,_0x5c40('0x68')),'json':!![]};switch(_0xb287ac[_0x5c40('0x62')]){case _0x5c40('0x60'):_0x41db79[_0x5c40('0x69')]={'Authorization':util['format'](_0x5c40('0x6a'),new Buffer(util[_0x5c40('0x67')]('%s:%s',_0xb287ac[_0x5c40('0x5f')],_0xb287ac[_0x5c40('0x60')]))[_0x5c40('0x6b')]('base64'))};break;case _0x5c40('0x61'):_0x41db79['headers']={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x5c40('0x67')](_0x5c40('0x6c'),_0xb287ac['username'],_0xb287ac[_0x5c40('0x61')]))[_0x5c40('0x6b')]('base64'))};break;default:throw new db[(_0x5c40('0x6d'))][(_0x5c40('0x6e'))](_0x5c40('0x6f'));}return rp(_0x41db79);}})[_0x5c40('0x1c')](function(_0x545afa){if(_0x545afa){var _0x449b26=[_0x5c40('0x70'),_0x5c40('0x71'),_0x5c40('0x72'),_0x5c40('0x73')];_[_0x5c40('0x74')](_0x545afa[_0x5c40('0x68')],function(_0x4f888d){return _0x449b26[_0x5c40('0x75')](_0x4f888d['type']);});return{'count':_0x545afa[_0x5c40('0x68')][_0x5c40('0x3f')],'rows':_['map'](_0x545afa[_0x5c40('0x68')],function(_0x5ca0a9){return{'id':_0x5ca0a9['id'],'name':_0x5ca0a9[_0x5c40('0x76')]>0x7?_0x5ca0a9[_0x5c40('0x77')]:_0x5ca0a9[_0x5c40('0x37')],'custom':_0x5ca0a9[_0x5c40('0x76')]>0x7?!![]:![],'options':_0x5ca0a9[_0x5c40('0x78')]?_0x5ca0a9[_0x5c40('0x78')]:_0x5ca0a9['custom_field_options']?_0x5ca0a9[_0x5c40('0x79')]:[]};})};}})[_0x5c40('0x1c')](respondWithResult(_0x4e0f7d,null))[_0x5c40('0x27')](function(_0x340dde){var _0xe8d112=_0x59ea0d[_0x5c40('0x3a')][_0x5c40('0x7a')]?0x1f4:_0x340dde[_0x5c40('0x7b')]||0x1f4;logger['error'](_0x5c40('0x7c'),_0x5c40('0x5e'),_0xe8d112,JSON[_0x5c40('0x21')](_0x340dde));delete _0x340dde[_0x5c40('0x34')];if(_0xe8d112===0x191){_0xe8d112=0x190;}_0x4e0f7d[_0x5c40('0x29')](_0xe8d112)[_0x5c40('0x7d')](_0x59ea0d[_0x5c40('0x3a')][_0x5c40('0x7a')]?{'message':_0x5c40('0x7e'),'statusCode':_0x340dde['statusCode']}:_0x340dde);});};