3ac7deef5e97512b3c0c19e39e1f6d90617f6dc4
[motion2.git] / server / api / intDeskAccount / intDeskAccount.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 _0x3061=['Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','show','DeskAccount','find','create','body','params','findOne','DeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','DeskField','priority','remoteUri','authType','password','consumerKey','token','tokenSecret','lastIndexOf','format','%s/custom_fields','application/json','basic','headers','Authorization','%s:%s','username','toString','base64','concat','_embedded','label','statusCode','stringify','test'];(function(_0x588a56,_0x4adb69){var _0x5666ea=function(_0x36b175){while(--_0x36b175){_0x588a56['push'](_0x588a56['shift']());}};_0x5666ea(++_0x4adb69);}(_0x3061,0xdf));var _0x1306=function(_0x441563,_0x1d4a28){_0x441563=_0x441563-0x0;var _0x2369ec=_0x3061[_0x441563];return _0x2369ec;};'use strict';var emlformat=require(_0x1306('0x0'));var rimraf=require(_0x1306('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1306('0x2'));var rp=require('request-promise');var moment=require(_0x1306('0x3'));var BPromise=require(_0x1306('0x4'));var Mustache=require(_0x1306('0x5'));var util=require('util');var path=require(_0x1306('0x6'));var sox=require('sox');var csv=require(_0x1306('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1306('0x8'));var _=require('lodash');var squel=require(_0x1306('0x9'));var crypto=require('crypto');var jsforce=require(_0x1306('0xa'));var deskjs=require(_0x1306('0xb'));var toCsv=require('to-csv');var querystring=require(_0x1306('0xc'));var Papa=require(_0x1306('0xd'));var Redis=require(_0x1306('0xe'));var authService=require(_0x1306('0xf'));var qs=require(_0x1306('0x10'));var as=require(_0x1306('0x11'));var hardwareService=require(_0x1306('0x12'));var logger=require(_0x1306('0x13'))('api');var utils=require(_0x1306('0x14'));var config=require(_0x1306('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1306('0x16'))['db'];var integrations=require(_0x1306('0x17'));function respondWithStatusCode(_0x423c37,_0x38a6f5){_0x38a6f5=_0x38a6f5||0xcc;return function(_0x155a19){if(_0x155a19){return _0x423c37[_0x1306('0x18')](_0x38a6f5);}return _0x423c37['status'](_0x38a6f5)['end']();};}function respondWithResult(_0x30aa8b,_0x1090c2){_0x1090c2=_0x1090c2||0xc8;return function(_0x6e6917){if(_0x6e6917){return _0x30aa8b[_0x1306('0x19')](_0x1090c2)[_0x1306('0x1a')](_0x6e6917);}};}function respondWithFilteredResult(_0x27c369,_0x34ba7d){return function(_0x2b4695){if(_0x2b4695){var _0x2b9841=typeof _0x34ba7d[_0x1306('0x1b')]===_0x1306('0x1c')&&typeof _0x34ba7d[_0x1306('0x1d')]===_0x1306('0x1c');var _0x5592a9=_0x2b4695[_0x1306('0x1e')];var _0x3527ed=_0x2b9841?0x0:_0x34ba7d[_0x1306('0x1b')];var _0x122819=_0x2b9841?_0x2b4695['count']:_0x34ba7d['offset']+_0x34ba7d[_0x1306('0x1d')];var _0x2ecafd;if(_0x122819>=_0x5592a9){_0x122819=_0x5592a9;_0x2ecafd=0xc8;}else{_0x2ecafd=0xce;}_0x27c369[_0x1306('0x19')](_0x2ecafd);return _0x27c369[_0x1306('0x1f')](_0x1306('0x20'),_0x3527ed+'-'+_0x122819+'/'+_0x5592a9)[_0x1306('0x1a')](_0x2b4695);}return null;};}function patchUpdates(_0x119ae9){return function(_0x508bbd){try{jsonpatch[_0x1306('0x21')](_0x508bbd,_0x119ae9,!![]);}catch(_0x44e22d){return BPromise[_0x1306('0x22')](_0x44e22d);}return _0x508bbd['save']();};}function saveUpdates(_0x2edc7f,_0x6db495){return function(_0x1a5bec){if(_0x1a5bec){return _0x1a5bec[_0x1306('0x23')](_0x2edc7f)[_0x1306('0x24')](function(_0xbeda04){return _0xbeda04;});}return null;};}function removeEntity(_0x40302f,_0x226247){return function(_0x4dd6b5){if(_0x4dd6b5){return _0x4dd6b5[_0x1306('0x25')]()[_0x1306('0x24')](function(){_0x40302f[_0x1306('0x19')](0xcc)[_0x1306('0x26')]();});}};}function handleEntityNotFound(_0x20d4fd,_0x65b808){return function(_0x150661){if(!_0x150661){_0x20d4fd[_0x1306('0x18')](0x194);}return _0x150661;};}function handleError(_0x51ab15,_0x1fba46){_0x1fba46=_0x1fba46||0x1f4;return function(_0x244ee6){logger[_0x1306('0x27')](_0x244ee6[_0x1306('0x28')]);if(_0x244ee6[_0x1306('0x29')]){delete _0x244ee6['name'];}_0x51ab15[_0x1306('0x19')](_0x1fba46)[_0x1306('0x2a')](_0x244ee6);};}exports[_0x1306('0x2b')]=function(_0x3e3569,_0x1b66a5){var _0x3ab30d={},_0x23d556={},_0x41fcbc={'count':0x0,'rows':[]};var _0x45597a=_[_0x1306('0x2c')](db['DeskAccount'][_0x1306('0x2d')],function(_0x18e2b2){return{'name':_0x18e2b2[_0x1306('0x2e')],'type':_0x18e2b2[_0x1306('0x2f')][_0x1306('0x30')]};});_0x23d556[_0x1306('0x31')]=_[_0x1306('0x2c')](_0x45597a,_0x1306('0x29'));_0x23d556[_0x1306('0x32')]=_[_0x1306('0x33')](_0x3e3569[_0x1306('0x32')]);_0x23d556[_0x1306('0x34')]=_[_0x1306('0x35')](_0x23d556['model'],_0x23d556[_0x1306('0x32')]);_0x3ab30d['attributes']=_[_0x1306('0x35')](_0x23d556['model'],qs[_0x1306('0x36')](_0x3e3569[_0x1306('0x32')][_0x1306('0x36')]));_0x3ab30d[_0x1306('0x37')]=_0x3ab30d[_0x1306('0x37')][_0x1306('0x38')]?_0x3ab30d[_0x1306('0x37')]:_0x23d556['model'];if(!_0x3e3569[_0x1306('0x32')][_0x1306('0x39')](_0x1306('0x3a'))){_0x3ab30d[_0x1306('0x1d')]=qs[_0x1306('0x1d')](_0x3e3569[_0x1306('0x32')][_0x1306('0x1d')]);_0x3ab30d[_0x1306('0x1b')]=qs[_0x1306('0x1b')](_0x3e3569[_0x1306('0x32')][_0x1306('0x1b')]);}_0x3ab30d[_0x1306('0x3b')]=qs[_0x1306('0x3c')](_0x3e3569[_0x1306('0x32')][_0x1306('0x3c')]);_0x3ab30d[_0x1306('0x3d')]=qs['filters'](_['pick'](_0x3e3569[_0x1306('0x32')],_0x23d556[_0x1306('0x34')]),_0x45597a);if(_0x3e3569[_0x1306('0x32')][_0x1306('0x3e')]){_0x3ab30d['where']=_[_0x1306('0x3f')](_0x3ab30d['where'],{'$or':_[_0x1306('0x2c')](_0x45597a,function(_0x54784a){if(_0x54784a[_0x1306('0x2f')]!=='VIRTUAL'){var _0x3d9af4={};_0x3d9af4[_0x54784a[_0x1306('0x29')]]={'$like':'%'+_0x3e3569['query']['filter']+'%'};return _0x3d9af4;}})});}_0x3ab30d=_[_0x1306('0x3f')]({},_0x3ab30d,_0x3e3569[_0x1306('0x40')]);var _0x5a98fd={'where':_0x3ab30d['where']};return db['DeskAccount']['count'](_0x5a98fd)[_0x1306('0x24')](function(_0x2400ed){_0x41fcbc[_0x1306('0x1e')]=_0x2400ed;if(_0x3e3569[_0x1306('0x32')][_0x1306('0x41')]){_0x3ab30d[_0x1306('0x42')]=[{'all':!![]}];}return db['DeskAccount'][_0x1306('0x43')](_0x3ab30d);})[_0x1306('0x24')](function(_0x18cd40){_0x41fcbc['rows']=_0x18cd40;return _0x41fcbc;})[_0x1306('0x24')](respondWithFilteredResult(_0x1b66a5,_0x3ab30d))[_0x1306('0x44')](handleError(_0x1b66a5,null));};exports[_0x1306('0x45')]=function(_0x3d735f,_0x4e647a){var _0x39bc85={'raw':![],'where':{'id':_0x3d735f['params']['id']}},_0x1e8843={};_0x1e8843[_0x1306('0x31')]=_['keys'](db['DeskAccount'][_0x1306('0x2d')]);_0x1e8843[_0x1306('0x32')]=_[_0x1306('0x33')](_0x3d735f[_0x1306('0x32')]);_0x1e8843['filters']=_[_0x1306('0x35')](_0x1e8843[_0x1306('0x31')],_0x1e8843['query']);_0x39bc85[_0x1306('0x37')]=_[_0x1306('0x35')](_0x1e8843[_0x1306('0x31')],qs[_0x1306('0x36')](_0x3d735f[_0x1306('0x32')]['fields']));_0x39bc85[_0x1306('0x37')]=_0x39bc85[_0x1306('0x37')]['length']?_0x39bc85[_0x1306('0x37')]:_0x1e8843[_0x1306('0x31')];if(_0x3d735f[_0x1306('0x32')][_0x1306('0x41')]){_0x39bc85[_0x1306('0x42')]=[{'all':!![]}];}_0x39bc85=_[_0x1306('0x3f')]({},_0x39bc85,_0x3d735f['options']);return db[_0x1306('0x46')][_0x1306('0x47')](_0x39bc85)['then'](handleEntityNotFound(_0x4e647a,null))['then'](respondWithResult(_0x4e647a,null))[_0x1306('0x44')](handleError(_0x4e647a,null));};exports['create']=function(_0x45c22e,_0x2df6e8){return db[_0x1306('0x46')][_0x1306('0x48')](_0x45c22e[_0x1306('0x49')],{})['then'](respondWithResult(_0x2df6e8,0xc9))[_0x1306('0x44')](handleError(_0x2df6e8,null));};exports[_0x1306('0x23')]=function(_0x4d386c,_0x5b1c74){if(_0x4d386c[_0x1306('0x49')]['id']){delete _0x4d386c[_0x1306('0x49')]['id'];}return db['DeskAccount'][_0x1306('0x47')]({'where':{'id':_0x4d386c[_0x1306('0x4a')]['id']}})[_0x1306('0x24')](handleEntityNotFound(_0x5b1c74,null))[_0x1306('0x24')](saveUpdates(_0x4d386c[_0x1306('0x49')],null))['then'](respondWithResult(_0x5b1c74,null))[_0x1306('0x44')](handleError(_0x5b1c74,null));};exports['destroy']=function(_0xbc5e43,_0x473e3a){return db[_0x1306('0x46')]['find']({'where':{'id':_0xbc5e43[_0x1306('0x4a')]['id']}})['then'](handleEntityNotFound(_0x473e3a,null))[_0x1306('0x24')](removeEntity(_0x473e3a,null))[_0x1306('0x44')](handleError(_0x473e3a,null));};exports['getConfigurations']=function(_0x526d67,_0x362f95,_0x265c1a){var _0x2bf8ae={};var _0x7efa8d={};var _0x231ba4;var _0x122535;return db[_0x1306('0x46')][_0x1306('0x4b')]({'where':{'id':_0x526d67[_0x1306('0x4a')]['id']}})[_0x1306('0x24')](handleEntityNotFound(_0x362f95,null))['then'](function(_0x47ce02){if(_0x47ce02){_0x231ba4=_0x47ce02;_0x7efa8d[_0x1306('0x31')]=_['keys'](db[_0x1306('0x4c')][_0x1306('0x2d')]);_0x7efa8d['query']=_[_0x1306('0x33')](_0x526d67[_0x1306('0x32')]);_0x7efa8d[_0x1306('0x34')]=_[_0x1306('0x35')](_0x7efa8d[_0x1306('0x31')],_0x7efa8d[_0x1306('0x32')]);_0x2bf8ae[_0x1306('0x37')]=_[_0x1306('0x35')](_0x7efa8d[_0x1306('0x31')],qs[_0x1306('0x36')](_0x526d67[_0x1306('0x32')][_0x1306('0x36')]));_0x2bf8ae['attributes']=_0x2bf8ae['attributes'][_0x1306('0x38')]?_0x2bf8ae[_0x1306('0x37')]:_0x7efa8d[_0x1306('0x31')];_0x2bf8ae[_0x1306('0x3b')]=qs[_0x1306('0x3c')](_0x526d67[_0x1306('0x32')][_0x1306('0x3c')]);_0x2bf8ae[_0x1306('0x3d')]=qs[_0x1306('0x34')](_[_0x1306('0x4d')](_0x526d67[_0x1306('0x32')],_0x7efa8d[_0x1306('0x34')]));if(_0x526d67['query'][_0x1306('0x3e')]){_0x2bf8ae['where']=_[_0x1306('0x3f')](_0x2bf8ae['where'],{'$or':_[_0x1306('0x2c')](_0x2bf8ae[_0x1306('0x37')],function(_0xe0c44a){var _0x1c0167={};_0x1c0167[_0xe0c44a]={'$like':'%'+_0x526d67[_0x1306('0x32')][_0x1306('0x3e')]+'%'};return _0x1c0167;})});}_0x2bf8ae=_[_0x1306('0x3f')]({},_0x2bf8ae,_0x526d67[_0x1306('0x40')]);return _0x231ba4['getConfigurations'](_0x2bf8ae);}})[_0x1306('0x24')](function(_0x416867){if(_0x416867){_0x122535=_0x416867['length'];if(!_0x526d67[_0x1306('0x32')][_0x1306('0x39')](_0x1306('0x3a'))){_0x2bf8ae['limit']=qs['limit'](_0x526d67['query']['limit']);_0x2bf8ae[_0x1306('0x1b')]=qs['offset'](_0x526d67[_0x1306('0x32')]['offset']);}return _0x231ba4['getConfigurations'](_0x2bf8ae);}})['then'](function(_0x57ff7a){if(_0x57ff7a){return _0x57ff7a?{'count':_0x122535,'rows':_0x57ff7a}:null;}})[_0x1306('0x24')](respondWithResult(_0x362f95,null))['catch'](handleError(_0x362f95,null));};exports[_0x1306('0x4e')]=function(_0x2098c9,_0x58c5b8,_0x3214a4){if(_0x2098c9[_0x1306('0x49')]['id']){delete _0x2098c9['body']['id'];}return db[_0x1306('0x46')]['findOne']({'where':{'id':_0x2098c9[_0x1306('0x4a')]['id']}})[_0x1306('0x24')](handleEntityNotFound(_0x58c5b8,null))[_0x1306('0x24')](function(_0x59789c){if(_0x59789c){_0x2098c9['body'][_0x1306('0x4f')]=_0x59789c['id'];_0x2098c9['body'][_0x1306('0x50')]=integrations[_0x1306('0x51')](_0x2098c9['body'][_0x1306('0x52')],_0x2098c9[_0x1306('0x49')][_0x1306('0x2f')]);_0x2098c9[_0x1306('0x49')][_0x1306('0x53')]=integrations[_0x1306('0x54')](_0x2098c9[_0x1306('0x49')]['channel'],_0x2098c9['body'][_0x1306('0x2f')]);return db[_0x1306('0x4c')][_0x1306('0x48')](_0x2098c9['body'],{'include':[{'model':db['DeskField'],'as':_0x1306('0x50')},{'model':db[_0x1306('0x55')],'as':_0x1306('0x53')}]});}return null;})[_0x1306('0x24')](respondWithResult(_0x58c5b8,null))['catch'](handleError(_0x58c5b8,null));};exports['getFields']=function(_0x433571,_0x437e68,_0x5ae9cb){var _0x3fbc0d=[{'name':_0x1306('0x56'),'label':_0x1306('0x56'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x32504e='';return db['DeskAccount'][_0x1306('0x4b')]({'where':{'id':_0x433571[_0x1306('0x4a')]['id']},'attributes':['id',_0x1306('0x57'),_0x1306('0x58'),'username',_0x1306('0x59'),_0x1306('0x5a'),'consumerSecret',_0x1306('0x5b'),_0x1306('0x5c')]})[_0x1306('0x24')](handleEntityNotFound(_0x437e68,null))[_0x1306('0x24')](function(_0x887374){if(_0x887374){_0x32504e=_0x887374[_0x1306('0x57')];var _0x457a20=_0x32504e['slice'](-0x1);if(_0x457a20==='/'){_0x32504e=_0x32504e['substring'](0x0,_0x32504e[_0x1306('0x5d')](_0x457a20));}var _0x2b1e68={'method':'GET','uri':util[_0x1306('0x5e')](_0x1306('0x5f'),_0x32504e),'headers':{'Content-Type':_0x1306('0x60'),'Accept':_0x1306('0x60')},'json':!![]};if(_0x887374[_0x1306('0x58')]===_0x1306('0x61')){_0x2b1e68[_0x1306('0x62')][_0x1306('0x63')]=util[_0x1306('0x5e')]('Basic\x20%s',new Buffer(util[_0x1306('0x5e')](_0x1306('0x64'),_0x887374[_0x1306('0x65')],_0x887374[_0x1306('0x59')]))[_0x1306('0x66')](_0x1306('0x67')));}return rp(_0x2b1e68)[_0x1306('0x24')](function(_0x1cfee3){return _0x3fbc0d[_0x1306('0x68')](_['map'](_0x1cfee3[_0x1306('0x69')]['entries'],function(_0x31040e){return{'id':_0x31040e[_0x1306('0x29')],'name':_0x31040e[_0x1306('0x29')],'type':_0x31040e[_0x1306('0x2f')],'active':_0x31040e['active'],'label':_0x31040e[_0x1306('0x6a')],'custom':!![]};}));});}})[_0x1306('0x24')](function(_0x164ec2){return{'count':_0x164ec2[_0x1306('0x38')],'rows':_0x164ec2};})['then'](respondWithResult(_0x437e68,null))[_0x1306('0x44')](function(_0x4c4614){var _0x5f0da9=_0x433571[_0x1306('0x32')]['test']?0x1f4:_0x4c4614[_0x1306('0x6b')]||0x1f4;logger[_0x1306('0x27')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5f0da9,JSON[_0x1306('0x6c')](_0x4c4614));delete _0x4c4614[_0x1306('0x29')];if(_0x5f0da9===0x191){_0x5f0da9=0x190;}_0x437e68[_0x1306('0x19')](_0x5f0da9)['send'](_0x433571[_0x1306('0x32')][_0x1306('0x6d')]?{'message':_0x1306('0x6e'),'statusCode':_0x4c4614[_0x1306('0x6b')]}:_0x4c4614);});};