b03014fe49a08df0963e9cf60d7f3227ae899a35
[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 _0xc949=['$or','$gt','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$like','$iLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','createdAt','updatedAt','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','phone','recallme','LOCK','CmCompany','Company','CmList','List','Queue','dialActive','getPreviewRecall','Contact','getOpenContacts','CmHopper,\x20%s,\x20%s,\x20%s','sendStatus','getTimezones','timezones','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../config/environment','status','json','offset','undefined','limit','count','set','Content-Range','update','then','error','name','send','index','map','CmHopper','fieldName','key','model','query','keys','filters','intersection','concat'];(function(_0x5056c1,_0x465db0){var _0x39e19a=function(_0x41d720){while(--_0x41d720){_0x5056c1['push'](_0x5056c1['shift']());}};_0x39e19a(++_0x465db0);}(_0xc949,0x181));var _0x9c94=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xc949[_0x25bea7];return _0x175952;};'use strict';var moment=require(_0x9c94('0x0'));var _=require('lodash');var qs=require(_0x9c94('0x1'));var logger=require(_0x9c94('0x2'))(_0x9c94('0x3'));var shared=require(_0x9c94('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x11a56c,_0x231762){_0x231762=_0x231762||0xc8;return function(_0x528a17){if(_0x528a17){return _0x11a56c[_0x9c94('0x5')](_0x231762)[_0x9c94('0x6')](_0x528a17);}};}function respondWithFilteredResult(_0x46d560,_0x1357ac){return function(_0x57fcd7){if(_0x57fcd7){var _0xf373e=typeof _0x1357ac[_0x9c94('0x7')]===_0x9c94('0x8')&&typeof _0x1357ac[_0x9c94('0x9')]===_0x9c94('0x8');var _0x423e62=_0x57fcd7[_0x9c94('0xa')];var _0x454b16=_0xf373e?0x0:_0x1357ac[_0x9c94('0x7')];var _0x3287f8=_0xf373e?_0x57fcd7['count']:_0x1357ac[_0x9c94('0x7')]+_0x1357ac[_0x9c94('0x9')];var _0x14c4ae;if(_0x3287f8>=_0x423e62){_0x3287f8=_0x423e62;_0x14c4ae=0xc8;}else{_0x14c4ae=0xce;}_0x46d560[_0x9c94('0x5')](_0x14c4ae);return _0x46d560[_0x9c94('0xb')](_0x9c94('0xc'),_0x454b16+'-'+_0x3287f8+'/'+_0x423e62)[_0x9c94('0x6')](_0x57fcd7);}return null;};}function saveUpdates(_0x423adb,_0x30f64e){return function(_0x1e326f){if(_0x1e326f){return _0x1e326f[_0x9c94('0xd')](_0x423adb)[_0x9c94('0xe')](function(_0x369d70){return _0x369d70;});}return null;};}function handleEntityNotFound(_0x15c51c,_0x54d956){return function(_0x9789bc){if(!_0x9789bc){_0x15c51c['sendStatus'](0x194);}return _0x9789bc;};}function handleError(_0x3d3de5,_0x26e629){_0x26e629=_0x26e629||0x1f4;return function(_0x4f0013){logger[_0x9c94('0xf')](_0x4f0013['stack']);if(_0x4f0013['name']){delete _0x4f0013[_0x9c94('0x10')];}_0x3d3de5['status'](_0x26e629)[_0x9c94('0x11')](_0x4f0013);};}exports[_0x9c94('0x12')]=function(_0x4d9266,_0x201e04){var _0x367eed={},_0x412804={},_0x3b825e={'count':0x0,'rows':[]};var _0x16ef2c=_[_0x9c94('0x13')](db[_0x9c94('0x14')]['rawAttributes'],function(_0x2c9736){return{'name':_0x2c9736[_0x9c94('0x15')],'type':_0x2c9736['type'][_0x9c94('0x16')]};});_0x412804[_0x9c94('0x17')]=_[_0x9c94('0x13')](_0x16ef2c,_0x9c94('0x10'));_0x412804[_0x9c94('0x18')]=_[_0x9c94('0x19')](_0x4d9266[_0x9c94('0x18')]);_0x412804[_0x9c94('0x1a')]=_[_0x9c94('0x1b')](_0x412804[_0x9c94('0x17')],_0x412804[_0x9c94('0x18')]);_0x412804[_0x9c94('0x1a')]=_[_0x9c94('0x1c')](_0x412804[_0x9c94('0x1a')],['$and',_0x9c94('0x1d'),_0x9c94('0x1e'),'$gte',_0x9c94('0x1f'),_0x9c94('0x20'),_0x9c94('0x21'),_0x9c94('0x22'),_0x9c94('0x23'),'$between',_0x9c94('0x24'),_0x9c94('0x25'),'$notIn',_0x9c94('0x26'),'$notLike',_0x9c94('0x27'),_0x9c94('0x28'),_0x9c94('0x26'),_0x9c94('0x29'),_0x9c94('0x2a'),_0x9c94('0x2b'),_0x9c94('0x2c')]);_0x367eed['attributes']=_['intersection'](_0x412804[_0x9c94('0x17')],qs[_0x9c94('0x2d')](_0x4d9266[_0x9c94('0x18')]['fields']));_0x367eed[_0x9c94('0x2e')]=_0x367eed['attributes'][_0x9c94('0x2f')]?_0x367eed[_0x9c94('0x2e')]:_0x412804[_0x9c94('0x17')];if(!_0x4d9266['query']['hasOwnProperty'](_0x9c94('0x30'))){_0x367eed[_0x9c94('0x9')]=qs[_0x9c94('0x9')](_0x4d9266['query']['limit']);_0x367eed['offset']=qs['offset'](_0x4d9266[_0x9c94('0x18')]['offset']);}_0x367eed[_0x9c94('0x31')]=qs[_0x9c94('0x32')](_0x4d9266['query']['sort']);_0x367eed[_0x9c94('0x33')]=qs[_0x9c94('0x1a')](_[_0x9c94('0x34')](_0x4d9266[_0x9c94('0x18')],_0x412804[_0x9c94('0x1a')]),_0x16ef2c);if(_0x4d9266[_0x9c94('0x18')][_0x9c94('0x35')]){_0x367eed[_0x9c94('0x33')]=_[_0x9c94('0x36')](_0x367eed[_0x9c94('0x33')],{'$or':_[_0x9c94('0x13')](_0x16ef2c,function(_0x44392f){if(_0x44392f[_0x9c94('0x37')]!==_0x9c94('0x38')){var _0x3060e8={};_0x3060e8[_0x44392f[_0x9c94('0x10')]]={'$like':'%'+_0x4d9266[_0x9c94('0x18')][_0x9c94('0x35')]+'%'};return _0x3060e8;}})});}_0x367eed=_['merge']({},_0x367eed,_0x4d9266[_0x9c94('0x39')]);var _0x230685={'where':_0x367eed[_0x9c94('0x33')]};return db[_0x9c94('0x14')][_0x9c94('0xa')](_0x230685)[_0x9c94('0xe')](function(_0x13f94c){_0x3b825e['count']=_0x13f94c;if(_0x4d9266[_0x9c94('0x18')]['includeAll']){_0x367eed[_0x9c94('0x3a')]=[{'all':!![]}];}return db[_0x9c94('0x14')][_0x9c94('0x3b')](_0x367eed);})[_0x9c94('0xe')](function(_0x4b2c4e){_0x3b825e[_0x9c94('0x3c')]=_0x4b2c4e;return _0x3b825e;})['then'](respondWithFilteredResult(_0x201e04,_0x367eed))[_0x9c94('0x3d')](handleError(_0x201e04,null));};exports[_0x9c94('0x3e')]=function(_0x3912f0,_0x5e3119){var _0x21e9f7={'raw':!![],'where':{'id':_0x3912f0[_0x9c94('0x3f')]['id']}},_0x4d4dc0={};_0x4d4dc0['model']=_['keys'](db[_0x9c94('0x14')][_0x9c94('0x40')]);_0x4d4dc0[_0x9c94('0x18')]=_[_0x9c94('0x19')](_0x3912f0['query']);_0x4d4dc0[_0x9c94('0x1a')]=_[_0x9c94('0x1b')](_0x4d4dc0[_0x9c94('0x17')],_0x4d4dc0[_0x9c94('0x18')]);_0x21e9f7['attributes']=_[_0x9c94('0x1b')](_0x4d4dc0[_0x9c94('0x17')],qs['fields'](_0x3912f0[_0x9c94('0x18')][_0x9c94('0x2d')]));_0x21e9f7[_0x9c94('0x2e')]=_0x21e9f7['attributes']['length']?_0x21e9f7[_0x9c94('0x2e')]:_0x4d4dc0[_0x9c94('0x17')];if(_0x3912f0[_0x9c94('0x18')][_0x9c94('0x41')]){_0x21e9f7[_0x9c94('0x3a')]=[{'all':!![]}];}_0x21e9f7=_[_0x9c94('0x36')]({},_0x21e9f7,_0x3912f0[_0x9c94('0x39')]);return db[_0x9c94('0x14')][_0x9c94('0x42')](_0x21e9f7)[_0x9c94('0xe')](handleEntityNotFound(_0x5e3119,null))[_0x9c94('0xe')](respondWithResult(_0x5e3119,null))['catch'](handleError(_0x5e3119,null));};exports[_0x9c94('0x43')]=function(_0x5647f9,_0x4ae326){return db[_0x9c94('0x14')][_0x9c94('0x43')](_0x5647f9[_0x9c94('0x44')],{})[_0x9c94('0xe')](respondWithResult(_0x4ae326,0xc9))[_0x9c94('0x3d')](handleError(_0x4ae326,null));};exports[_0x9c94('0xd')]=function(_0x4aeabc,_0x5665d2){if(_0x4aeabc[_0x9c94('0x44')]['id']){delete _0x4aeabc[_0x9c94('0x44')]['id'];}return db[_0x9c94('0x14')]['find']({'where':{'id':_0x4aeabc[_0x9c94('0x3f')]['id']}})[_0x9c94('0xe')](handleEntityNotFound(_0x5665d2,null))['then'](saveUpdates(_0x4aeabc['body'],null))['then'](respondWithResult(_0x5665d2,null))['catch'](handleError(_0x5665d2,null));};exports[_0x9c94('0x45')]=function(_0x5362f4,_0x5ccc46){return db[_0x9c94('0x14')]['describe']()[_0x9c94('0xe')](respondWithResult(_0x5ccc46,null))[_0x9c94('0x3d')](handleError(_0x5ccc46,null));};exports[_0x9c94('0x46')]=function(_0x205f51,_0x22eaa4){var _0x5ae40c;var _0x33ccef=_0x205f51[_0x9c94('0x3f')]['id'];return db[_0x9c94('0x14')][_0x9c94('0x42')]({'where':{'id':_0x205f51[_0x9c94('0x3f')]['id']}})[_0x9c94('0xe')](handleEntityNotFound(_0x22eaa4,null))['then'](function(_0x44311e){if(_0x44311e){return _0x44311e['destroy']()[_0x9c94('0xe')](function(_0x38bb48){return _0x38bb48;});}})[_0x9c94('0xe')](function(_0x48d368){_0x5ae40c=_0x48d368;if(_0x48d368){if(_0x48d368[_0x9c94('0x47')]||_0x48d368[_0x9c94('0x48')]){return db[_0x48d368['VoiceQueueId']?_0x9c94('0x49'):'Campaign'][_0x9c94('0x42')]({'where':{'id':_0x48d368[_0x9c94('0x47')]?_0x48d368['VoiceQueueId']:_0x48d368['CampaignId']},'attributes':['id',_0x9c94('0x10')],'raw':!![]});}}})['then'](function(_0x472107){var _0x3f8448={};if(_0x472107){_[_0x9c94('0x36')](_0x3f8448,_[_0x9c94('0x4a')](_0x5ae40c['dataValues'],[_0x9c94('0x4b'),_0x9c94('0x4c'),'id']));_0x3f8448['state']=0x15;_0x3f8448['statedesc']=_0x9c94('0x4d');_0x3f8448[_0x9c94('0x4e')]=_0x472107[_0x9c94('0x10')];_0x3f8448[_0x9c94('0x4f')]=_0x205f51[_0x9c94('0x50')][_0x9c94('0x10')];_0x3f8448['UserId']=_0x205f51[_0x9c94('0x50')]['id'];_0x3f8448[_0x9c94('0x4d')]=!![];_0x3f8448[_0x9c94('0x51')]=moment()[_0x9c94('0x52')](_0x9c94('0x53'));_0x3f8448[_0x9c94('0x54')]=_0x5ae40c['phone'];_0x3f8448[_0x9c94('0x55')]=_0x5ae40c['VoiceQueueId']?_0x9c94('0x56'):_0x9c94('0x57');return db[_0x9c94('0x58')]['find']({'where':{'id':_0x3f8448[_0x9c94('0x59')]},'attributes':['firstName','lastName']})[_0x9c94('0xe')](function(_0x3b88be){if(!_['isNil'](_0x22eaa4)&&!_[_0x9c94('0x5a')](_0x3b88be[_0x9c94('0x5b')])){_0x3f8448[_0x9c94('0x5c')]=_0x3b88be[_0x9c94('0x5b')];if(!_[_0x9c94('0x5a')](_0x3b88be[_0x9c94('0x5d')])){_0x3f8448[_0x9c94('0x5c')]+='\x20'+_0x3b88be[_0x9c94('0x5d')];}}})[_0x9c94('0x5e')](function(){return db[_0x9c94('0x5f')][_0x9c94('0x43')](_0x3f8448);});}})['then'](function(_0x481a11){return db[_0x9c94('0x60')][_0x9c94('0x46')]({'where':{'CmHopperId':_0x33ccef}});})['then'](function(){return _0x22eaa4[_0x9c94('0x5')](0xcc)[_0x9c94('0x61')]();})[_0x9c94('0x3d')](handleError(_0x22eaa4,null));};exports[_0x9c94('0x62')]=function(_0x249759,_0xd5674b){var _0x4f3f89=[];return db['CmContact']['describe']()[_0x9c94('0xe')](function(_0x5c2ea2){_0x4f3f89=_['keys'](_0x5c2ea2);return _0x249759[_0x9c94('0x50')][_0x9c94('0x63')]({'where':{'type':_0x9c94('0x64'),'dialActive':!![],'dialMethod':_0x9c94('0x65')},'attributes':['id',_0x9c94('0x66'),_0x9c94('0x67')],'raw':!![]});})['then'](function(_0x2a8a97){if(_0x2a8a97&&_0x2a8a97['length']){return db[_0x9c94('0x68')][_0x9c94('0x69')](function(_0x5b4e1a){var _0x1e3e42={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9c94('0x52')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9c94('0x13')](_0x2a8a97,'id')},'$or':[{'UserId':null},{'UserId':_0x249759[_0x9c94('0x50')]['id']}]};var _0x364450={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2a8a97)[_0x9c94('0x35')](['dialPreviewAutoRecallMe',0x0])[_0x9c94('0x13')]('id')[_0x9c94('0x6a')]()},'$or':[{'UserId':null},{'UserId':_0x249759['user']['id']}]};var _0x5b68ac={'$or':[_0x1e3e42,_0x364450]};var _0xf8b2ec=[];if(_0x249759[_0x9c94('0x44')][_0x9c94('0x6b')]&&_0x249759['body']['direction']===_0x9c94('0x6c')){if(!_[_0x9c94('0x6d')](_0x249759[_0x9c94('0x44')]['hopperIds'])){_0x5b68ac['id']={'$in':_0x249759[_0x9c94('0x44')][_0x9c94('0x6e')]};}_0xf8b2ec=[[_0x9c94('0x6f'),_0x9c94('0x70')],[_0x9c94('0x71'),_0x2a8a97[0x0][_0x9c94('0x66')]==='ASC'?_0x9c94('0x72'):_0x9c94('0x70')],db[_0x9c94('0x68')][_0x9c94('0x73')](_0x9c94('0x74')),['id',_0x9c94('0x72')]];}else{if(!_[_0x9c94('0x6d')](_0x249759[_0x9c94('0x44')][_0x9c94('0x6e')])){_0x5b68ac['id']={'$notIn':_0x249759[_0x9c94('0x44')][_0x9c94('0x6e')]};}_0xf8b2ec=[['priority','DESC'],[_0x9c94('0x71'),_0x2a8a97[0x0]['dialOrderByScheduledAt']],db['sequelize']['literal'](_0x9c94('0x75')),['id',_0x9c94('0x70')]];}return db['CmHopper'][_0x9c94('0x76')]({'attributes':['id',_0x9c94('0x77'),_0x9c94('0x78'),_0x9c94('0x79')],'where':_0x5b68ac,'order':_0xf8b2ec,'transaction':_0x5b4e1a,'lock':_0x5b4e1a[_0x9c94('0x7a')]['UPDATE'],'include':[{'model':db[_0x9c94('0x58')],'as':'Contact','attributes':_0x4f3f89,'include':[{'model':db[_0x9c94('0x7b')],'as':_0x9c94('0x7c'),'attributes':['id',_0x9c94('0x10')]}]},{'model':db[_0x9c94('0x7d')],'as':_0x9c94('0x7e'),'attributes':['id',_0x9c94('0x10')]},{'model':db[_0x9c94('0x49')],'as':_0x9c94('0x7f'),'attributes':['id',_0x9c94('0x10'),_0x9c94('0x80')]}]})[_0x9c94('0xe')](function(_0x540996){if(_0x540996){return _0x540996[_0x9c94('0xd')]({'UserId':_0x249759[_0x9c94('0x50')]['id']},{'transaction':_0x5b4e1a});}});});}})[_0x9c94('0xe')](handleEntityNotFound(_0xd5674b,null))['then'](respondWithResult(_0xd5674b,null))[_0x9c94('0x3d')](handleError(_0xd5674b,null));};exports[_0x9c94('0x81')]=function(_0x324b1f,_0x18dd23,_0xc6d42c){var _0x66483b=[];var _0x13988a=_0x324b1f['params']['id'];var _0x1dcfaa=_0x324b1f[_0x9c94('0x50')]['id'];return db[_0x9c94('0x58')]['describe']()[_0x9c94('0xe')](function(_0x59ef88){_0x66483b=_[_0x9c94('0x19')](_0x59ef88);return db[_0x9c94('0x68')]['transaction'](function(_0x3fa6be){const _0x1b0eac={'id':_0x13988a};return db[_0x9c94('0x14')][_0x9c94('0x76')]({'attributes':['id',_0x9c94('0x77'),_0x9c94('0x79')],'where':_0x1b0eac,'transaction':_0x3fa6be,'lock':_0x3fa6be['LOCK']['UPDATE'],'include':[{'model':db[_0x9c94('0x58')],'as':_0x9c94('0x82'),'attributes':_0x66483b,'include':[{'model':db[_0x9c94('0x7b')],'as':'Company','attributes':['id',_0x9c94('0x10')]}]},{'model':db[_0x9c94('0x7d')],'as':_0x9c94('0x7e'),'attributes':['id','name']},{'model':db[_0x9c94('0x49')],'as':'Queue','attributes':['id','name',_0x9c94('0x80')]}]})[_0x9c94('0xe')](function(_0x48d0ea){if(_0x48d0ea){return _0x48d0ea[_0x9c94('0xd')]({'UserId':_0x1dcfaa},{'transaction':_0x3fa6be});}});});})[_0x9c94('0xe')](handleEntityNotFound(_0x18dd23,null))['then'](respondWithResult(_0x18dd23,null))[_0x9c94('0x3d')](handleError(_0x18dd23,null));};exports[_0x9c94('0x83')]=function(_0xe7fc99,_0x1bacd9){return _0xe7fc99[_0x9c94('0x50')][_0x9c94('0x63')]({'where':{'type':_0x9c94('0x64'),'dialActive':!![],'dialMethod':_0x9c94('0x65')},'attributes':['id'],'raw':!![]})[_0x9c94('0xe')](function(_0x540373){if(_0x540373&&_0x540373[_0x9c94('0x2f')]){return db[_0x9c94('0x14')][_0x9c94('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9c94('0x52')](_0x9c94('0x53'))},'VoiceQueueId':{'$in':_['map'](_0x540373,'id')},'$or':[{'UserId':null},{'UserId':_0xe7fc99[_0x9c94('0x50')]['id']}]}});}return 0x0;})['then'](function(_0x2ca6a4){if(!_[_0x9c94('0x5a')](_0x2ca6a4)&&_['isNumber'](_0x2ca6a4)){return _0x1bacd9['status'](0xc8)[_0x9c94('0x6')]({'contacts':_0x2ca6a4});}else{logger[_0x9c94('0xf')](_0x9c94('0x84'),'getOpenContacts',0x194,'entity\x20not\x20found');_0x1bacd9[_0x9c94('0x85')](0x194);}})[_0x9c94('0x3d')](handleError(_0x1bacd9,null));};exports[_0x9c94('0x86')]=function(_0x27cdde,_0x34edf2){var _0x3b7c65=shared[_0x9c94('0x87')];var _0x117e0f=[];_[_0x9c94('0x13')](_0x3b7c65,function(_0x4c9022){_0x117e0f['push']({'id':_0x4c9022['name'],'name':_0x4c9022['name'],'utcOffset':_0x4c9022[_0x9c94('0x88')]});});return _0x34edf2['status'](0xc8)[_0x9c94('0x6')]({'tz':_0x117e0f});};exports[_0x9c94('0x89')]=function(_0x22d5bc,_0x4e23c1){var _0xf55837=shared[_0x9c94('0x87')];var _0x3edf16={};if(!_['isNil'](_0xf55837[_0x22d5bc[_0x9c94('0x44')]['id']]))_0x3edf16=_0xf55837[_0x22d5bc[_0x9c94('0x44')]['id']];return _0x4e23c1[_0x9c94('0x5')](0xc8)[_0x9c94('0x6')](_0x3edf16);};