963db841da6634eb822b582f6d8df720ca6354de
[motion2.git] / server / api / cmHopper / cmHopper.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 _0xea68=['CampaignId','Campaign','VoiceQueueId','omit','createdAt','updatedAt','state','deleted','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','CmContact','ContactId','firstName','lastName','isNil','finally','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','findOne','scheduledat','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','preview','isNumber','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$ne','$eq','$not','$notBetween','$in','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','CmHopper','include','findAll','rows','catch','show','params','includeAll','options','create','body','describe','find'];(function(_0x9b56a9,_0x56a24c){var _0x27312a=function(_0x201977){while(--_0x201977){_0x9b56a9['push'](_0x9b56a9['shift']());}};_0x27312a(++_0x56a24c);}(_0xea68,0x153));var _0x8ea6=function(_0x2c7579,_0x3ecc7b){_0x2c7579=_0x2c7579-0x0;var _0x5e1426=_0xea68[_0x2c7579];return _0x5e1426;};'use strict';var emlformat=require(_0x8ea6('0x0'));var rimraf=require(_0x8ea6('0x1'));var zipdir=require(_0x8ea6('0x2'));var jsonpatch=require(_0x8ea6('0x3'));var rp=require(_0x8ea6('0x4'));var moment=require(_0x8ea6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8ea6('0x6'));var util=require(_0x8ea6('0x7'));var path=require(_0x8ea6('0x8'));var sox=require(_0x8ea6('0x9'));var csv=require(_0x8ea6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ea6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8ea6('0xa'));var querystring=require(_0x8ea6('0xc'));var Papa=require('papaparse');var Redis=require(_0x8ea6('0xd'));var authService=require(_0x8ea6('0xe'));var qs=require(_0x8ea6('0xf'));var as=require(_0x8ea6('0x10'));var hardwareService=require(_0x8ea6('0x11'));var logger=require(_0x8ea6('0x12'))(_0x8ea6('0x13'));var utils=require(_0x8ea6('0x14'));var config=require(_0x8ea6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8ea6('0x16'))['db'];function respondWithStatusCode(_0x512b38,_0x3617a8){_0x3617a8=_0x3617a8||0xcc;return function(_0x541a89){if(_0x541a89){return _0x512b38[_0x8ea6('0x17')](_0x3617a8);}return _0x512b38[_0x8ea6('0x18')](_0x3617a8)[_0x8ea6('0x19')]();};}function respondWithResult(_0x29bcff,_0x4e3b90){_0x4e3b90=_0x4e3b90||0xc8;return function(_0x40117a){if(_0x40117a){return _0x29bcff[_0x8ea6('0x18')](_0x4e3b90)[_0x8ea6('0x1a')](_0x40117a);}};}function respondWithFilteredResult(_0x2e4c97,_0x262862){return function(_0xad5ca3){if(_0xad5ca3){var _0x162419=typeof _0x262862[_0x8ea6('0x1b')]==='undefined'&&typeof _0x262862[_0x8ea6('0x1c')]===_0x8ea6('0x1d');var _0x23c1c0=_0xad5ca3[_0x8ea6('0x1e')];var _0x26a7d5=_0x162419?0x0:_0x262862[_0x8ea6('0x1b')];var _0x935d7=_0x162419?_0xad5ca3['count']:_0x262862[_0x8ea6('0x1b')]+_0x262862[_0x8ea6('0x1c')];var _0x2378a9;if(_0x935d7>=_0x23c1c0){_0x935d7=_0x23c1c0;_0x2378a9=0xc8;}else{_0x2378a9=0xce;}_0x2e4c97[_0x8ea6('0x18')](_0x2378a9);return _0x2e4c97['set'](_0x8ea6('0x1f'),_0x26a7d5+'-'+_0x935d7+'/'+_0x23c1c0)['json'](_0xad5ca3);}return null;};}function patchUpdates(_0x3e7b86){return function(_0x444bb0){try{jsonpatch[_0x8ea6('0x20')](_0x444bb0,_0x3e7b86,!![]);}catch(_0x4c98cc){return BPromise[_0x8ea6('0x21')](_0x4c98cc);}return _0x444bb0['save']();};}function saveUpdates(_0x23d13f,_0x4694bf){return function(_0x1cd4b7){if(_0x1cd4b7){return _0x1cd4b7[_0x8ea6('0x22')](_0x23d13f)[_0x8ea6('0x23')](function(_0x30b821){return _0x30b821;});}return null;};}function removeEntity(_0x5c1085,_0x25951d){return function(_0xf3fcf9){if(_0xf3fcf9){return _0xf3fcf9[_0x8ea6('0x24')]()[_0x8ea6('0x23')](function(){_0x5c1085[_0x8ea6('0x18')](0xcc)[_0x8ea6('0x19')]();});}};}function handleEntityNotFound(_0x2e7aed,_0x47130d){return function(_0x57ae41){if(!_0x57ae41){_0x2e7aed[_0x8ea6('0x17')](0x194);}return _0x57ae41;};}function handleError(_0x3411c2,_0x4ea2fe){_0x4ea2fe=_0x4ea2fe||0x1f4;return function(_0x5ecc95){logger[_0x8ea6('0x25')](_0x5ecc95[_0x8ea6('0x26')]);if(_0x5ecc95[_0x8ea6('0x27')]){delete _0x5ecc95[_0x8ea6('0x27')];}_0x3411c2[_0x8ea6('0x18')](_0x4ea2fe)[_0x8ea6('0x28')](_0x5ecc95);};}exports[_0x8ea6('0x29')]=function(_0x3c03dc,_0x4f9480){var _0x230879={},_0x11c2fe={},_0x2b20af={'count':0x0,'rows':[]};var _0x576e80=_[_0x8ea6('0x2a')](db['CmHopper'][_0x8ea6('0x2b')],function(_0x5cc6df){return{'name':_0x5cc6df[_0x8ea6('0x2c')],'type':_0x5cc6df['type'][_0x8ea6('0x2d')]};});_0x11c2fe[_0x8ea6('0x2e')]=_[_0x8ea6('0x2a')](_0x576e80,_0x8ea6('0x27'));_0x11c2fe[_0x8ea6('0x2f')]=_[_0x8ea6('0x30')](_0x3c03dc['query']);_0x11c2fe[_0x8ea6('0x31')]=_[_0x8ea6('0x32')](_0x11c2fe[_0x8ea6('0x2e')],_0x11c2fe['query']);_0x11c2fe[_0x8ea6('0x31')]=_[_0x8ea6('0x33')](_0x11c2fe[_0x8ea6('0x31')],[_0x8ea6('0x34'),'$or',_0x8ea6('0x35'),_0x8ea6('0x36'),_0x8ea6('0x37'),'$lte',_0x8ea6('0x38'),_0x8ea6('0x39'),_0x8ea6('0x3a'),'$between',_0x8ea6('0x3b'),_0x8ea6('0x3c'),_0x8ea6('0x3d'),'$like',_0x8ea6('0x3e'),_0x8ea6('0x3f'),_0x8ea6('0x40'),_0x8ea6('0x41'),_0x8ea6('0x42'),_0x8ea6('0x43'),_0x8ea6('0x44'),'$any']);_0x230879['attributes']=_[_0x8ea6('0x32')](_0x11c2fe[_0x8ea6('0x2e')],qs[_0x8ea6('0x45')](_0x3c03dc['query'][_0x8ea6('0x45')]));_0x230879[_0x8ea6('0x46')]=_0x230879[_0x8ea6('0x46')][_0x8ea6('0x47')]?_0x230879[_0x8ea6('0x46')]:_0x11c2fe[_0x8ea6('0x2e')];if(!_0x3c03dc['query'][_0x8ea6('0x48')](_0x8ea6('0x49'))){_0x230879[_0x8ea6('0x1c')]=qs[_0x8ea6('0x1c')](_0x3c03dc[_0x8ea6('0x2f')]['limit']);_0x230879['offset']=qs[_0x8ea6('0x1b')](_0x3c03dc['query'][_0x8ea6('0x1b')]);}_0x230879[_0x8ea6('0x4a')]=qs[_0x8ea6('0x4b')](_0x3c03dc[_0x8ea6('0x2f')]['sort']);_0x230879[_0x8ea6('0x4c')]=qs['filters'](_['pick'](_0x3c03dc['query'],_0x11c2fe[_0x8ea6('0x31')]),_0x576e80);if(_0x3c03dc[_0x8ea6('0x2f')][_0x8ea6('0x4d')]){_0x230879[_0x8ea6('0x4c')]=_[_0x8ea6('0x4e')](_0x230879[_0x8ea6('0x4c')],{'$or':_['map'](_0x576e80,function(_0x321673){if(_0x321673[_0x8ea6('0x4f')]!=='VIRTUAL'){var _0x82516d={};_0x82516d[_0x321673[_0x8ea6('0x27')]]={'$like':'%'+_0x3c03dc[_0x8ea6('0x2f')]['filter']+'%'};return _0x82516d;}})});}_0x230879=_[_0x8ea6('0x4e')]({},_0x230879,_0x3c03dc['options']);var _0x450648={'where':_0x230879[_0x8ea6('0x4c')]};return db[_0x8ea6('0x50')][_0x8ea6('0x1e')](_0x450648)['then'](function(_0x422369){_0x2b20af[_0x8ea6('0x1e')]=_0x422369;if(_0x3c03dc[_0x8ea6('0x2f')]['includeAll']){_0x230879[_0x8ea6('0x51')]=[{'all':!![]}];}return db[_0x8ea6('0x50')][_0x8ea6('0x52')](_0x230879);})[_0x8ea6('0x23')](function(_0x2a2b88){_0x2b20af[_0x8ea6('0x53')]=_0x2a2b88;return _0x2b20af;})[_0x8ea6('0x23')](respondWithFilteredResult(_0x4f9480,_0x230879))[_0x8ea6('0x54')](handleError(_0x4f9480,null));};exports[_0x8ea6('0x55')]=function(_0x13aeeb,_0x3e8b5d){var _0x14f629={'raw':!![],'where':{'id':_0x13aeeb[_0x8ea6('0x56')]['id']}},_0x1c62da={};_0x1c62da['model']=_['keys'](db[_0x8ea6('0x50')][_0x8ea6('0x2b')]);_0x1c62da[_0x8ea6('0x2f')]=_['keys'](_0x13aeeb[_0x8ea6('0x2f')]);_0x1c62da[_0x8ea6('0x31')]=_['intersection'](_0x1c62da['model'],_0x1c62da[_0x8ea6('0x2f')]);_0x14f629[_0x8ea6('0x46')]=_[_0x8ea6('0x32')](_0x1c62da[_0x8ea6('0x2e')],qs['fields'](_0x13aeeb[_0x8ea6('0x2f')][_0x8ea6('0x45')]));_0x14f629[_0x8ea6('0x46')]=_0x14f629[_0x8ea6('0x46')][_0x8ea6('0x47')]?_0x14f629['attributes']:_0x1c62da[_0x8ea6('0x2e')];if(_0x13aeeb['query'][_0x8ea6('0x57')]){_0x14f629[_0x8ea6('0x51')]=[{'all':!![]}];}_0x14f629=_[_0x8ea6('0x4e')]({},_0x14f629,_0x13aeeb[_0x8ea6('0x58')]);return db['CmHopper']['find'](_0x14f629)[_0x8ea6('0x23')](handleEntityNotFound(_0x3e8b5d,null))[_0x8ea6('0x23')](respondWithResult(_0x3e8b5d,null))[_0x8ea6('0x54')](handleError(_0x3e8b5d,null));};exports[_0x8ea6('0x59')]=function(_0x4901b6,_0x3a93c0){return db[_0x8ea6('0x50')]['create'](_0x4901b6['body'],{})[_0x8ea6('0x23')](respondWithResult(_0x3a93c0,0xc9))[_0x8ea6('0x54')](handleError(_0x3a93c0,null));};exports[_0x8ea6('0x22')]=function(_0x584cea,_0xdde80b){if(_0x584cea['body']['id']){delete _0x584cea[_0x8ea6('0x5a')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x584cea['params']['id']}})[_0x8ea6('0x23')](handleEntityNotFound(_0xdde80b,null))[_0x8ea6('0x23')](saveUpdates(_0x584cea[_0x8ea6('0x5a')],null))[_0x8ea6('0x23')](respondWithResult(_0xdde80b,null))['catch'](handleError(_0xdde80b,null));};exports['describe']=function(_0x20ffb4,_0x3a37bb){return db['CmHopper'][_0x8ea6('0x5b')]()['then'](respondWithResult(_0x3a37bb,null))[_0x8ea6('0x54')](handleError(_0x3a37bb,null));};exports[_0x8ea6('0x24')]=function(_0x4eeba0,_0x26bea5){var _0x259a1b;return db[_0x8ea6('0x50')][_0x8ea6('0x5c')]({'where':{'id':_0x4eeba0[_0x8ea6('0x56')]['id']}})[_0x8ea6('0x23')](handleEntityNotFound(_0x26bea5,null))['then'](function(_0x5b6ee1){if(_0x5b6ee1){return _0x5b6ee1[_0x8ea6('0x24')]()[_0x8ea6('0x23')](function(_0x47d198){return _0x47d198;});}})['then'](function(_0x6047c3){_0x259a1b=_0x6047c3;if(_0x6047c3){if(_0x6047c3['VoiceQueueId']||_0x6047c3[_0x8ea6('0x5d')]){return db[_0x6047c3['VoiceQueueId']?'VoiceQueue':_0x8ea6('0x5e')][_0x8ea6('0x5c')]({'where':{'id':_0x6047c3[_0x8ea6('0x5f')]?_0x6047c3['VoiceQueueId']:_0x6047c3[_0x8ea6('0x5d')]},'attributes':['id',_0x8ea6('0x27')],'raw':!![]});}}})[_0x8ea6('0x23')](function(_0x2a45af){var _0xe0bc1b={};if(_0x2a45af){_[_0x8ea6('0x4e')](_0xe0bc1b,_[_0x8ea6('0x60')](_0x259a1b['dataValues'],[_0x8ea6('0x61'),_0x8ea6('0x62'),'id']));_0xe0bc1b[_0x8ea6('0x63')]=0x15;_0xe0bc1b['statedesc']=_0x8ea6('0x64');_0xe0bc1b['campaign']=_0x2a45af[_0x8ea6('0x27')];_0xe0bc1b[_0x8ea6('0x65')]=_0x4eeba0[_0x8ea6('0x66')]['name'];_0xe0bc1b['UserId']=_0x4eeba0[_0x8ea6('0x66')]['id'];_0xe0bc1b[_0x8ea6('0x64')]=!![];_0xe0bc1b[_0x8ea6('0x67')]=moment()[_0x8ea6('0x68')](_0x8ea6('0x69'));_0xe0bc1b[_0x8ea6('0x6a')]=_0x259a1b[_0x8ea6('0x6b')];_0xe0bc1b[_0x8ea6('0x6c')]=_0x259a1b[_0x8ea6('0x5f')]?'queue':'ivr';return db[_0x8ea6('0x6d')]['find']({'where':{'id':_0xe0bc1b[_0x8ea6('0x6e')]},'attributes':[_0x8ea6('0x6f'),_0x8ea6('0x70')]})[_0x8ea6('0x23')](function(_0x437a69){if(!_['isNil'](_0x26bea5)&&!_[_0x8ea6('0x71')](_0x437a69[_0x8ea6('0x6f')])){_0xe0bc1b['calleridname']=_0x437a69[_0x8ea6('0x6f')];if(!_[_0x8ea6('0x71')](_0x437a69[_0x8ea6('0x70')])){_0xe0bc1b['calleridname']+='\x20'+_0x437a69[_0x8ea6('0x70')];}}})[_0x8ea6('0x72')](function(){return db['CmHopperFinal'][_0x8ea6('0x59')](_0xe0bc1b);});}})[_0x8ea6('0x23')](function(){return _0x26bea5[_0x8ea6('0x18')](0xcc)[_0x8ea6('0x19')]();})[_0x8ea6('0x54')](handleError(_0x26bea5,null));};exports[_0x8ea6('0x73')]=function(_0x1feb70,_0x36b4ba,_0x36b84b){var _0x59931f=[];return db[_0x8ea6('0x6d')][_0x8ea6('0x5b')]()[_0x8ea6('0x23')](function(_0x282abf){_0x59931f=_[_0x8ea6('0x30')](_0x282abf);return _0x1feb70['user'][_0x8ea6('0x74')]({'where':{'type':_0x8ea6('0x75'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x8ea6('0x76')],'raw':!![]});})[_0x8ea6('0x23')](function(_0x453348){if(_0x453348&&_0x453348[_0x8ea6('0x47')]){return db[_0x8ea6('0x77')][_0x8ea6('0x78')](function(_0x5ad760){var _0x4f34ae={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8ea6('0x68')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x8ea6('0x2a')](_0x453348,'id')},'$or':[{'UserId':null},{'UserId':_0x1feb70['user']['id']}]};var _0x20bb4c=[];if(_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x79')]&&_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x79')]===_0x8ea6('0x7a')){if(!_[_0x8ea6('0x7b')](_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x7c')])){_0x4f34ae['id']={'$in':_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x7c')]};}_0x20bb4c=[[_0x8ea6('0x7d'),_0x8ea6('0x7e')],[_0x8ea6('0x7f'),_0x453348[0x0][_0x8ea6('0x76')]===_0x8ea6('0x7e')?_0x8ea6('0x80'):_0x8ea6('0x7e')],db[_0x8ea6('0x77')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x8ea6('0x80')]];}else{if(!_[_0x8ea6('0x7b')](_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x7c')])){_0x4f34ae['id']={'$notIn':_0x1feb70[_0x8ea6('0x5a')][_0x8ea6('0x7c')]};}_0x20bb4c=[[_0x8ea6('0x7d'),'DESC'],['scheduledAt',_0x453348[0x0][_0x8ea6('0x76')]],db[_0x8ea6('0x77')][_0x8ea6('0x81')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x8ea6('0x50')][_0x8ea6('0x82')]({'attributes':['id',_0x8ea6('0x83')],'where':_0x4f34ae,'order':_0x20bb4c,'transaction':_0x5ad760,'lock':_0x5ad760['LOCK'][_0x8ea6('0x84')],'include':[{'model':db['CmContact'],'as':_0x8ea6('0x85'),'attributes':_0x59931f,'include':[{'model':db[_0x8ea6('0x86')],'as':_0x8ea6('0x87'),'attributes':['id',_0x8ea6('0x27')]}]},{'model':db[_0x8ea6('0x88')],'as':_0x8ea6('0x89'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x8ea6('0x8a'),'attributes':['id',_0x8ea6('0x27'),_0x8ea6('0x8b')]}]})[_0x8ea6('0x23')](function(_0x590090){if(_0x590090){return _0x590090[_0x8ea6('0x22')]({'UserId':_0x1feb70[_0x8ea6('0x66')]['id']},{'transaction':_0x5ad760});}});});}})[_0x8ea6('0x23')](handleEntityNotFound(_0x36b4ba,null))[_0x8ea6('0x23')](respondWithResult(_0x36b4ba,null))[_0x8ea6('0x54')](handleError(_0x36b4ba,null));};exports['getOpenContacts']=function(_0x308876,_0x30bdd5,_0x62c25f){return _0x308876['user'][_0x8ea6('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x8ea6('0x8c')},'attributes':['id'],'raw':!![]})[_0x8ea6('0x23')](function(_0x2dd4f8){if(_0x2dd4f8&&_0x2dd4f8[_0x8ea6('0x47')]){return db[_0x8ea6('0x50')][_0x8ea6('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8ea6('0x68')](_0x8ea6('0x69'))},'VoiceQueueId':{'$in':_[_0x8ea6('0x2a')](_0x2dd4f8,'id')},'$or':[{'UserId':null},{'UserId':_0x308876[_0x8ea6('0x66')]['id']}]}});}return 0x0;})[_0x8ea6('0x23')](function(_0x281d7c){if(!_[_0x8ea6('0x71')](_0x281d7c)&&_[_0x8ea6('0x8d')](_0x281d7c)){return _0x30bdd5['status'](0xc8)[_0x8ea6('0x1a')]({'contacts':_0x281d7c});}else{logger[_0x8ea6('0x25')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x8ea6('0x8e'),0x194,_0x8ea6('0x8f'));_0x30bdd5[_0x8ea6('0x17')](0x194);}})[_0x8ea6('0x54')](handleError(_0x30bdd5,null));};