4c35e4b436a362489763223796ccd7c7b08a8cdf
[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 _0x5089=['YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','ContactId','lastName','isNil','calleridname','firstName','CmHopperFinal','CmHopperAdditionalPhone','destroy','end','getPreview','CmContact','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','dialPreviewAutoRecallMe','value','direction','prev','isEmpty','hopperIds','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','dialActive','getPreviewRecall','Queue','getOpenContacts','isNumber','entity\x20not\x20found','sendStatus','getTimezones','push','moment','lodash','../../config/logger','api','../../config/environment','../../mysqldb','json','offset','limit','undefined','count','set','update','then','error','stack','name','status','send','index','map','type','model','query','keys','filters','concat','$and','$or','$lt','$eq','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','CmHopper','includeAll','findAll','rows','catch','params','rawAttributes','create','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','dataValues','createdAt','state','campaign','user','UserId','deleted','deletedat','format'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x5089,0x1bb));var _0x9508=function(_0x463697,_0xccfdc4){_0x463697=_0x463697-0x0;var _0x33cfe1=_0x5089[_0x463697];return _0x33cfe1;};'use strict';var moment=require(_0x9508('0x0'));var _=require(_0x9508('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x9508('0x2'))(_0x9508('0x3'));var shared=require(_0x9508('0x4'));var db=require(_0x9508('0x5'))['db'];function respondWithResult(_0x172549,_0x59d3ee){_0x59d3ee=_0x59d3ee||0xc8;return function(_0x86540d){if(_0x86540d){return _0x172549['status'](_0x59d3ee)[_0x9508('0x6')](_0x86540d);}};}function respondWithFilteredResult(_0x4538dd,_0x257318){return function(_0x4ab3c6){if(_0x4ab3c6){var _0x1dc04c=typeof _0x257318[_0x9508('0x7')]==='undefined'&&typeof _0x257318[_0x9508('0x8')]===_0x9508('0x9');var _0x4f6720=_0x4ab3c6[_0x9508('0xa')];var _0x5c9dc9=_0x1dc04c?0x0:_0x257318[_0x9508('0x7')];var _0x26cc8a=_0x1dc04c?_0x4ab3c6[_0x9508('0xa')]:_0x257318[_0x9508('0x7')]+_0x257318[_0x9508('0x8')];var _0x317f6e;if(_0x26cc8a>=_0x4f6720){_0x26cc8a=_0x4f6720;_0x317f6e=0xc8;}else{_0x317f6e=0xce;}_0x4538dd['status'](_0x317f6e);return _0x4538dd[_0x9508('0xb')]('Content-Range',_0x5c9dc9+'-'+_0x26cc8a+'/'+_0x4f6720)[_0x9508('0x6')](_0x4ab3c6);}return null;};}function saveUpdates(_0x396896,_0x554c90){return function(_0x11dc7f){if(_0x11dc7f){return _0x11dc7f[_0x9508('0xc')](_0x396896)[_0x9508('0xd')](function(_0x4701de){return _0x4701de;});}return null;};}function handleEntityNotFound(_0x51ef92,_0x440709){return function(_0x21b2d1){if(!_0x21b2d1){_0x51ef92['sendStatus'](0x194);}return _0x21b2d1;};}function handleError(_0x2a281d,_0x539746){_0x539746=_0x539746||0x1f4;return function(_0x25d4d6){logger[_0x9508('0xe')](_0x25d4d6[_0x9508('0xf')]);if(_0x25d4d6[_0x9508('0x10')]){delete _0x25d4d6[_0x9508('0x10')];}_0x2a281d[_0x9508('0x11')](_0x539746)[_0x9508('0x12')](_0x25d4d6);};}exports[_0x9508('0x13')]=function(_0x5a303c,_0x22ba9c){var _0x378749={},_0xfcc29d={},_0x1ba7e6={'count':0x0,'rows':[]};var _0x23c30e=_[_0x9508('0x14')](db['CmHopper']['rawAttributes'],function(_0x17e43c){return{'name':_0x17e43c['fieldName'],'type':_0x17e43c[_0x9508('0x15')]['key']};});_0xfcc29d[_0x9508('0x16')]=_[_0x9508('0x14')](_0x23c30e,_0x9508('0x10'));_0xfcc29d[_0x9508('0x17')]=_[_0x9508('0x18')](_0x5a303c[_0x9508('0x17')]);_0xfcc29d[_0x9508('0x19')]=_['intersection'](_0xfcc29d['model'],_0xfcc29d[_0x9508('0x17')]);_0xfcc29d[_0x9508('0x19')]=_[_0x9508('0x1a')](_0xfcc29d[_0x9508('0x19')],[_0x9508('0x1b'),_0x9508('0x1c'),'$gt','$gte',_0x9508('0x1d'),'$lte','$ne',_0x9508('0x1e'),'$not','$between',_0x9508('0x1f'),_0x9508('0x20'),'$notIn',_0x9508('0x21'),_0x9508('0x22'),_0x9508('0x23'),_0x9508('0x24'),_0x9508('0x21'),_0x9508('0x25'),_0x9508('0x26'),_0x9508('0x27'),_0x9508('0x28')]);_0x378749[_0x9508('0x29')]=_[_0x9508('0x2a')](_0xfcc29d['model'],qs[_0x9508('0x2b')](_0x5a303c[_0x9508('0x17')][_0x9508('0x2b')]));_0x378749['attributes']=_0x378749[_0x9508('0x29')][_0x9508('0x2c')]?_0x378749['attributes']:_0xfcc29d[_0x9508('0x16')];if(!_0x5a303c[_0x9508('0x17')]['hasOwnProperty'](_0x9508('0x2d'))){_0x378749[_0x9508('0x8')]=qs[_0x9508('0x8')](_0x5a303c[_0x9508('0x17')]['limit']);_0x378749['offset']=qs[_0x9508('0x7')](_0x5a303c[_0x9508('0x17')][_0x9508('0x7')]);}_0x378749['order']=qs['sort'](_0x5a303c[_0x9508('0x17')][_0x9508('0x2e')]);_0x378749[_0x9508('0x2f')]=qs[_0x9508('0x19')](_[_0x9508('0x30')](_0x5a303c[_0x9508('0x17')],_0xfcc29d[_0x9508('0x19')]),_0x23c30e);if(_0x5a303c[_0x9508('0x17')][_0x9508('0x31')]){_0x378749[_0x9508('0x2f')]=_['merge'](_0x378749[_0x9508('0x2f')],{'$or':_[_0x9508('0x14')](_0x23c30e,function(_0x5d7098){if(_0x5d7098[_0x9508('0x15')]!==_0x9508('0x32')){var _0x3f69b1={};_0x3f69b1[_0x5d7098[_0x9508('0x10')]]={'$like':'%'+_0x5a303c[_0x9508('0x17')][_0x9508('0x31')]+'%'};return _0x3f69b1;}})});}_0x378749=_[_0x9508('0x33')]({},_0x378749,_0x5a303c[_0x9508('0x34')]);var _0xfb6676={'where':_0x378749[_0x9508('0x2f')]};return db[_0x9508('0x35')]['count'](_0xfb6676)[_0x9508('0xd')](function(_0x5b690e){_0x1ba7e6[_0x9508('0xa')]=_0x5b690e;if(_0x5a303c[_0x9508('0x17')][_0x9508('0x36')]){_0x378749['include']=[{'all':!![]}];}return db['CmHopper'][_0x9508('0x37')](_0x378749);})[_0x9508('0xd')](function(_0x1277b1){_0x1ba7e6[_0x9508('0x38')]=_0x1277b1;return _0x1ba7e6;})['then'](respondWithFilteredResult(_0x22ba9c,_0x378749))[_0x9508('0x39')](handleError(_0x22ba9c,null));};exports['show']=function(_0x37b8a2,_0x174e83){var _0x5205f8={'raw':!![],'where':{'id':_0x37b8a2[_0x9508('0x3a')]['id']}},_0x33e412={};_0x33e412['model']=_[_0x9508('0x18')](db[_0x9508('0x35')][_0x9508('0x3b')]);_0x33e412[_0x9508('0x17')]=_['keys'](_0x37b8a2['query']);_0x33e412[_0x9508('0x19')]=_['intersection'](_0x33e412[_0x9508('0x16')],_0x33e412[_0x9508('0x17')]);_0x5205f8[_0x9508('0x29')]=_[_0x9508('0x2a')](_0x33e412['model'],qs['fields'](_0x37b8a2['query'][_0x9508('0x2b')]));_0x5205f8['attributes']=_0x5205f8[_0x9508('0x29')]['length']?_0x5205f8[_0x9508('0x29')]:_0x33e412[_0x9508('0x16')];if(_0x37b8a2[_0x9508('0x17')][_0x9508('0x36')]){_0x5205f8['include']=[{'all':!![]}];}_0x5205f8=_[_0x9508('0x33')]({},_0x5205f8,_0x37b8a2[_0x9508('0x34')]);return db[_0x9508('0x35')]['find'](_0x5205f8)[_0x9508('0xd')](handleEntityNotFound(_0x174e83,null))[_0x9508('0xd')](respondWithResult(_0x174e83,null))['catch'](handleError(_0x174e83,null));};exports[_0x9508('0x3c')]=function(_0x50a4ba,_0xd6d570){return db['CmHopper']['create'](_0x50a4ba[_0x9508('0x3d')],{})[_0x9508('0xd')](respondWithResult(_0xd6d570,0xc9))[_0x9508('0x39')](handleError(_0xd6d570,null));};exports[_0x9508('0xc')]=function(_0xf17d3a,_0x169daf){if(_0xf17d3a['body']['id']){delete _0xf17d3a[_0x9508('0x3d')]['id'];}return db[_0x9508('0x35')][_0x9508('0x3e')]({'where':{'id':_0xf17d3a['params']['id']}})[_0x9508('0xd')](handleEntityNotFound(_0x169daf,null))[_0x9508('0xd')](saveUpdates(_0xf17d3a[_0x9508('0x3d')],null))[_0x9508('0xd')](respondWithResult(_0x169daf,null))['catch'](handleError(_0x169daf,null));};exports[_0x9508('0x3f')]=function(_0x552d10,_0x155928){return db[_0x9508('0x35')]['describe']()[_0x9508('0xd')](respondWithResult(_0x155928,null))[_0x9508('0x39')](handleError(_0x155928,null));};exports['destroy']=function(_0x61eb2c,_0x22306e){var _0x5125c9;var _0x39215b=_0x61eb2c['params']['id'];return db[_0x9508('0x35')]['find']({'where':{'id':_0x61eb2c[_0x9508('0x3a')]['id']}})['then'](handleEntityNotFound(_0x22306e,null))['then'](function(_0x55a158){if(_0x55a158){return _0x55a158['destroy']()[_0x9508('0xd')](function(_0x13cedc){return _0x13cedc;});}})[_0x9508('0xd')](function(_0x2eead6){_0x5125c9=_0x2eead6;if(_0x2eead6){if(_0x2eead6[_0x9508('0x40')]||_0x2eead6[_0x9508('0x41')]){return db[_0x2eead6[_0x9508('0x40')]?_0x9508('0x42'):_0x9508('0x43')]['find']({'where':{'id':_0x2eead6[_0x9508('0x40')]?_0x2eead6[_0x9508('0x40')]:_0x2eead6[_0x9508('0x41')]},'attributes':['id',_0x9508('0x10')],'raw':!![]});}}})[_0x9508('0xd')](function(_0x539f5c){var _0x5c0467={};if(_0x539f5c){_[_0x9508('0x33')](_0x5c0467,_['omit'](_0x5125c9[_0x9508('0x44')],[_0x9508('0x45'),'updatedAt','id']));_0x5c0467[_0x9508('0x46')]=0x15;_0x5c0467['statedesc']='deleted';_0x5c0467[_0x9508('0x47')]=_0x539f5c[_0x9508('0x10')];_0x5c0467['membername']=_0x61eb2c[_0x9508('0x48')][_0x9508('0x10')];_0x5c0467[_0x9508('0x49')]=_0x61eb2c[_0x9508('0x48')]['id'];_0x5c0467[_0x9508('0x4a')]=!![];_0x5c0467[_0x9508('0x4b')]=moment()[_0x9508('0x4c')](_0x9508('0x4d'));_0x5c0467[_0x9508('0x4e')]=_0x5125c9[_0x9508('0x4f')];_0x5c0467[_0x9508('0x50')]=_0x5125c9[_0x9508('0x40')]?_0x9508('0x51'):_0x9508('0x52');return db['CmContact'][_0x9508('0x3e')]({'where':{'id':_0x5c0467[_0x9508('0x53')]},'attributes':['firstName',_0x9508('0x54')]})['then'](function(_0x53d35a){if(!_[_0x9508('0x55')](_0x22306e)&&!_[_0x9508('0x55')](_0x53d35a['firstName'])){_0x5c0467[_0x9508('0x56')]=_0x53d35a[_0x9508('0x57')];if(!_['isNil'](_0x53d35a[_0x9508('0x54')])){_0x5c0467[_0x9508('0x56')]+='\x20'+_0x53d35a[_0x9508('0x54')];}}})['finally'](function(){return db[_0x9508('0x58')][_0x9508('0x3c')](_0x5c0467);});}})[_0x9508('0xd')](function(_0x692368){return db[_0x9508('0x59')][_0x9508('0x5a')]({'where':{'CmHopperId':_0x39215b}});})['then'](function(){return _0x22306e[_0x9508('0x11')](0xcc)[_0x9508('0x5b')]();})[_0x9508('0x39')](handleError(_0x22306e,null));};exports[_0x9508('0x5c')]=function(_0x5bab99,_0x2ff0bb){var _0x5e2dab=[];return db[_0x9508('0x5d')][_0x9508('0x3f')]()['then'](function(_0x308fb0){_0x5e2dab=_[_0x9508('0x18')](_0x308fb0);return _0x5bab99['user'][_0x9508('0x5e')]({'where':{'type':_0x9508('0x5f'),'dialActive':!![],'dialMethod':_0x9508('0x60')},'attributes':['id',_0x9508('0x61'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x9508('0xd')](function(_0x3b028a){if(_0x3b028a&&_0x3b028a[_0x9508('0x2c')]){return db[_0x9508('0x62')][_0x9508('0x63')](function(_0x9a59f7){var _0x67371f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9508('0x4c')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9508('0x14')](_0x3b028a,'id')},'$or':[{'UserId':null},{'UserId':_0x5bab99[_0x9508('0x48')]['id']}]};var _0x44b61a={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x3b028a)['filter']([_0x9508('0x64'),0x0])['map']('id')[_0x9508('0x65')]()},'$or':[{'UserId':null},{'UserId':_0x5bab99['user']['id']}]};var _0x53e277={'$or':[_0x67371f,_0x44b61a]};var _0x54f0f3=[];if(_0x5bab99[_0x9508('0x3d')][_0x9508('0x66')]&&_0x5bab99[_0x9508('0x3d')]['direction']===_0x9508('0x67')){if(!_[_0x9508('0x68')](_0x5bab99[_0x9508('0x3d')][_0x9508('0x69')])){_0x53e277['id']={'$in':_0x5bab99[_0x9508('0x3d')]['hopperIds']};}_0x54f0f3=[['priority',_0x9508('0x6a')],[_0x9508('0x6b'),_0x3b028a[0x0][_0x9508('0x61')]===_0x9508('0x6a')?_0x9508('0x6c'):_0x9508('0x6a')],db[_0x9508('0x62')][_0x9508('0x6d')](_0x9508('0x6e')),['id',_0x9508('0x6c')]];}else{if(!_[_0x9508('0x68')](_0x5bab99[_0x9508('0x3d')]['hopperIds'])){_0x53e277['id']={'$notIn':_0x5bab99['body'][_0x9508('0x69')]};}_0x54f0f3=[['priority',_0x9508('0x6c')],['scheduledAt',_0x3b028a[0x0]['dialOrderByScheduledAt']],db[_0x9508('0x62')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x9508('0x6a')]];}return db[_0x9508('0x35')][_0x9508('0x6f')]({'attributes':['id',_0x9508('0x70'),_0x9508('0x4f'),_0x9508('0x71')],'where':_0x53e277,'order':_0x54f0f3,'transaction':_0x9a59f7,'lock':_0x9a59f7[_0x9508('0x72')][_0x9508('0x73')],'include':[{'model':db[_0x9508('0x5d')],'as':_0x9508('0x74'),'attributes':_0x5e2dab,'include':[{'model':db[_0x9508('0x75')],'as':_0x9508('0x76'),'attributes':['id',_0x9508('0x10')]}]},{'model':db[_0x9508('0x77')],'as':_0x9508('0x78'),'attributes':['id','name']},{'model':db[_0x9508('0x42')],'as':'Queue','attributes':['id',_0x9508('0x10'),_0x9508('0x79')]}]})[_0x9508('0xd')](function(_0x42dfdb){if(_0x42dfdb){return _0x42dfdb[_0x9508('0xc')]({'UserId':_0x5bab99[_0x9508('0x48')]['id']},{'transaction':_0x9a59f7});}});});}})[_0x9508('0xd')](handleEntityNotFound(_0x2ff0bb,null))[_0x9508('0xd')](respondWithResult(_0x2ff0bb,null))[_0x9508('0x39')](handleError(_0x2ff0bb,null));};exports[_0x9508('0x7a')]=function(_0x2f292b,_0x470f52,_0x5d0d94){var _0x2db0af=[];var _0x2020bd=_0x2f292b[_0x9508('0x3a')]['id'];var _0x4bddc1=_0x2f292b['user']['id'];return db[_0x9508('0x5d')][_0x9508('0x3f')]()[_0x9508('0xd')](function(_0x27be4b){_0x2db0af=_[_0x9508('0x18')](_0x27be4b);return db[_0x9508('0x62')][_0x9508('0x63')](function(_0x5aa6da){const _0x2bf12b={'id':_0x2020bd};return db['CmHopper']['findOne']({'attributes':['id',_0x9508('0x70'),'recallme'],'where':_0x2bf12b,'transaction':_0x5aa6da,'lock':_0x5aa6da[_0x9508('0x72')][_0x9508('0x73')],'include':[{'model':db['CmContact'],'as':_0x9508('0x74'),'attributes':_0x2db0af,'include':[{'model':db['CmCompany'],'as':_0x9508('0x76'),'attributes':['id','name']}]},{'model':db[_0x9508('0x77')],'as':_0x9508('0x78'),'attributes':['id',_0x9508('0x10')]},{'model':db[_0x9508('0x42')],'as':_0x9508('0x7b'),'attributes':['id',_0x9508('0x10'),_0x9508('0x79')]}]})[_0x9508('0xd')](function(_0x12892f){if(_0x12892f){return _0x12892f[_0x9508('0xc')]({'UserId':_0x4bddc1},{'transaction':_0x5aa6da});}});});})['then'](handleEntityNotFound(_0x470f52,null))[_0x9508('0xd')](respondWithResult(_0x470f52,null))[_0x9508('0x39')](handleError(_0x470f52,null));};exports[_0x9508('0x7c')]=function(_0x175c74,_0xf094d1){return _0x175c74[_0x9508('0x48')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x9508('0x60')},'attributes':['id'],'raw':!![]})[_0x9508('0xd')](function(_0x1ad750){if(_0x1ad750&&_0x1ad750['length']){return db['CmHopper'][_0x9508('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x9508('0x4d'))},'VoiceQueueId':{'$in':_[_0x9508('0x14')](_0x1ad750,'id')},'$or':[{'UserId':null},{'UserId':_0x175c74[_0x9508('0x48')]['id']}]}});}return 0x0;})['then'](function(_0x3809c3){if(!_[_0x9508('0x55')](_0x3809c3)&&_[_0x9508('0x7d')](_0x3809c3)){return _0xf094d1[_0x9508('0x11')](0xc8)[_0x9508('0x6')]({'contacts':_0x3809c3});}else{logger[_0x9508('0xe')]('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x9508('0x7e'));_0xf094d1[_0x9508('0x7f')](0x194);}})['catch'](handleError(_0xf094d1,null));};exports[_0x9508('0x80')]=function(_0xa88073,_0xdf4171){var _0x4959a6=shared['timezones'];var _0x2b84f4=[];_['map'](_0x4959a6,function(_0x22015f){_0x2b84f4[_0x9508('0x81')]({'id':_0x22015f[_0x9508('0x10')],'name':_0x22015f[_0x9508('0x10')],'utcOffset':_0x22015f['utcOffset']});});return _0xdf4171[_0x9508('0x11')](0xc8)[_0x9508('0x6')]({'tz':_0x2b84f4});};exports['getTimezone']=function(_0x25b463,_0x146d98){var _0xa89fca=shared['timezones'];var _0x130c4a={};if(!_['isNil'](_0xa89fca[_0x25b463[_0x9508('0x3d')]['id']]))_0x130c4a=_0xa89fca[_0x25b463[_0x9508('0x3d')]['id']];return _0x146d98[_0x9508('0x11')](0xc8)[_0x9508('0x6')](_0x130c4a);};