222332fb8201b5bfd3e3cdfbcc1c05840621b634
[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 _0x5fd1=['createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','format','calleridnum','campaigntype','queue','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','CmContact','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','transaction','YYYY-MM-DD\x20HH:mm:ss','dialPreviewAutoRecallMe','value','direction','isEmpty','hopperIds','priority','ASC','DESC','sequelize','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','CmCompany','Company','CmList','List','getPreviewRecall','UPDATE','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','api','json','undefined','limit','count','offset','status','set','Content-Range','update','sendStatus','error','stack','index','map','CmHopper','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','concat','$and','$or','$gt','$lt','$ne','$eq','$not','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','then','include','rows','show','params','keys','length','find','catch','create','body','describe','destroy','VoiceQueue','Campaign','VoiceQueueId','CampaignId','omit'];(function(_0x45c862,_0x130708){var _0x20beaf=function(_0x5d9bab){while(--_0x5d9bab){_0x45c862['push'](_0x45c862['shift']());}};_0x20beaf(++_0x130708);}(_0x5fd1,0x155));var _0x15fd=function(_0x2cb7ad,_0xcc7928){_0x2cb7ad=_0x2cb7ad-0x0;var _0x49054b=_0x5fd1[_0x2cb7ad];return _0x49054b;};'use strict';var moment=require(_0x15fd('0x0'));var _=require('lodash');var qs=require(_0x15fd('0x1'));var logger=require(_0x15fd('0x2'))(_0x15fd('0x3'));var shared=require('../../config/environment');var db=require('../../mysqldb')['db'];function respondWithResult(_0x370d34,_0x3138f3){_0x3138f3=_0x3138f3||0xc8;return function(_0x411b0e){if(_0x411b0e){return _0x370d34['status'](_0x3138f3)[_0x15fd('0x4')](_0x411b0e);}};}function respondWithFilteredResult(_0x386441,_0x18450c){return function(_0x2e88bf){if(_0x2e88bf){var _0x225728=typeof _0x18450c['offset']===_0x15fd('0x5')&&typeof _0x18450c[_0x15fd('0x6')]===_0x15fd('0x5');var _0x4c861f=_0x2e88bf[_0x15fd('0x7')];var _0x5c9c63=_0x225728?0x0:_0x18450c[_0x15fd('0x8')];var _0x250457=_0x225728?_0x2e88bf['count']:_0x18450c['offset']+_0x18450c['limit'];var _0x3dd2af;if(_0x250457>=_0x4c861f){_0x250457=_0x4c861f;_0x3dd2af=0xc8;}else{_0x3dd2af=0xce;}_0x386441[_0x15fd('0x9')](_0x3dd2af);return _0x386441[_0x15fd('0xa')](_0x15fd('0xb'),_0x5c9c63+'-'+_0x250457+'/'+_0x4c861f)[_0x15fd('0x4')](_0x2e88bf);}return null;};}function saveUpdates(_0x2e18ec,_0x346ab1){return function(_0x2660db){if(_0x2660db){return _0x2660db[_0x15fd('0xc')](_0x2e18ec)['then'](function(_0x5b7af0){return _0x5b7af0;});}return null;};}function handleEntityNotFound(_0x5784a3,_0x3fda60){return function(_0x135a15){if(!_0x135a15){_0x5784a3[_0x15fd('0xd')](0x194);}return _0x135a15;};}function handleError(_0x29caad,_0x44eae6){_0x44eae6=_0x44eae6||0x1f4;return function(_0x2ffa03){logger[_0x15fd('0xe')](_0x2ffa03[_0x15fd('0xf')]);if(_0x2ffa03['name']){delete _0x2ffa03['name'];}_0x29caad[_0x15fd('0x9')](_0x44eae6)['send'](_0x2ffa03);};}exports[_0x15fd('0x10')]=function(_0x579ee2,_0x917fe4){var _0x318f47={},_0x855bae={},_0x49ceac={'count':0x0,'rows':[]};var _0x367c36=_[_0x15fd('0x11')](db[_0x15fd('0x12')][_0x15fd('0x13')],function(_0x2fb919){return{'name':_0x2fb919[_0x15fd('0x14')],'type':_0x2fb919[_0x15fd('0x15')][_0x15fd('0x16')]};});_0x855bae[_0x15fd('0x17')]=_[_0x15fd('0x11')](_0x367c36,_0x15fd('0x18'));_0x855bae['query']=_['keys'](_0x579ee2[_0x15fd('0x19')]);_0x855bae[_0x15fd('0x1a')]=_[_0x15fd('0x1b')](_0x855bae[_0x15fd('0x17')],_0x855bae[_0x15fd('0x19')]);_0x855bae[_0x15fd('0x1a')]=_[_0x15fd('0x1c')](_0x855bae['filters'],[_0x15fd('0x1d'),_0x15fd('0x1e'),_0x15fd('0x1f'),'$gte',_0x15fd('0x20'),'$lte',_0x15fd('0x21'),_0x15fd('0x22'),_0x15fd('0x23'),'$between',_0x15fd('0x24'),_0x15fd('0x25'),_0x15fd('0x26'),'$like',_0x15fd('0x27'),'$iLike',_0x15fd('0x28'),_0x15fd('0x29'),_0x15fd('0x2a'),_0x15fd('0x2b'),_0x15fd('0x2c'),_0x15fd('0x2d')]);_0x318f47[_0x15fd('0x2e')]=_[_0x15fd('0x1b')](_0x855bae[_0x15fd('0x17')],qs[_0x15fd('0x2f')](_0x579ee2[_0x15fd('0x19')]['fields']));_0x318f47[_0x15fd('0x2e')]=_0x318f47[_0x15fd('0x2e')]['length']?_0x318f47[_0x15fd('0x2e')]:_0x855bae[_0x15fd('0x17')];if(!_0x579ee2['query'][_0x15fd('0x30')](_0x15fd('0x31'))){_0x318f47['limit']=qs[_0x15fd('0x6')](_0x579ee2[_0x15fd('0x19')][_0x15fd('0x6')]);_0x318f47[_0x15fd('0x8')]=qs[_0x15fd('0x8')](_0x579ee2[_0x15fd('0x19')]['offset']);}_0x318f47[_0x15fd('0x32')]=qs[_0x15fd('0x33')](_0x579ee2[_0x15fd('0x19')][_0x15fd('0x33')]);_0x318f47['where']=qs[_0x15fd('0x1a')](_[_0x15fd('0x34')](_0x579ee2[_0x15fd('0x19')],_0x855bae[_0x15fd('0x1a')]),_0x367c36);if(_0x579ee2[_0x15fd('0x19')][_0x15fd('0x35')]){_0x318f47['where']=_[_0x15fd('0x36')](_0x318f47[_0x15fd('0x37')],{'$or':_['map'](_0x367c36,function(_0x3f9aec){if(_0x3f9aec[_0x15fd('0x15')]!==_0x15fd('0x38')){var _0x5cb227={};_0x5cb227[_0x3f9aec[_0x15fd('0x18')]]={'$like':'%'+_0x579ee2[_0x15fd('0x19')][_0x15fd('0x35')]+'%'};return _0x5cb227;}})});}_0x318f47=_[_0x15fd('0x36')]({},_0x318f47,_0x579ee2[_0x15fd('0x39')]);var _0x6b2ac8={'where':_0x318f47['where']};return db['CmHopper']['count'](_0x6b2ac8)[_0x15fd('0x3a')](function(_0x289710){_0x49ceac[_0x15fd('0x7')]=_0x289710;if(_0x579ee2['query']['includeAll']){_0x318f47[_0x15fd('0x3b')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x318f47);})['then'](function(_0x2edb0d){_0x49ceac[_0x15fd('0x3c')]=_0x2edb0d;return _0x49ceac;})[_0x15fd('0x3a')](respondWithFilteredResult(_0x917fe4,_0x318f47))['catch'](handleError(_0x917fe4,null));};exports[_0x15fd('0x3d')]=function(_0x3a10e2,_0xd85d3e){var _0x5beb6e={'raw':!![],'where':{'id':_0x3a10e2[_0x15fd('0x3e')]['id']}},_0x1d693e={};_0x1d693e[_0x15fd('0x17')]=_[_0x15fd('0x3f')](db[_0x15fd('0x12')][_0x15fd('0x13')]);_0x1d693e[_0x15fd('0x19')]=_[_0x15fd('0x3f')](_0x3a10e2[_0x15fd('0x19')]);_0x1d693e['filters']=_[_0x15fd('0x1b')](_0x1d693e[_0x15fd('0x17')],_0x1d693e[_0x15fd('0x19')]);_0x5beb6e[_0x15fd('0x2e')]=_[_0x15fd('0x1b')](_0x1d693e[_0x15fd('0x17')],qs[_0x15fd('0x2f')](_0x3a10e2[_0x15fd('0x19')][_0x15fd('0x2f')]));_0x5beb6e[_0x15fd('0x2e')]=_0x5beb6e[_0x15fd('0x2e')][_0x15fd('0x40')]?_0x5beb6e[_0x15fd('0x2e')]:_0x1d693e[_0x15fd('0x17')];if(_0x3a10e2[_0x15fd('0x19')]['includeAll']){_0x5beb6e[_0x15fd('0x3b')]=[{'all':!![]}];}_0x5beb6e=_[_0x15fd('0x36')]({},_0x5beb6e,_0x3a10e2[_0x15fd('0x39')]);return db[_0x15fd('0x12')][_0x15fd('0x41')](_0x5beb6e)[_0x15fd('0x3a')](handleEntityNotFound(_0xd85d3e,null))[_0x15fd('0x3a')](respondWithResult(_0xd85d3e,null))[_0x15fd('0x42')](handleError(_0xd85d3e,null));};exports['create']=function(_0x4cd97b,_0x21f448){return db['CmHopper'][_0x15fd('0x43')](_0x4cd97b[_0x15fd('0x44')],{})['then'](respondWithResult(_0x21f448,0xc9))[_0x15fd('0x42')](handleError(_0x21f448,null));};exports[_0x15fd('0xc')]=function(_0x131eb4,_0x2611ba){if(_0x131eb4[_0x15fd('0x44')]['id']){delete _0x131eb4[_0x15fd('0x44')]['id'];}return db['CmHopper'][_0x15fd('0x41')]({'where':{'id':_0x131eb4[_0x15fd('0x3e')]['id']}})[_0x15fd('0x3a')](handleEntityNotFound(_0x2611ba,null))[_0x15fd('0x3a')](saveUpdates(_0x131eb4[_0x15fd('0x44')],null))[_0x15fd('0x3a')](respondWithResult(_0x2611ba,null))[_0x15fd('0x42')](handleError(_0x2611ba,null));};exports[_0x15fd('0x45')]=function(_0x24cb44,_0x1d3beb){return db[_0x15fd('0x12')][_0x15fd('0x45')]()['then'](respondWithResult(_0x1d3beb,null))[_0x15fd('0x42')](handleError(_0x1d3beb,null));};exports['destroy']=function(_0x284f51,_0x34c250){var _0xeb1e06;var _0x5a1f32=_0x284f51[_0x15fd('0x3e')]['id'];return db[_0x15fd('0x12')][_0x15fd('0x41')]({'where':{'id':_0x284f51[_0x15fd('0x3e')]['id']}})['then'](handleEntityNotFound(_0x34c250,null))[_0x15fd('0x3a')](function(_0x1a9605){if(_0x1a9605){return _0x1a9605[_0x15fd('0x46')]()[_0x15fd('0x3a')](function(_0x4b6827){return _0x4b6827;});}})[_0x15fd('0x3a')](function(_0x322623){_0xeb1e06=_0x322623;if(_0x322623){if(_0x322623['VoiceQueueId']||_0x322623['CampaignId']){return db[_0x322623['VoiceQueueId']?_0x15fd('0x47'):_0x15fd('0x48')][_0x15fd('0x41')]({'where':{'id':_0x322623[_0x15fd('0x49')]?_0x322623[_0x15fd('0x49')]:_0x322623[_0x15fd('0x4a')]},'attributes':['id','name'],'raw':!![]});}}})[_0x15fd('0x3a')](function(_0x22cc14){var _0xbb16ef={};if(_0x22cc14){_['merge'](_0xbb16ef,_[_0x15fd('0x4b')](_0xeb1e06['dataValues'],[_0x15fd('0x4c'),_0x15fd('0x4d'),'id']));_0xbb16ef[_0x15fd('0x4e')]=0x15;_0xbb16ef[_0x15fd('0x4f')]=_0x15fd('0x50');_0xbb16ef[_0x15fd('0x51')]=_0x22cc14[_0x15fd('0x18')];_0xbb16ef[_0x15fd('0x52')]=_0x284f51[_0x15fd('0x53')][_0x15fd('0x18')];_0xbb16ef[_0x15fd('0x54')]=_0x284f51[_0x15fd('0x53')]['id'];_0xbb16ef[_0x15fd('0x50')]=!![];_0xbb16ef['deletedat']=moment()[_0x15fd('0x55')]('YYYY-MM-DD\x20HH:mm:ss');_0xbb16ef[_0x15fd('0x56')]=_0xeb1e06['phone'];_0xbb16ef[_0x15fd('0x57')]=_0xeb1e06[_0x15fd('0x49')]?_0x15fd('0x58'):'ivr';return db['CmContact'][_0x15fd('0x41')]({'where':{'id':_0xbb16ef[_0x15fd('0x59')]},'attributes':[_0x15fd('0x5a'),_0x15fd('0x5b')]})['then'](function(_0x242c9d){if(!_[_0x15fd('0x5c')](_0x34c250)&&!_[_0x15fd('0x5c')](_0x242c9d[_0x15fd('0x5a')])){_0xbb16ef[_0x15fd('0x5d')]=_0x242c9d[_0x15fd('0x5a')];if(!_['isNil'](_0x242c9d[_0x15fd('0x5b')])){_0xbb16ef[_0x15fd('0x5d')]+='\x20'+_0x242c9d[_0x15fd('0x5b')];}}})[_0x15fd('0x5e')](function(){return db[_0x15fd('0x5f')][_0x15fd('0x43')](_0xbb16ef);});}})['then'](function(_0x4f2a17){return db[_0x15fd('0x60')][_0x15fd('0x46')]({'where':{'CmHopperId':_0x5a1f32}});})['then'](function(){return _0x34c250[_0x15fd('0x9')](0xcc)[_0x15fd('0x61')]();})['catch'](handleError(_0x34c250,null));};exports[_0x15fd('0x62')]=function(_0x4626ac,_0x24c3a0){var _0x53bfd7=[];return db[_0x15fd('0x63')][_0x15fd('0x45')]()[_0x15fd('0x3a')](function(_0x2db860){_0x53bfd7=_[_0x15fd('0x3f')](_0x2db860);return _0x4626ac[_0x15fd('0x53')][_0x15fd('0x64')]({'where':{'type':_0x15fd('0x65'),'dialActive':!![],'dialMethod':_0x15fd('0x66')},'attributes':['id',_0x15fd('0x67'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x15fd('0x3a')](function(_0x3a26c8){if(_0x3a26c8&&_0x3a26c8['length']){return db['sequelize'][_0x15fd('0x68')](function(_0x39e6ee){var _0x2bd6ef={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x15fd('0x55')](_0x15fd('0x69'))},'VoiceQueueId':{'$in':_[_0x15fd('0x11')](_0x3a26c8,'id')},'$or':[{'UserId':null},{'UserId':_0x4626ac['user']['id']}]};var _0x41d398={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x3a26c8)[_0x15fd('0x35')]([_0x15fd('0x6a'),0x0])[_0x15fd('0x11')]('id')[_0x15fd('0x6b')]()},'$or':[{'UserId':null},{'UserId':_0x4626ac[_0x15fd('0x53')]['id']}]};var _0xf27ab4={'$or':[_0x2bd6ef,_0x41d398]};var _0x1fe6cb=[];if(_0x4626ac[_0x15fd('0x44')][_0x15fd('0x6c')]&&_0x4626ac[_0x15fd('0x44')]['direction']==='prev'){if(!_[_0x15fd('0x6d')](_0x4626ac[_0x15fd('0x44')][_0x15fd('0x6e')])){_0xf27ab4['id']={'$in':_0x4626ac[_0x15fd('0x44')][_0x15fd('0x6e')]};}_0x1fe6cb=[[_0x15fd('0x6f'),_0x15fd('0x70')],['scheduledAt',_0x3a26c8[0x0][_0x15fd('0x67')]==='ASC'?_0x15fd('0x71'):'ASC'],db[_0x15fd('0x72')]['literal'](_0x15fd('0x73')),['id',_0x15fd('0x71')]];}else{if(!_[_0x15fd('0x6d')](_0x4626ac[_0x15fd('0x44')][_0x15fd('0x6e')])){_0xf27ab4['id']={'$notIn':_0x4626ac[_0x15fd('0x44')][_0x15fd('0x6e')]};}_0x1fe6cb=[[_0x15fd('0x6f'),_0x15fd('0x71')],['scheduledAt',_0x3a26c8[0x0]['dialOrderByScheduledAt']],db[_0x15fd('0x72')][_0x15fd('0x74')](_0x15fd('0x75')),['id','ASC']];}return db[_0x15fd('0x12')][_0x15fd('0x76')]({'attributes':['id',_0x15fd('0x77'),'phone',_0x15fd('0x78')],'where':_0xf27ab4,'order':_0x1fe6cb,'transaction':_0x39e6ee,'lock':_0x39e6ee[_0x15fd('0x79')]['UPDATE'],'include':[{'model':db[_0x15fd('0x63')],'as':'Contact','attributes':_0x53bfd7,'include':[{'model':db[_0x15fd('0x7a')],'as':_0x15fd('0x7b'),'attributes':['id',_0x15fd('0x18')]}]},{'model':db[_0x15fd('0x7c')],'as':_0x15fd('0x7d'),'attributes':['id','name']},{'model':db[_0x15fd('0x47')],'as':'Queue','attributes':['id',_0x15fd('0x18'),'dialActive']}]})[_0x15fd('0x3a')](function(_0x26fa9a){if(_0x26fa9a){return _0x26fa9a['update']({'UserId':_0x4626ac[_0x15fd('0x53')]['id']},{'transaction':_0x39e6ee});}});});}})[_0x15fd('0x3a')](handleEntityNotFound(_0x24c3a0,null))['then'](respondWithResult(_0x24c3a0,null))['catch'](handleError(_0x24c3a0,null));};exports[_0x15fd('0x7e')]=function(_0x5a9db1,_0x279bc1,_0x2feba1){var _0x166016=[];var _0x2121cb=_0x5a9db1[_0x15fd('0x3e')]['id'];var _0x54ab7d=_0x5a9db1[_0x15fd('0x53')]['id'];return db[_0x15fd('0x63')]['describe']()[_0x15fd('0x3a')](function(_0x3a4646){_0x166016=_[_0x15fd('0x3f')](_0x3a4646);return db[_0x15fd('0x72')][_0x15fd('0x68')](function(_0x1d529d){const _0x438ee3={'id':_0x2121cb};return db[_0x15fd('0x12')][_0x15fd('0x76')]({'attributes':['id',_0x15fd('0x77'),_0x15fd('0x78')],'where':_0x438ee3,'transaction':_0x1d529d,'lock':_0x1d529d[_0x15fd('0x79')][_0x15fd('0x7f')],'include':[{'model':db[_0x15fd('0x63')],'as':'Contact','attributes':_0x166016,'include':[{'model':db[_0x15fd('0x7a')],'as':'Company','attributes':['id',_0x15fd('0x18')]}]},{'model':db[_0x15fd('0x7c')],'as':_0x15fd('0x7d'),'attributes':['id',_0x15fd('0x18')]},{'model':db['VoiceQueue'],'as':_0x15fd('0x80'),'attributes':['id',_0x15fd('0x18'),_0x15fd('0x81')]}]})[_0x15fd('0x3a')](function(_0x4accfd){if(_0x4accfd){return _0x4accfd[_0x15fd('0xc')]({'UserId':_0x54ab7d},{'transaction':_0x1d529d});}});});})[_0x15fd('0x3a')](handleEntityNotFound(_0x279bc1,null))['then'](respondWithResult(_0x279bc1,null))[_0x15fd('0x42')](handleError(_0x279bc1,null));};exports[_0x15fd('0x82')]=function(_0x128ee3,_0x57089a){return _0x128ee3[_0x15fd('0x53')][_0x15fd('0x64')]({'where':{'type':_0x15fd('0x65'),'dialActive':!![],'dialMethod':_0x15fd('0x66')},'attributes':['id'],'raw':!![]})[_0x15fd('0x3a')](function(_0x2d24a2){if(_0x2d24a2&&_0x2d24a2[_0x15fd('0x40')]){return db[_0x15fd('0x12')][_0x15fd('0x7')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x15fd('0x55')](_0x15fd('0x69'))},'VoiceQueueId':{'$in':_[_0x15fd('0x11')](_0x2d24a2,'id')},'$or':[{'UserId':null},{'UserId':_0x128ee3['user']['id']}]}});}return 0x0;})[_0x15fd('0x3a')](function(_0x399962){if(!_[_0x15fd('0x5c')](_0x399962)&&_[_0x15fd('0x83')](_0x399962)){return _0x57089a[_0x15fd('0x9')](0xc8)['json']({'contacts':_0x399962});}else{logger['error'](_0x15fd('0x84'),_0x15fd('0x82'),0x194,_0x15fd('0x85'));_0x57089a[_0x15fd('0xd')](0x194);}})[_0x15fd('0x42')](handleError(_0x57089a,null));};exports[_0x15fd('0x86')]=function(_0xd13be0,_0x27c8b4){var _0x132613=shared['timezones'];var _0x2bea72=[];_[_0x15fd('0x11')](_0x132613,function(_0x573a5a){_0x2bea72[_0x15fd('0x87')]({'id':_0x573a5a[_0x15fd('0x18')],'name':_0x573a5a[_0x15fd('0x18')],'utcOffset':_0x573a5a[_0x15fd('0x88')]});});return _0x27c8b4['status'](0xc8)[_0x15fd('0x4')]({'tz':_0x2bea72});};exports[_0x15fd('0x89')]=function(_0x4be4bb,_0x47529c){var _0x1b5407=shared[_0x15fd('0x8a')];var _0x5e3696={};if(!_[_0x15fd('0x5c')](_0x1b5407[_0x4be4bb[_0x15fd('0x44')]['id']]))_0x5e3696=_0x1b5407[_0x4be4bb[_0x15fd('0x44')]['id']];return _0x47529c[_0x15fd('0x9')](0xc8)[_0x15fd('0x4')](_0x5e3696);};