0849f43e28a1a6b18b389fe9955dd63733bad2f0
[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 _0x60c2=['getTimezones','timezones','push','utcOffset','getTimezone','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','update','then','error','name','send','index','CmHopper','fieldName','key','model','map','query','keys','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','rawAttributes','options','create','catch','body','find','params','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','updatedAt','state','statedesc','deleted','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','CmHopperAdditionalPhone','end','getVoiceQueues','dialPreviewAutoRecallMe','sequelize','format','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','List','Queue','getPreviewRecall','recallme','CmCompany','dialActive','getOpenContacts','outbound','preview','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','sendStatus'];(function(_0x5c9307,_0x5b97e4){var _0x373e29=function(_0xefebbd){while(--_0xefebbd){_0x5c9307['push'](_0x5c9307['shift']());}};_0x373e29(++_0x5b97e4);}(_0x60c2,0x8f));var _0x260c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x60c2[_0x17d9e3];return _0x14192d;};'use strict';var moment=require('moment');var _=require(_0x260c('0x0'));var qs=require(_0x260c('0x1'));var logger=require(_0x260c('0x2'))(_0x260c('0x3'));var shared=require(_0x260c('0x4'));var db=require(_0x260c('0x5'))['db'];function respondWithResult(_0x4cda33,_0x309bde){_0x309bde=_0x309bde||0xc8;return function(_0x17a599){if(_0x17a599){return _0x4cda33[_0x260c('0x6')](_0x309bde)[_0x260c('0x7')](_0x17a599);}};}function respondWithFilteredResult(_0x13c7d0,_0x558b0c){return function(_0x14fab2){if(_0x14fab2){var _0x2c2cd8=typeof _0x558b0c[_0x260c('0x8')]===_0x260c('0x9')&&typeof _0x558b0c['limit']===_0x260c('0x9');var _0x3cb2c9=_0x14fab2[_0x260c('0xa')];var _0x39f98a=_0x2c2cd8?0x0:_0x558b0c[_0x260c('0x8')];var _0x1164e9=_0x2c2cd8?_0x14fab2[_0x260c('0xa')]:_0x558b0c['offset']+_0x558b0c[_0x260c('0xb')];var _0x1943ca;if(_0x1164e9>=_0x3cb2c9){_0x1164e9=_0x3cb2c9;_0x1943ca=0xc8;}else{_0x1943ca=0xce;}_0x13c7d0[_0x260c('0x6')](_0x1943ca);return _0x13c7d0['set'](_0x260c('0xc'),_0x39f98a+'-'+_0x1164e9+'/'+_0x3cb2c9)[_0x260c('0x7')](_0x14fab2);}return null;};}function saveUpdates(_0x191490,_0x5aed37){return function(_0xc44e8d){if(_0xc44e8d){return _0xc44e8d[_0x260c('0xd')](_0x191490)[_0x260c('0xe')](function(_0x280270){return _0x280270;});}return null;};}function handleEntityNotFound(_0x1d3775,_0x53df53){return function(_0x3930b6){if(!_0x3930b6){_0x1d3775['sendStatus'](0x194);}return _0x3930b6;};}function handleError(_0x44fd50,_0x5a021c){_0x5a021c=_0x5a021c||0x1f4;return function(_0x47edc1){logger[_0x260c('0xf')](_0x47edc1['stack']);if(_0x47edc1[_0x260c('0x10')]){delete _0x47edc1[_0x260c('0x10')];}_0x44fd50[_0x260c('0x6')](_0x5a021c)[_0x260c('0x11')](_0x47edc1);};}exports[_0x260c('0x12')]=function(_0x1d109d,_0x11e634){var _0x2b0872={},_0x201e59={},_0x33e14c={'count':0x0,'rows':[]};var _0x38059e=_['map'](db[_0x260c('0x13')]['rawAttributes'],function(_0xc79076){return{'name':_0xc79076[_0x260c('0x14')],'type':_0xc79076['type'][_0x260c('0x15')]};});_0x201e59[_0x260c('0x16')]=_[_0x260c('0x17')](_0x38059e,_0x260c('0x10'));_0x201e59[_0x260c('0x18')]=_[_0x260c('0x19')](_0x1d109d['query']);_0x201e59[_0x260c('0x1a')]=_[_0x260c('0x1b')](_0x201e59[_0x260c('0x16')],_0x201e59[_0x260c('0x18')]);_0x201e59['filters']=_[_0x260c('0x1c')](_0x201e59[_0x260c('0x1a')],[_0x260c('0x1d'),_0x260c('0x1e'),'$gt',_0x260c('0x1f'),_0x260c('0x20'),_0x260c('0x21'),_0x260c('0x22'),'$eq',_0x260c('0x23'),_0x260c('0x24'),'$notBetween','$in',_0x260c('0x25'),_0x260c('0x26'),_0x260c('0x27'),_0x260c('0x28'),_0x260c('0x29'),_0x260c('0x26'),'$overlap',_0x260c('0x2a'),_0x260c('0x2b'),_0x260c('0x2c')]);_0x2b0872[_0x260c('0x2d')]=_['intersection'](_0x201e59[_0x260c('0x16')],qs[_0x260c('0x2e')](_0x1d109d['query'][_0x260c('0x2e')]));_0x2b0872[_0x260c('0x2d')]=_0x2b0872[_0x260c('0x2d')][_0x260c('0x2f')]?_0x2b0872[_0x260c('0x2d')]:_0x201e59[_0x260c('0x16')];if(!_0x1d109d[_0x260c('0x18')][_0x260c('0x30')]('nolimit')){_0x2b0872[_0x260c('0xb')]=qs[_0x260c('0xb')](_0x1d109d['query'][_0x260c('0xb')]);_0x2b0872['offset']=qs['offset'](_0x1d109d['query'][_0x260c('0x8')]);}_0x2b0872[_0x260c('0x31')]=qs['sort'](_0x1d109d[_0x260c('0x18')][_0x260c('0x32')]);_0x2b0872[_0x260c('0x33')]=qs[_0x260c('0x1a')](_[_0x260c('0x34')](_0x1d109d[_0x260c('0x18')],_0x201e59['filters']),_0x38059e);if(_0x1d109d[_0x260c('0x18')][_0x260c('0x35')]){_0x2b0872[_0x260c('0x33')]=_[_0x260c('0x36')](_0x2b0872[_0x260c('0x33')],{'$or':_[_0x260c('0x17')](_0x38059e,function(_0x2ad570){if(_0x2ad570[_0x260c('0x37')]!==_0x260c('0x38')){var _0x5554a5={};_0x5554a5[_0x2ad570[_0x260c('0x10')]]={'$like':'%'+_0x1d109d['query']['filter']+'%'};return _0x5554a5;}})});}_0x2b0872=_['merge']({},_0x2b0872,_0x1d109d['options']);var _0x4e2c9f={'where':_0x2b0872['where']};return db['CmHopper'][_0x260c('0xa')](_0x4e2c9f)[_0x260c('0xe')](function(_0x12dd2b){_0x33e14c[_0x260c('0xa')]=_0x12dd2b;if(_0x1d109d['query'][_0x260c('0x39')]){_0x2b0872[_0x260c('0x3a')]=[{'all':!![]}];}return db['CmHopper'][_0x260c('0x3b')](_0x2b0872);})[_0x260c('0xe')](function(_0x342d91){_0x33e14c[_0x260c('0x3c')]=_0x342d91;return _0x33e14c;})[_0x260c('0xe')](respondWithFilteredResult(_0x11e634,_0x2b0872))['catch'](handleError(_0x11e634,null));};exports['show']=function(_0x460fd6,_0x2de67a){var _0x1de711={'raw':!![],'where':{'id':_0x460fd6['params']['id']}},_0xf04cf1={};_0xf04cf1[_0x260c('0x16')]=_[_0x260c('0x19')](db[_0x260c('0x13')][_0x260c('0x3d')]);_0xf04cf1[_0x260c('0x18')]=_[_0x260c('0x19')](_0x460fd6[_0x260c('0x18')]);_0xf04cf1[_0x260c('0x1a')]=_[_0x260c('0x1b')](_0xf04cf1[_0x260c('0x16')],_0xf04cf1[_0x260c('0x18')]);_0x1de711[_0x260c('0x2d')]=_[_0x260c('0x1b')](_0xf04cf1['model'],qs['fields'](_0x460fd6[_0x260c('0x18')][_0x260c('0x2e')]));_0x1de711[_0x260c('0x2d')]=_0x1de711['attributes'][_0x260c('0x2f')]?_0x1de711['attributes']:_0xf04cf1['model'];if(_0x460fd6[_0x260c('0x18')]['includeAll']){_0x1de711[_0x260c('0x3a')]=[{'all':!![]}];}_0x1de711=_[_0x260c('0x36')]({},_0x1de711,_0x460fd6[_0x260c('0x3e')]);return db[_0x260c('0x13')]['find'](_0x1de711)[_0x260c('0xe')](handleEntityNotFound(_0x2de67a,null))[_0x260c('0xe')](respondWithResult(_0x2de67a,null))['catch'](handleError(_0x2de67a,null));};exports[_0x260c('0x3f')]=function(_0x549cbe,_0x1b4b2b){return db[_0x260c('0x13')][_0x260c('0x3f')](_0x549cbe['body'],{})[_0x260c('0xe')](respondWithResult(_0x1b4b2b,0xc9))[_0x260c('0x40')](handleError(_0x1b4b2b,null));};exports[_0x260c('0xd')]=function(_0x11c41d,_0x2b5622){if(_0x11c41d[_0x260c('0x41')]['id']){delete _0x11c41d[_0x260c('0x41')]['id'];}return db[_0x260c('0x13')][_0x260c('0x42')]({'where':{'id':_0x11c41d[_0x260c('0x43')]['id']}})[_0x260c('0xe')](handleEntityNotFound(_0x2b5622,null))[_0x260c('0xe')](saveUpdates(_0x11c41d['body'],null))['then'](respondWithResult(_0x2b5622,null))[_0x260c('0x40')](handleError(_0x2b5622,null));};exports[_0x260c('0x44')]=function(_0x18321f,_0x43c16c){return db['CmHopper'][_0x260c('0x44')]()[_0x260c('0xe')](respondWithResult(_0x43c16c,null))[_0x260c('0x40')](handleError(_0x43c16c,null));};exports[_0x260c('0x45')]=function(_0x45175a,_0x1d0890){var _0x3dc1c3;var _0x46c85a=_0x45175a[_0x260c('0x43')]['id'];return db['CmHopper'][_0x260c('0x42')]({'where':{'id':_0x45175a[_0x260c('0x43')]['id']}})['then'](handleEntityNotFound(_0x1d0890,null))[_0x260c('0xe')](function(_0x4aa1e3){if(_0x4aa1e3){return _0x4aa1e3[_0x260c('0x45')]()['then'](function(_0x4dcdca){return _0x4dcdca;});}})[_0x260c('0xe')](function(_0x2a0a14){_0x3dc1c3=_0x2a0a14;if(_0x2a0a14){if(_0x2a0a14[_0x260c('0x46')]||_0x2a0a14[_0x260c('0x47')]){return db[_0x2a0a14[_0x260c('0x46')]?_0x260c('0x48'):_0x260c('0x49')]['find']({'where':{'id':_0x2a0a14[_0x260c('0x46')]?_0x2a0a14['VoiceQueueId']:_0x2a0a14[_0x260c('0x47')]},'attributes':['id',_0x260c('0x10')],'raw':!![]});}}})[_0x260c('0xe')](function(_0x64a688){var _0x472fc0={};if(_0x64a688){_[_0x260c('0x36')](_0x472fc0,_[_0x260c('0x4a')](_0x3dc1c3[_0x260c('0x4b')],['createdAt',_0x260c('0x4c'),'id']));_0x472fc0[_0x260c('0x4d')]=0x15;_0x472fc0[_0x260c('0x4e')]=_0x260c('0x4f');_0x472fc0['campaign']=_0x64a688[_0x260c('0x10')];_0x472fc0['membername']=_0x45175a[_0x260c('0x50')]['name'];_0x472fc0['UserId']=_0x45175a[_0x260c('0x50')]['id'];_0x472fc0['deleted']=!![];_0x472fc0[_0x260c('0x51')]=moment()['format'](_0x260c('0x52'));_0x472fc0[_0x260c('0x53')]=_0x3dc1c3[_0x260c('0x54')];_0x472fc0[_0x260c('0x55')]=_0x3dc1c3[_0x260c('0x46')]?_0x260c('0x56'):_0x260c('0x57');return db[_0x260c('0x58')][_0x260c('0x42')]({'where':{'id':_0x472fc0[_0x260c('0x59')]},'attributes':['firstName','lastName']})['then'](function(_0x56a482){if(!_[_0x260c('0x5a')](_0x1d0890)&&!_[_0x260c('0x5a')](_0x56a482[_0x260c('0x5b')])){_0x472fc0[_0x260c('0x5c')]=_0x56a482[_0x260c('0x5b')];if(!_[_0x260c('0x5a')](_0x56a482[_0x260c('0x5d')])){_0x472fc0['calleridname']+='\x20'+_0x56a482[_0x260c('0x5d')];}}})[_0x260c('0x5e')](function(){return db['CmHopperFinal'][_0x260c('0x3f')](_0x472fc0);});}})[_0x260c('0xe')](function(_0x26d6ee){return db[_0x260c('0x5f')][_0x260c('0x45')]({'where':{'CmHopperId':_0x46c85a}});})[_0x260c('0xe')](function(){return _0x1d0890[_0x260c('0x6')](0xcc)[_0x260c('0x60')]();})[_0x260c('0x40')](handleError(_0x1d0890,null));};exports['getPreview']=function(_0x2052bb,_0x597980){var _0x2d9c8a=[];return db[_0x260c('0x58')][_0x260c('0x44')]()[_0x260c('0xe')](function(_0x151285){_0x2d9c8a=_[_0x260c('0x19')](_0x151285);return _0x2052bb[_0x260c('0x50')][_0x260c('0x61')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt',_0x260c('0x62')],'raw':!![]});})[_0x260c('0xe')](function(_0x332a89){if(_0x332a89&&_0x332a89[_0x260c('0x2f')]){return db[_0x260c('0x63')]['transaction'](function(_0x5c1952){var _0xb087a8={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x260c('0x64')](_0x260c('0x52'))},'VoiceQueueId':{'$in':_[_0x260c('0x17')](_0x332a89,'id')},'$or':[{'UserId':null},{'UserId':_0x2052bb[_0x260c('0x50')]['id']}]};var _0x2d7c12={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x332a89)['filter']([_0x260c('0x62'),0x0])['map']('id')[_0x260c('0x65')]()},'$or':[{'UserId':null},{'UserId':_0x2052bb[_0x260c('0x50')]['id']}]};var _0x366a2b={'$or':[_0xb087a8,_0x2d7c12]};var _0x116d3e=[];if(_0x2052bb[_0x260c('0x41')][_0x260c('0x66')]&&_0x2052bb[_0x260c('0x41')][_0x260c('0x66')]===_0x260c('0x67')){if(!_[_0x260c('0x68')](_0x2052bb[_0x260c('0x41')]['hopperIds'])){_0x366a2b['id']={'$in':_0x2052bb[_0x260c('0x41')][_0x260c('0x69')]};}_0x116d3e=[[_0x260c('0x6a'),_0x260c('0x6b')],[_0x260c('0x6c'),_0x332a89[0x0][_0x260c('0x6d')]===_0x260c('0x6b')?_0x260c('0x6e'):_0x260c('0x6b')],db[_0x260c('0x63')][_0x260c('0x6f')](_0x260c('0x70')),['id','DESC']];}else{if(!_[_0x260c('0x68')](_0x2052bb[_0x260c('0x41')]['hopperIds'])){_0x366a2b['id']={'$notIn':_0x2052bb[_0x260c('0x41')][_0x260c('0x69')]};}_0x116d3e=[['priority',_0x260c('0x6e')],[_0x260c('0x6c'),_0x332a89[0x0]['dialOrderByScheduledAt']],db[_0x260c('0x63')][_0x260c('0x6f')](_0x260c('0x71')),['id','ASC']];}return db['CmHopper'][_0x260c('0x72')]({'attributes':['id',_0x260c('0x73'),_0x260c('0x54'),'recallme'],'where':_0x366a2b,'order':_0x116d3e,'transaction':_0x5c1952,'lock':_0x5c1952[_0x260c('0x74')][_0x260c('0x75')],'include':[{'model':db['CmContact'],'as':_0x260c('0x76'),'attributes':_0x2d9c8a,'include':[{'model':db['CmCompany'],'as':_0x260c('0x77'),'attributes':['id',_0x260c('0x10')]}]},{'model':db[_0x260c('0x78')],'as':_0x260c('0x79'),'attributes':['id','name']},{'model':db[_0x260c('0x48')],'as':_0x260c('0x7a'),'attributes':['id',_0x260c('0x10'),'dialActive']}]})[_0x260c('0xe')](function(_0x2d0255){if(_0x2d0255){return _0x2d0255[_0x260c('0xd')]({'UserId':_0x2052bb['user']['id']},{'transaction':_0x5c1952});}});});}})[_0x260c('0xe')](handleEntityNotFound(_0x597980,null))[_0x260c('0xe')](respondWithResult(_0x597980,null))['catch'](handleError(_0x597980,null));};exports[_0x260c('0x7b')]=function(_0x22067f,_0x29ebcd,_0x5ae38c){var _0x3f376e=[];var _0x124ea2=_0x22067f[_0x260c('0x43')]['id'];var _0x3006b6=_0x22067f[_0x260c('0x50')]['id'];return db[_0x260c('0x58')][_0x260c('0x44')]()[_0x260c('0xe')](function(_0x1f83b8){_0x3f376e=_[_0x260c('0x19')](_0x1f83b8);return db[_0x260c('0x63')]['transaction'](function(_0x70ab16){const _0xd3bbad={'id':_0x124ea2};return db[_0x260c('0x13')][_0x260c('0x72')]({'attributes':['id','scheduledat',_0x260c('0x7c')],'where':_0xd3bbad,'transaction':_0x70ab16,'lock':_0x70ab16[_0x260c('0x74')][_0x260c('0x75')],'include':[{'model':db[_0x260c('0x58')],'as':_0x260c('0x76'),'attributes':_0x3f376e,'include':[{'model':db[_0x260c('0x7d')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':_0x260c('0x79'),'attributes':['id','name']},{'model':db[_0x260c('0x48')],'as':_0x260c('0x7a'),'attributes':['id',_0x260c('0x10'),_0x260c('0x7e')]}]})[_0x260c('0xe')](function(_0x59d4d8){if(_0x59d4d8){return _0x59d4d8[_0x260c('0xd')]({'UserId':_0x3006b6},{'transaction':_0x70ab16});}});});})[_0x260c('0xe')](handleEntityNotFound(_0x29ebcd,null))[_0x260c('0xe')](respondWithResult(_0x29ebcd,null))[_0x260c('0x40')](handleError(_0x29ebcd,null));};exports[_0x260c('0x7f')]=function(_0x4d5d6c,_0x4a9f88){return _0x4d5d6c[_0x260c('0x50')]['getVoiceQueues']({'where':{'type':_0x260c('0x80'),'dialActive':!![],'dialMethod':_0x260c('0x81')},'attributes':['id'],'raw':!![]})['then'](function(_0x2a069b){if(_0x2a069b&&_0x2a069b[_0x260c('0x2f')]){return db[_0x260c('0x13')][_0x260c('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x260c('0x64')](_0x260c('0x52'))},'VoiceQueueId':{'$in':_[_0x260c('0x17')](_0x2a069b,'id')},'$or':[{'UserId':null},{'UserId':_0x4d5d6c[_0x260c('0x50')]['id']}]}});}return 0x0;})[_0x260c('0xe')](function(_0x4bb97e){if(!_[_0x260c('0x5a')](_0x4bb97e)&&_['isNumber'](_0x4bb97e)){return _0x4a9f88[_0x260c('0x6')](0xc8)[_0x260c('0x7')]({'contacts':_0x4bb97e});}else{logger['error'](_0x260c('0x82'),_0x260c('0x7f'),0x194,_0x260c('0x83'));_0x4a9f88[_0x260c('0x84')](0x194);}})[_0x260c('0x40')](handleError(_0x4a9f88,null));};exports[_0x260c('0x85')]=function(_0x1cf31d,_0x11823c){var _0x3b7188=shared[_0x260c('0x86')];var _0x47b2fd=[];_[_0x260c('0x17')](_0x3b7188,function(_0x91f974){_0x47b2fd[_0x260c('0x87')]({'id':_0x91f974[_0x260c('0x10')],'name':_0x91f974['name'],'utcOffset':_0x91f974[_0x260c('0x88')]});});return _0x11823c['status'](0xc8)[_0x260c('0x7')]({'tz':_0x47b2fd});};exports[_0x260c('0x89')]=function(_0x475720,_0x4b2dcc){var _0x29a535=shared[_0x260c('0x86')];var _0x3a36ba={};if(!_[_0x260c('0x5a')](_0x29a535[_0x475720[_0x260c('0x41')]['id']]))_0x3a36ba=_0x29a535[_0x475720['body']['id']];return _0x4b2dcc['status'](0xc8)['json'](_0x3a36ba);};