be87f911adf30d1d365fdd36f9f7a087b9c71828
[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 _0x3435=['api','../../config/environment','json','offset','undefined','limit','count','status','set','Content-Range','update','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','concat','$or','$gt','$lt','$lte','$ne','$between','$in','$like','$notILike','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','show','params','intersection','find','catch','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','state','deleted','user','UserId','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperAdditionalPhone','end','getPreview','CmContact','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','hopperIds','ASC','DESC','isEmpty','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','getPreviewRecall','recallme','UPDATE','List','Queue','dialActive','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x3435,0xfa));var _0x5343=function(_0x3430aa,_0x57cd92){_0x3430aa=_0x3430aa-0x0;var _0x2ac5c=_0x3435[_0x3430aa];return _0x2ac5c;};'use strict';var moment=require(_0x5343('0x0'));var _=require(_0x5343('0x1'));var qs=require(_0x5343('0x2'));var logger=require(_0x5343('0x3'))(_0x5343('0x4'));var shared=require(_0x5343('0x5'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x3f1d67,_0x3ae07e){_0x3ae07e=_0x3ae07e||0xc8;return function(_0x578a24){if(_0x578a24){return _0x3f1d67['status'](_0x3ae07e)[_0x5343('0x6')](_0x578a24);}};}function respondWithFilteredResult(_0x28f0f3,_0x4d26b5){return function(_0x544b29){if(_0x544b29){var _0x13641f=typeof _0x4d26b5[_0x5343('0x7')]===_0x5343('0x8')&&typeof _0x4d26b5[_0x5343('0x9')]===_0x5343('0x8');var _0x5e1147=_0x544b29[_0x5343('0xa')];var _0x50d857=_0x13641f?0x0:_0x4d26b5[_0x5343('0x7')];var _0x328e54=_0x13641f?_0x544b29[_0x5343('0xa')]:_0x4d26b5[_0x5343('0x7')]+_0x4d26b5[_0x5343('0x9')];var _0x4ef57c;if(_0x328e54>=_0x5e1147){_0x328e54=_0x5e1147;_0x4ef57c=0xc8;}else{_0x4ef57c=0xce;}_0x28f0f3[_0x5343('0xb')](_0x4ef57c);return _0x28f0f3[_0x5343('0xc')](_0x5343('0xd'),_0x50d857+'-'+_0x328e54+'/'+_0x5e1147)['json'](_0x544b29);}return null;};}function saveUpdates(_0x2ddeb7,_0x5f473f){return function(_0x82074d){if(_0x82074d){return _0x82074d[_0x5343('0xe')](_0x2ddeb7)['then'](function(_0x392797){return _0x392797;});}return null;};}function handleEntityNotFound(_0x4cdfae,_0x13066f){return function(_0x46c3d7){if(!_0x46c3d7){_0x4cdfae[_0x5343('0xf')](0x194);}return _0x46c3d7;};}function handleError(_0x65e827,_0x4dbff1){_0x4dbff1=_0x4dbff1||0x1f4;return function(_0x446e90){logger[_0x5343('0x10')](_0x446e90[_0x5343('0x11')]);if(_0x446e90[_0x5343('0x12')]){delete _0x446e90[_0x5343('0x12')];}_0x65e827[_0x5343('0xb')](_0x4dbff1)[_0x5343('0x13')](_0x446e90);};}exports[_0x5343('0x14')]=function(_0x4cf3c2,_0x432992){var _0xec1ba0={},_0x1f5098={},_0x489e1c={'count':0x0,'rows':[]};var _0x1eb3bd=_[_0x5343('0x15')](db[_0x5343('0x16')][_0x5343('0x17')],function(_0x35e68c){return{'name':_0x35e68c[_0x5343('0x18')],'type':_0x35e68c[_0x5343('0x19')][_0x5343('0x1a')]};});_0x1f5098[_0x5343('0x1b')]=_['map'](_0x1eb3bd,_0x5343('0x12'));_0x1f5098[_0x5343('0x1c')]=_[_0x5343('0x1d')](_0x4cf3c2[_0x5343('0x1c')]);_0x1f5098[_0x5343('0x1e')]=_['intersection'](_0x1f5098[_0x5343('0x1b')],_0x1f5098[_0x5343('0x1c')]);_0x1f5098[_0x5343('0x1e')]=_[_0x5343('0x1f')](_0x1f5098[_0x5343('0x1e')],['$and',_0x5343('0x20'),_0x5343('0x21'),'$gte',_0x5343('0x22'),_0x5343('0x23'),_0x5343('0x24'),'$eq','$not',_0x5343('0x25'),'$notBetween',_0x5343('0x26'),'$notIn',_0x5343('0x27'),'$notLike','$iLike',_0x5343('0x28'),_0x5343('0x27'),'$overlap','$contains',_0x5343('0x29'),'$any']);_0xec1ba0[_0x5343('0x2a')]=_['intersection'](_0x1f5098['model'],qs[_0x5343('0x2b')](_0x4cf3c2['query']['fields']));_0xec1ba0[_0x5343('0x2a')]=_0xec1ba0[_0x5343('0x2a')][_0x5343('0x2c')]?_0xec1ba0[_0x5343('0x2a')]:_0x1f5098['model'];if(!_0x4cf3c2['query'][_0x5343('0x2d')](_0x5343('0x2e'))){_0xec1ba0[_0x5343('0x9')]=qs[_0x5343('0x9')](_0x4cf3c2[_0x5343('0x1c')][_0x5343('0x9')]);_0xec1ba0[_0x5343('0x7')]=qs[_0x5343('0x7')](_0x4cf3c2[_0x5343('0x1c')][_0x5343('0x7')]);}_0xec1ba0[_0x5343('0x2f')]=qs[_0x5343('0x30')](_0x4cf3c2['query']['sort']);_0xec1ba0[_0x5343('0x31')]=qs[_0x5343('0x1e')](_['pick'](_0x4cf3c2[_0x5343('0x1c')],_0x1f5098['filters']),_0x1eb3bd);if(_0x4cf3c2[_0x5343('0x1c')][_0x5343('0x32')]){_0xec1ba0[_0x5343('0x31')]=_[_0x5343('0x33')](_0xec1ba0['where'],{'$or':_['map'](_0x1eb3bd,function(_0x3d7e4c){if(_0x3d7e4c['type']!==_0x5343('0x34')){var _0x11954b={};_0x11954b[_0x3d7e4c['name']]={'$like':'%'+_0x4cf3c2[_0x5343('0x1c')]['filter']+'%'};return _0x11954b;}})});}_0xec1ba0=_['merge']({},_0xec1ba0,_0x4cf3c2[_0x5343('0x35')]);var _0x16383f={'where':_0xec1ba0[_0x5343('0x31')]};return db[_0x5343('0x16')]['count'](_0x16383f)['then'](function(_0x5a0663){_0x489e1c['count']=_0x5a0663;if(_0x4cf3c2[_0x5343('0x1c')][_0x5343('0x36')]){_0xec1ba0[_0x5343('0x37')]=[{'all':!![]}];}return db[_0x5343('0x16')][_0x5343('0x38')](_0xec1ba0);})[_0x5343('0x39')](function(_0x3c112a){_0x489e1c['rows']=_0x3c112a;return _0x489e1c;})[_0x5343('0x39')](respondWithFilteredResult(_0x432992,_0xec1ba0))['catch'](handleError(_0x432992,null));};exports[_0x5343('0x3a')]=function(_0x3c6d7b,_0x35511b){var _0x2f004a={'raw':!![],'where':{'id':_0x3c6d7b[_0x5343('0x3b')]['id']}},_0x849368={};_0x849368[_0x5343('0x1b')]=_['keys'](db[_0x5343('0x16')]['rawAttributes']);_0x849368[_0x5343('0x1c')]=_[_0x5343('0x1d')](_0x3c6d7b[_0x5343('0x1c')]);_0x849368[_0x5343('0x1e')]=_[_0x5343('0x3c')](_0x849368[_0x5343('0x1b')],_0x849368[_0x5343('0x1c')]);_0x2f004a['attributes']=_[_0x5343('0x3c')](_0x849368[_0x5343('0x1b')],qs['fields'](_0x3c6d7b[_0x5343('0x1c')][_0x5343('0x2b')]));_0x2f004a['attributes']=_0x2f004a['attributes'][_0x5343('0x2c')]?_0x2f004a[_0x5343('0x2a')]:_0x849368[_0x5343('0x1b')];if(_0x3c6d7b['query'][_0x5343('0x36')]){_0x2f004a[_0x5343('0x37')]=[{'all':!![]}];}_0x2f004a=_[_0x5343('0x33')]({},_0x2f004a,_0x3c6d7b[_0x5343('0x35')]);return db[_0x5343('0x16')][_0x5343('0x3d')](_0x2f004a)[_0x5343('0x39')](handleEntityNotFound(_0x35511b,null))['then'](respondWithResult(_0x35511b,null))[_0x5343('0x3e')](handleError(_0x35511b,null));};exports[_0x5343('0x3f')]=function(_0x111c10,_0x117671){return db[_0x5343('0x16')][_0x5343('0x3f')](_0x111c10[_0x5343('0x40')],{})[_0x5343('0x39')](respondWithResult(_0x117671,0xc9))[_0x5343('0x3e')](handleError(_0x117671,null));};exports[_0x5343('0xe')]=function(_0xd4e75,_0x15cca4){if(_0xd4e75[_0x5343('0x40')]['id']){delete _0xd4e75[_0x5343('0x40')]['id'];}return db[_0x5343('0x16')]['find']({'where':{'id':_0xd4e75[_0x5343('0x3b')]['id']}})[_0x5343('0x39')](handleEntityNotFound(_0x15cca4,null))['then'](saveUpdates(_0xd4e75[_0x5343('0x40')],null))[_0x5343('0x39')](respondWithResult(_0x15cca4,null))[_0x5343('0x3e')](handleError(_0x15cca4,null));};exports[_0x5343('0x41')]=function(_0x194316,_0x5bf69c){return db[_0x5343('0x16')]['describe']()['then'](respondWithResult(_0x5bf69c,null))[_0x5343('0x3e')](handleError(_0x5bf69c,null));};exports[_0x5343('0x42')]=function(_0x10329c,_0x1cd4ed){var _0x4bc427;var _0x15c77b=_0x10329c[_0x5343('0x3b')]['id'];return db[_0x5343('0x16')][_0x5343('0x3d')]({'where':{'id':_0x10329c[_0x5343('0x3b')]['id']}})[_0x5343('0x39')](handleEntityNotFound(_0x1cd4ed,null))[_0x5343('0x39')](function(_0x39aee1){if(_0x39aee1){return _0x39aee1[_0x5343('0x42')]()[_0x5343('0x39')](function(_0x566d71){return _0x566d71;});}})[_0x5343('0x39')](function(_0x2184e9){_0x4bc427=_0x2184e9;if(_0x2184e9){if(_0x2184e9[_0x5343('0x43')]||_0x2184e9[_0x5343('0x44')]){return db[_0x2184e9[_0x5343('0x43')]?_0x5343('0x45'):_0x5343('0x46')][_0x5343('0x3d')]({'where':{'id':_0x2184e9[_0x5343('0x43')]?_0x2184e9[_0x5343('0x43')]:_0x2184e9['CampaignId']},'attributes':['id',_0x5343('0x12')],'raw':!![]});}}})['then'](function(_0x50cd81){var _0x32f2bf={};if(_0x50cd81){_[_0x5343('0x33')](_0x32f2bf,_[_0x5343('0x47')](_0x4bc427[_0x5343('0x48')],[_0x5343('0x49'),'updatedAt','id']));_0x32f2bf[_0x5343('0x4a')]=0x15;_0x32f2bf['statedesc']=_0x5343('0x4b');_0x32f2bf['campaign']=_0x50cd81[_0x5343('0x12')];_0x32f2bf['membername']=_0x10329c[_0x5343('0x4c')][_0x5343('0x12')];_0x32f2bf[_0x5343('0x4d')]=_0x10329c[_0x5343('0x4c')]['id'];_0x32f2bf[_0x5343('0x4b')]=!![];_0x32f2bf['deletedat']=moment()[_0x5343('0x4e')](_0x5343('0x4f'));_0x32f2bf[_0x5343('0x50')]=_0x4bc427[_0x5343('0x51')];_0x32f2bf[_0x5343('0x52')]=_0x4bc427['VoiceQueueId']?'queue':_0x5343('0x53');return db['CmContact'][_0x5343('0x3d')]({'where':{'id':_0x32f2bf[_0x5343('0x54')]},'attributes':[_0x5343('0x55'),_0x5343('0x56')]})[_0x5343('0x39')](function(_0x434867){if(!_[_0x5343('0x57')](_0x1cd4ed)&&!_['isNil'](_0x434867[_0x5343('0x55')])){_0x32f2bf[_0x5343('0x58')]=_0x434867['firstName'];if(!_[_0x5343('0x57')](_0x434867['lastName'])){_0x32f2bf[_0x5343('0x58')]+='\x20'+_0x434867['lastName'];}}})[_0x5343('0x59')](function(){return db['CmHopperFinal'][_0x5343('0x3f')](_0x32f2bf);});}})[_0x5343('0x39')](function(_0x44d173){return db[_0x5343('0x5a')][_0x5343('0x42')]({'where':{'CmHopperId':_0x15c77b}});})[_0x5343('0x39')](function(){return _0x1cd4ed['status'](0xcc)[_0x5343('0x5b')]();})[_0x5343('0x3e')](handleError(_0x1cd4ed,null));};exports[_0x5343('0x5c')]=function(_0x201f20,_0x59ea40){var _0xd0ce1d=[];return db[_0x5343('0x5d')]['describe']()[_0x5343('0x39')](function(_0x25635d){_0xd0ce1d=_[_0x5343('0x1d')](_0x25635d);return _0x201f20['user'][_0x5343('0x5e')]({'where':{'type':_0x5343('0x5f'),'dialActive':!![],'dialMethod':_0x5343('0x60')},'attributes':['id',_0x5343('0x61'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x5343('0x39')](function(_0x60fffb){if(_0x60fffb&&_0x60fffb[_0x5343('0x2c')]){return db[_0x5343('0x62')][_0x5343('0x63')](function(_0x49b347){var _0x52c679={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x5343('0x4e')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x60fffb,'id')},'$or':[{'UserId':null},{'UserId':_0x201f20[_0x5343('0x4c')]['id']}]};var _0x368201={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x60fffb)[_0x5343('0x32')](['dialPreviewAutoRecallMe',0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x201f20[_0x5343('0x4c')]['id']}]};var _0x1a2096={'$or':[_0x52c679,_0x368201]};var _0x1c8bae=[];if(_0x201f20[_0x5343('0x40')][_0x5343('0x64')]&&_0x201f20[_0x5343('0x40')][_0x5343('0x64')]===_0x5343('0x65')){if(!_['isEmpty'](_0x201f20['body']['hopperIds'])){_0x1a2096['id']={'$in':_0x201f20[_0x5343('0x40')][_0x5343('0x66')]};}_0x1c8bae=[['priority',_0x5343('0x67')],['scheduledAt',_0x60fffb[0x0][_0x5343('0x61')]===_0x5343('0x67')?_0x5343('0x68'):_0x5343('0x67')],db[_0x5343('0x62')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x5343('0x69')](_0x201f20[_0x5343('0x40')][_0x5343('0x66')])){_0x1a2096['id']={'$notIn':_0x201f20[_0x5343('0x40')][_0x5343('0x66')]};}_0x1c8bae=[['priority',_0x5343('0x68')],['scheduledAt',_0x60fffb[0x0]['dialOrderByScheduledAt']],db[_0x5343('0x62')][_0x5343('0x6a')](_0x5343('0x6b')),['id',_0x5343('0x67')]];}return db[_0x5343('0x16')][_0x5343('0x6c')]({'attributes':['id',_0x5343('0x6d'),_0x5343('0x51'),'recallme'],'where':_0x1a2096,'order':_0x1c8bae,'transaction':_0x49b347,'lock':_0x49b347[_0x5343('0x6e')]['UPDATE'],'include':[{'model':db[_0x5343('0x5d')],'as':_0x5343('0x6f'),'attributes':_0xd0ce1d,'include':[{'model':db[_0x5343('0x70')],'as':_0x5343('0x71'),'attributes':['id',_0x5343('0x12')]}]},{'model':db[_0x5343('0x72')],'as':'List','attributes':['id','name']},{'model':db[_0x5343('0x45')],'as':'Queue','attributes':['id','name','dialActive']}]})['then'](function(_0x35af3b){if(_0x35af3b){return _0x35af3b[_0x5343('0xe')]({'UserId':_0x201f20[_0x5343('0x4c')]['id']},{'transaction':_0x49b347});}});});}})[_0x5343('0x39')](handleEntityNotFound(_0x59ea40,null))[_0x5343('0x39')](respondWithResult(_0x59ea40,null))[_0x5343('0x3e')](handleError(_0x59ea40,null));};exports[_0x5343('0x73')]=function(_0x16c13e,_0x1f86a0,_0x2c5f5f){var _0x5a450a=[];var _0x5f55ae=_0x16c13e[_0x5343('0x3b')]['id'];var _0x3b8ed1=_0x16c13e[_0x5343('0x4c')]['id'];return db['CmContact'][_0x5343('0x41')]()['then'](function(_0xcda1d1){_0x5a450a=_[_0x5343('0x1d')](_0xcda1d1);return db['sequelize']['transaction'](function(_0x1fa24e){const _0x57ffb2={'id':_0x5f55ae};return db['CmHopper']['findOne']({'attributes':['id',_0x5343('0x6d'),_0x5343('0x74')],'where':_0x57ffb2,'transaction':_0x1fa24e,'lock':_0x1fa24e[_0x5343('0x6e')][_0x5343('0x75')],'include':[{'model':db[_0x5343('0x5d')],'as':'Contact','attributes':_0x5a450a,'include':[{'model':db['CmCompany'],'as':_0x5343('0x71'),'attributes':['id',_0x5343('0x12')]}]},{'model':db[_0x5343('0x72')],'as':_0x5343('0x76'),'attributes':['id',_0x5343('0x12')]},{'model':db[_0x5343('0x45')],'as':_0x5343('0x77'),'attributes':['id',_0x5343('0x12'),_0x5343('0x78')]}]})[_0x5343('0x39')](function(_0x4c4ff7){if(_0x4c4ff7){return _0x4c4ff7[_0x5343('0xe')]({'UserId':_0x3b8ed1},{'transaction':_0x1fa24e});}});});})[_0x5343('0x39')](handleEntityNotFound(_0x1f86a0,null))[_0x5343('0x39')](respondWithResult(_0x1f86a0,null))[_0x5343('0x3e')](handleError(_0x1f86a0,null));};exports[_0x5343('0x79')]=function(_0x268de3,_0x1785da){return _0x268de3[_0x5343('0x4c')][_0x5343('0x5e')]({'where':{'type':_0x5343('0x5f'),'dialActive':!![],'dialMethod':_0x5343('0x60')},'attributes':['id'],'raw':!![]})[_0x5343('0x39')](function(_0x58ec51){if(_0x58ec51&&_0x58ec51[_0x5343('0x2c')]){return db[_0x5343('0x16')][_0x5343('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x5343('0x15')](_0x58ec51,'id')},'$or':[{'UserId':null},{'UserId':_0x268de3['user']['id']}]}});}return 0x0;})[_0x5343('0x39')](function(_0xfe492a){if(!_[_0x5343('0x57')](_0xfe492a)&&_['isNumber'](_0xfe492a)){return _0x1785da[_0x5343('0xb')](0xc8)['json']({'contacts':_0xfe492a});}else{logger[_0x5343('0x10')](_0x5343('0x7a'),_0x5343('0x79'),0x194,'entity\x20not\x20found');_0x1785da[_0x5343('0xf')](0x194);}})['catch'](handleError(_0x1785da,null));};exports['getTimezones']=function(_0x182455,_0x136138){var _0x4f339d=shared[_0x5343('0x7b')];var _0x579f84=[];_['map'](_0x4f339d,function(_0x553b9a){_0x579f84[_0x5343('0x7c')]({'id':_0x553b9a[_0x5343('0x12')],'name':_0x553b9a[_0x5343('0x12')],'utcOffset':_0x553b9a[_0x5343('0x7d')]});});return _0x136138[_0x5343('0xb')](0xc8)[_0x5343('0x6')]({'tz':_0x579f84});};exports[_0x5343('0x7e')]=function(_0x37d128,_0x36d9b8){var _0x36ac0b=shared[_0x5343('0x7b')];var _0xd287d2={};if(!_[_0x5343('0x57')](_0x36ac0b[_0x37d128['body']['id']]))_0xd287d2=_0x36ac0b[_0x37d128['body']['id']];return _0x36d9b8[_0x5343('0xb')](0xc8)[_0x5343('0x6')](_0xd287d2);};