87c97f37339a73bb5e01a76b2ce31095a7cbbb04
[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 _0x7d3c=['api','../../config/utils','../../mysqldb','sendStatus','status','end','json','count','offset','limit','set','apply','save','update','destroy','name','map','CmHopper','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','$gt','$gte','$lt','$ne','$not','$between','$in','$notIn','$iLike','$like','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','catch','show','length','find','body','params','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','dataValues','createdAt','updatedAt','state','statedesc','deleted','membername','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','create','getVoiceQueues','outbound','sequelize','transaction','direction','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','preview','format','isNumber','error','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','html-pdf','eml-format','rimraf','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../config/environment','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x3c7936,_0x4bf3ec){var _0x56df6c=function(_0x18a2cf){while(--_0x18a2cf){_0x3c7936['push'](_0x3c7936['shift']());}};_0x56df6c(++_0x4bf3ec);}(_0x7d3c,0x10f));var _0xc7d3=function(_0xa2f2c0,_0x1bd315){_0xa2f2c0=_0xa2f2c0-0x0;var _0x3f2623=_0x7d3c[_0xa2f2c0];return _0x3f2623;};'use strict';var pdf=require(_0xc7d3('0x0'));var emlformat=require(_0xc7d3('0x1'));var rimraf=require(_0xc7d3('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc7d3('0x3'));var rp=require('request-promise');var moment=require(_0xc7d3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc7d3('0x5'));var util=require('util');var path=require(_0xc7d3('0x6'));var sox=require(_0xc7d3('0x7'));var csv=require(_0xc7d3('0x8'));var ejs=require(_0xc7d3('0x9'));var fs=require('fs');var _=require(_0xc7d3('0xa'));var squel=require(_0xc7d3('0xb'));var crypto=require(_0xc7d3('0xc'));var jsforce=require(_0xc7d3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xc7d3('0x8'));var querystring=require(_0xc7d3('0xe'));var Papa=require(_0xc7d3('0xf'));var Redis=require('ioredis');var shared=require(_0xc7d3('0x10'));var authService=require(_0xc7d3('0x11'));var qs=require(_0xc7d3('0x12'));var as=require(_0xc7d3('0x13'));var hardwareService=require(_0xc7d3('0x14'));var logger=require('../../config/logger')(_0xc7d3('0x15'));var utils=require(_0xc7d3('0x16'));var config=require(_0xc7d3('0x10'));var db=require(_0xc7d3('0x17'))['db'];function respondWithStatusCode(_0x55261a,_0x531987){_0x531987=_0x531987||0xcc;return function(_0x512d47){if(_0x512d47){return _0x55261a[_0xc7d3('0x18')](_0x531987);}return _0x55261a[_0xc7d3('0x19')](_0x531987)[_0xc7d3('0x1a')]();};}function respondWithResult(_0x43e331,_0x540a14){_0x540a14=_0x540a14||0xc8;return function(_0x3ff720){if(_0x3ff720){return _0x43e331['status'](_0x540a14)[_0xc7d3('0x1b')](_0x3ff720);}};}function respondWithFilteredResult(_0x45df8f,_0x423bbe){return function(_0x5bd1fe){if(_0x5bd1fe){var _0x570e48=_0x5bd1fe[_0xc7d3('0x1c')],_0x339efa=_0x423bbe[_0xc7d3('0x1d')],_0x5b1dc5=_0x423bbe[_0xc7d3('0x1d')]+_0x423bbe[_0xc7d3('0x1e')],_0x26b560;if(_0x5b1dc5>=_0x570e48){_0x5b1dc5=_0x570e48;_0x26b560=0xc8;}else{_0x26b560=0xce;}_0x45df8f['status'](_0x26b560);return _0x45df8f[_0xc7d3('0x1f')]('Content-Range',_0x339efa+'-'+_0x5b1dc5+'/'+_0x570e48)[_0xc7d3('0x1b')](_0x5bd1fe);}return null;};}function patchUpdates(_0x1be9f3){return function(_0x5082c8){try{jsonpatch[_0xc7d3('0x20')](_0x5082c8,_0x1be9f3,!![]);}catch(_0x48647c){return BPromise['reject'](_0x48647c);}return _0x5082c8[_0xc7d3('0x21')]();};}function saveUpdates(_0xea22e5,_0xe636a){return function(_0x110780){if(_0x110780){return _0x110780[_0xc7d3('0x22')](_0xea22e5)['then'](function(_0x38f482){return _0x38f482;});}return null;};}function removeEntity(_0x5260b0,_0x4c2c61){return function(_0x5195c4){if(_0x5195c4){return _0x5195c4[_0xc7d3('0x23')]()['then'](function(){_0x5260b0[_0xc7d3('0x19')](0xcc)[_0xc7d3('0x1a')]();});}};}function handleEntityNotFound(_0x370c4c,_0x24528b){return function(_0x2ad0b7){if(!_0x2ad0b7){_0x370c4c[_0xc7d3('0x18')](0x194);}return _0x2ad0b7;};}function handleError(_0x199bf3,_0x1e433e){_0x1e433e=_0x1e433e||0x1f4;return function(_0x2cfeba){logger['error'](_0x2cfeba['stack']);if(_0x2cfeba[_0xc7d3('0x24')]){delete _0x2cfeba[_0xc7d3('0x24')];}_0x199bf3[_0xc7d3('0x19')](_0x1e433e)['send'](_0x2cfeba);};}exports['index']=function(_0x4b7c61,_0x3f33ae){var _0xb4d93d={},_0x1a6707={},_0xed779b={'count':0x0,'rows':[]};var _0x41adc0=_[_0xc7d3('0x25')](db[_0xc7d3('0x26')][_0xc7d3('0x27')],function(_0x45b68d){return{'name':_0x45b68d[_0xc7d3('0x28')],'type':_0x45b68d[_0xc7d3('0x29')][_0xc7d3('0x2a')]};});_0x1a6707['model']=_[_0xc7d3('0x25')](_0x41adc0,_0xc7d3('0x24'));_0x1a6707[_0xc7d3('0x2b')]=_[_0xc7d3('0x2c')](_0x4b7c61[_0xc7d3('0x2b')]);_0x1a6707[_0xc7d3('0x2d')]=_[_0xc7d3('0x2e')](_0x1a6707[_0xc7d3('0x2f')],_0x1a6707[_0xc7d3('0x2b')]);_0x1a6707[_0xc7d3('0x2d')]=_['concat'](_0x1a6707['filters'],['$and','$or',_0xc7d3('0x30'),_0xc7d3('0x31'),_0xc7d3('0x32'),'$lte',_0xc7d3('0x33'),'$eq',_0xc7d3('0x34'),_0xc7d3('0x35'),'$notBetween',_0xc7d3('0x36'),_0xc7d3('0x37'),'$like','$notLike',_0xc7d3('0x38'),'$notILike',_0xc7d3('0x39'),_0xc7d3('0x3a'),_0xc7d3('0x3b'),_0xc7d3('0x3c'),_0xc7d3('0x3d')]);_0xb4d93d[_0xc7d3('0x3e')]=_[_0xc7d3('0x2e')](_0x1a6707[_0xc7d3('0x2f')],qs[_0xc7d3('0x3f')](_0x4b7c61['query'][_0xc7d3('0x3f')]));_0xb4d93d[_0xc7d3('0x3e')]=_0xb4d93d['attributes']['length']?_0xb4d93d['attributes']:_0x1a6707[_0xc7d3('0x2f')];if(!_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x40')]('nolimit')){_0xb4d93d[_0xc7d3('0x1e')]=qs['limit'](_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x1e')]);_0xb4d93d[_0xc7d3('0x1d')]=qs[_0xc7d3('0x1d')](_0x4b7c61[_0xc7d3('0x2b')]['offset']);}_0xb4d93d[_0xc7d3('0x41')]=qs[_0xc7d3('0x42')](_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x42')]);_0xb4d93d[_0xc7d3('0x43')]=qs[_0xc7d3('0x2d')](_[_0xc7d3('0x44')](_0x4b7c61[_0xc7d3('0x2b')],_0x1a6707[_0xc7d3('0x2d')]),_0x41adc0);if(_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x45')]){_0xb4d93d['where']=_[_0xc7d3('0x46')](_0xb4d93d['where'],{'$or':_['map'](_0x41adc0,function(_0x4a1a04){if(_0x4a1a04['type']!==_0xc7d3('0x47')){var _0x5404b0={};_0x5404b0[_0x4a1a04[_0xc7d3('0x24')]]={'$like':'%'+_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x45')]+'%'};return _0x5404b0;}})});}_0xb4d93d=_[_0xc7d3('0x46')]({},_0xb4d93d,_0x4b7c61[_0xc7d3('0x48')]);var _0x45b4c3={'where':_0xb4d93d[_0xc7d3('0x43')]};return db[_0xc7d3('0x26')]['count'](_0x45b4c3)[_0xc7d3('0x49')](function(_0x20691f){_0xed779b[_0xc7d3('0x1c')]=_0x20691f;if(_0x4b7c61[_0xc7d3('0x2b')][_0xc7d3('0x4a')]){_0xb4d93d[_0xc7d3('0x4b')]=[{'all':!![]}];}return db[_0xc7d3('0x26')]['findAll'](_0xb4d93d);})[_0xc7d3('0x49')](function(_0x394022){_0xed779b['rows']=_0x394022;return _0xed779b;})[_0xc7d3('0x49')](respondWithFilteredResult(_0x3f33ae,_0xb4d93d))[_0xc7d3('0x4c')](handleError(_0x3f33ae,null));};exports[_0xc7d3('0x4d')]=function(_0x36cd2a,_0x240836){var _0x126d94={'raw':!![],'where':{'id':_0x36cd2a['params']['id']}},_0x46122d={};_0x46122d[_0xc7d3('0x2f')]=_['keys'](db[_0xc7d3('0x26')][_0xc7d3('0x27')]);_0x46122d[_0xc7d3('0x2b')]=_[_0xc7d3('0x2c')](_0x36cd2a[_0xc7d3('0x2b')]);_0x46122d[_0xc7d3('0x2d')]=_[_0xc7d3('0x2e')](_0x46122d[_0xc7d3('0x2f')],_0x46122d[_0xc7d3('0x2b')]);_0x126d94[_0xc7d3('0x3e')]=_[_0xc7d3('0x2e')](_0x46122d[_0xc7d3('0x2f')],qs['fields'](_0x36cd2a[_0xc7d3('0x2b')][_0xc7d3('0x3f')]));_0x126d94[_0xc7d3('0x3e')]=_0x126d94[_0xc7d3('0x3e')][_0xc7d3('0x4e')]?_0x126d94['attributes']:_0x46122d[_0xc7d3('0x2f')];if(_0x36cd2a[_0xc7d3('0x2b')]['includeAll']){_0x126d94['include']=[{'all':!![]}];}_0x126d94=_[_0xc7d3('0x46')]({},_0x126d94,_0x36cd2a[_0xc7d3('0x48')]);return db['CmHopper'][_0xc7d3('0x4f')](_0x126d94)['then'](handleEntityNotFound(_0x240836,null))['then'](respondWithResult(_0x240836,null))[_0xc7d3('0x4c')](handleError(_0x240836,null));};exports['create']=function(_0x4e42d4,_0x43f997){return db[_0xc7d3('0x26')]['create'](_0x4e42d4['body'],{})['then'](respondWithResult(_0x43f997,0xc9))[_0xc7d3('0x4c')](handleError(_0x43f997,null));};exports[_0xc7d3('0x22')]=function(_0x102254,_0x8fe9b0){if(_0x102254['body']['id']){delete _0x102254[_0xc7d3('0x50')]['id'];}return db[_0xc7d3('0x26')][_0xc7d3('0x4f')]({'where':{'id':_0x102254[_0xc7d3('0x51')]['id']}})[_0xc7d3('0x49')](handleEntityNotFound(_0x8fe9b0,null))[_0xc7d3('0x49')](saveUpdates(_0x102254[_0xc7d3('0x50')],null))[_0xc7d3('0x49')](respondWithResult(_0x8fe9b0,null))['catch'](handleError(_0x8fe9b0,null));};exports[_0xc7d3('0x52')]=function(_0x381ed4,_0x48d105){return db[_0xc7d3('0x26')][_0xc7d3('0x52')]()[_0xc7d3('0x49')](respondWithResult(_0x48d105,null))['catch'](handleError(_0x48d105,null));};exports[_0xc7d3('0x23')]=function(_0x223aa1,_0x20184b){var _0x4cb5ae;return db[_0xc7d3('0x26')]['find']({'where':{'id':_0x223aa1[_0xc7d3('0x51')]['id']}})[_0xc7d3('0x49')](handleEntityNotFound(_0x20184b,null))['then'](function(_0x2d5c5d){if(_0x2d5c5d){return _0x2d5c5d[_0xc7d3('0x23')]()[_0xc7d3('0x49')](function(_0x5c1dad){return _0x5c1dad;});}})[_0xc7d3('0x49')](function(_0xf1dc7d){_0x4cb5ae=_0xf1dc7d;if(_0xf1dc7d){if(_0xf1dc7d[_0xc7d3('0x53')]||_0xf1dc7d['CampaignId']){return db[_0xf1dc7d[_0xc7d3('0x53')]?_0xc7d3('0x54'):_0xc7d3('0x55')][_0xc7d3('0x4f')]({'where':{'id':_0xf1dc7d[_0xc7d3('0x53')]?_0xf1dc7d[_0xc7d3('0x53')]:_0xf1dc7d[_0xc7d3('0x56')]},'attributes':['id',_0xc7d3('0x24')],'raw':!![]});}}})[_0xc7d3('0x49')](function(_0x452eda){var _0x321671={};if(_0x452eda){_[_0xc7d3('0x46')](_0x321671,_['omit'](_0x4cb5ae[_0xc7d3('0x57')],[_0xc7d3('0x58'),_0xc7d3('0x59'),'id']));_0x321671[_0xc7d3('0x5a')]=0x15;_0x321671[_0xc7d3('0x5b')]=_0xc7d3('0x5c');_0x321671['campaign']=_0x452eda['name'];_0x321671[_0xc7d3('0x5d')]=_0x223aa1[_0xc7d3('0x5e')]['name'];_0x321671['UserId']=_0x223aa1[_0xc7d3('0x5e')]['id'];_0x321671[_0xc7d3('0x5c')]=!![];_0x321671[_0xc7d3('0x5f')]=moment()['format'](_0xc7d3('0x60'));_0x321671[_0xc7d3('0x61')]=_0x4cb5ae[_0xc7d3('0x62')];_0x321671[_0xc7d3('0x63')]=_0x4cb5ae[_0xc7d3('0x53')]?_0xc7d3('0x64'):_0xc7d3('0x65');return db[_0xc7d3('0x66')]['find']({'where':{'id':_0x321671['ContactId']},'attributes':[_0xc7d3('0x67'),_0xc7d3('0x68')]})[_0xc7d3('0x49')](function(_0x4b4e07){if(!_['isNil'](_0x20184b)&&!_[_0xc7d3('0x69')](_0x4b4e07[_0xc7d3('0x67')])){_0x321671['calleridname']=_0x4b4e07['firstName'];if(!_[_0xc7d3('0x69')](_0x4b4e07['lastName'])){_0x321671[_0xc7d3('0x6a')]+='\x20'+_0x4b4e07[_0xc7d3('0x68')];}}})[_0xc7d3('0x6b')](function(){return db[_0xc7d3('0x6c')][_0xc7d3('0x6d')](_0x321671);});}})['then'](function(){return _0x20184b['status'](0xcc)[_0xc7d3('0x1a')]();})[_0xc7d3('0x4c')](handleError(_0x20184b,null));};exports['getPreview']=function(_0x5c4711,_0x37dc18,_0x522155){var _0x369501=[];return db[_0xc7d3('0x66')]['describe']()[_0xc7d3('0x49')](function(_0x29cc36){_0x369501=_[_0xc7d3('0x2c')](_0x29cc36);return _0x5c4711['user'][_0xc7d3('0x6e')]({'where':{'type':_0xc7d3('0x6f'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0xc7d3('0x49')](function(_0x58fdfe){if(_0x58fdfe&&_0x58fdfe[_0xc7d3('0x4e')]){return db[_0xc7d3('0x70')][_0xc7d3('0x71')](function(_0x5c09b1){var _0x511d12={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xc7d3('0x60'))},'VoiceQueueId':{'$in':_[_0xc7d3('0x25')](_0x58fdfe,'id')},'$or':[{'UserId':null},{'UserId':_0x5c4711['user']['id']}]};var _0x1672c7=[];if(_0x5c4711[_0xc7d3('0x50')][_0xc7d3('0x72')]&&_0x5c4711[_0xc7d3('0x50')]['direction']==='prev'){if(!_['isEmpty'](_0x5c4711[_0xc7d3('0x50')]['hopperIds'])){_0x511d12['id']={'$in':_0x5c4711[_0xc7d3('0x50')][_0xc7d3('0x73')]};}_0x1672c7=[[_0xc7d3('0x74'),_0xc7d3('0x75')],[_0xc7d3('0x76'),_0x58fdfe[0x0][_0xc7d3('0x77')]==='ASC'?_0xc7d3('0x78'):'ASC'],db[_0xc7d3('0x70')]['literal'](_0xc7d3('0x79')),['id',_0xc7d3('0x78')]];}else{if(!_[_0xc7d3('0x7a')](_0x5c4711[_0xc7d3('0x50')]['hopperIds'])){_0x511d12['id']={'$notIn':_0x5c4711[_0xc7d3('0x50')][_0xc7d3('0x73')]};}_0x1672c7=[[_0xc7d3('0x74'),_0xc7d3('0x78')],[_0xc7d3('0x76'),_0x58fdfe[0x0]['dialOrderByScheduledAt']],db[_0xc7d3('0x70')][_0xc7d3('0x7b')](_0xc7d3('0x7c')),['id',_0xc7d3('0x75')]];}return db['CmHopper'][_0xc7d3('0x7d')]({'attributes':['id',_0xc7d3('0x7e')],'where':_0x511d12,'order':_0x1672c7,'transaction':_0x5c09b1,'lock':_0x5c09b1[_0xc7d3('0x7f')]['UPDATE'],'include':[{'model':db[_0xc7d3('0x66')],'as':_0xc7d3('0x80'),'attributes':_0x369501,'include':[{'model':db[_0xc7d3('0x81')],'as':_0xc7d3('0x82'),'attributes':['id','name']}]},{'model':db[_0xc7d3('0x83')],'as':_0xc7d3('0x84'),'attributes':['id',_0xc7d3('0x24')]},{'model':db['VoiceQueue'],'as':_0xc7d3('0x85'),'attributes':['id',_0xc7d3('0x24'),_0xc7d3('0x86')]}]})[_0xc7d3('0x49')](function(_0x1ee8e3){if(_0x1ee8e3){return _0x1ee8e3[_0xc7d3('0x22')]({'UserId':_0x5c4711[_0xc7d3('0x5e')]['id']},{'transaction':_0x5c09b1});}});});}})['then'](handleEntityNotFound(_0x37dc18,null))['then'](respondWithResult(_0x37dc18,null))[_0xc7d3('0x4c')](handleError(_0x37dc18,null));};exports[_0xc7d3('0x87')]=function(_0x16246e,_0x1c93c5,_0x37b5eb){return _0x16246e['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xc7d3('0x88')},'attributes':['id'],'raw':!![]})['then'](function(_0x52984c){if(_0x52984c&&_0x52984c['length']){return db[_0xc7d3('0x26')][_0xc7d3('0x1c')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xc7d3('0x89')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xc7d3('0x25')](_0x52984c,'id')},'$or':[{'UserId':null},{'UserId':_0x16246e[_0xc7d3('0x5e')]['id']}]}});}return 0x0;})[_0xc7d3('0x49')](function(_0x4c9c5a){if(!_[_0xc7d3('0x69')](_0x4c9c5a)&&_[_0xc7d3('0x8a')](_0x4c9c5a)){return _0x1c93c5[_0xc7d3('0x19')](0xc8)['json']({'contacts':_0x4c9c5a});}else{logger[_0xc7d3('0x8b')](_0xc7d3('0x8c'),_0xc7d3('0x87'),0x194,_0xc7d3('0x8d'));_0x1c93c5['sendStatus'](0x194);}})[_0xc7d3('0x4c')](handleError(_0x1c93c5,null));};exports[_0xc7d3('0x8e')]=function(_0x537b6f,_0x4ff85b,_0x397f9b){var _0x242c05=shared[_0xc7d3('0x8f')];var _0x36e9c6=[];_[_0xc7d3('0x25')](_0x242c05,function(_0x194743){_0x36e9c6[_0xc7d3('0x90')]({'id':_0x194743['name'],'name':_0x194743[_0xc7d3('0x24')],'utcOffset':_0x194743[_0xc7d3('0x91')]});});return _0x4ff85b['status'](0xc8)[_0xc7d3('0x1b')]({'tz':_0x36e9c6});};exports['getTimezone']=function(_0x507948,_0x298d7a,_0x2483d1){var _0x5b317f=shared[_0xc7d3('0x8f')];var _0x4ef6ec={};if(!_[_0xc7d3('0x69')](_0x5b317f[_0x507948[_0xc7d3('0x50')]['id']]))_0x4ef6ec=_0x5b317f[_0x507948[_0xc7d3('0x50')]['id']];return _0x298d7a['status'](0xc8)[_0xc7d3('0x1b')](_0x4ef6ec);};