e8943f039183e33c110d514f8292262a8b80c04f
[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 _0x4b19=['limit','count','set','Content-Range','update','then','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','model','query','keys','filters','intersection','concat','$and','$gt','$lt','$lte','$ne','$eq','$notBetween','$notIn','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','merge','find','create','body','params','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','end','getVoiceQueues','preview','dialOrderByScheduledAt','sequelize','transaction','dialPreviewAutoRecallMe','direction','hopperIds','priority','ASC','scheduledAt','literal','DESC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','CmList','List','dialActive','getPreviewRecall','Contact','Company','Queue','outbound','isNumber','getOpenContacts','sendStatus','getTimezones','timezones','push','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','undefined'];(function(_0x4ed32d,_0x327695){var _0xf624df=function(_0x29518c){while(--_0x29518c){_0x4ed32d['push'](_0x4ed32d['shift']());}};_0xf624df(++_0x327695);}(_0x4b19,0x195));var _0x94b1=function(_0x2acd0f,_0x3ac736){_0x2acd0f=_0x2acd0f-0x0;var _0x434b3e=_0x4b19[_0x2acd0f];return _0x434b3e;};'use strict';var moment=require(_0x94b1('0x0'));var _=require('lodash');var qs=require(_0x94b1('0x1'));var logger=require(_0x94b1('0x2'))(_0x94b1('0x3'));var shared=require('../../config/environment');var db=require(_0x94b1('0x4'))['db'];function respondWithResult(_0x3648ad,_0x2240b9){_0x2240b9=_0x2240b9||0xc8;return function(_0x4f607f){if(_0x4f607f){return _0x3648ad[_0x94b1('0x5')](_0x2240b9)[_0x94b1('0x6')](_0x4f607f);}};}function respondWithFilteredResult(_0x52d6c1,_0x24df76){return function(_0x110a52){if(_0x110a52){var _0x4ea1f9=typeof _0x24df76[_0x94b1('0x7')]===_0x94b1('0x8')&&typeof _0x24df76[_0x94b1('0x9')]==='undefined';var _0x15c0a9=_0x110a52['count'];var _0x4aafcc=_0x4ea1f9?0x0:_0x24df76[_0x94b1('0x7')];var _0x126424=_0x4ea1f9?_0x110a52[_0x94b1('0xa')]:_0x24df76[_0x94b1('0x7')]+_0x24df76[_0x94b1('0x9')];var _0x3aeb91;if(_0x126424>=_0x15c0a9){_0x126424=_0x15c0a9;_0x3aeb91=0xc8;}else{_0x3aeb91=0xce;}_0x52d6c1['status'](_0x3aeb91);return _0x52d6c1[_0x94b1('0xb')](_0x94b1('0xc'),_0x4aafcc+'-'+_0x126424+'/'+_0x15c0a9)[_0x94b1('0x6')](_0x110a52);}return null;};}function saveUpdates(_0x2b378c,_0x5cbf96){return function(_0x4a4fe6){if(_0x4a4fe6){return _0x4a4fe6[_0x94b1('0xd')](_0x2b378c)[_0x94b1('0xe')](function(_0x57de2f){return _0x57de2f;});}return null;};}function handleEntityNotFound(_0x5059d8,_0x9329c9){return function(_0xb9924c){if(!_0xb9924c){_0x5059d8['sendStatus'](0x194);}return _0xb9924c;};}function handleError(_0x3f3eab,_0x58fab3){_0x58fab3=_0x58fab3||0x1f4;return function(_0x4ea6a4){logger[_0x94b1('0xf')](_0x4ea6a4[_0x94b1('0x10')]);if(_0x4ea6a4[_0x94b1('0x11')]){delete _0x4ea6a4[_0x94b1('0x11')];}_0x3f3eab['status'](_0x58fab3)[_0x94b1('0x12')](_0x4ea6a4);};}exports[_0x94b1('0x13')]=function(_0xa29b90,_0x224099){var _0x3a6ae0={},_0x1abb7f={},_0x2d33dc={'count':0x0,'rows':[]};var _0x59d7cf=_[_0x94b1('0x14')](db[_0x94b1('0x15')][_0x94b1('0x16')],function(_0x5deb20){return{'name':_0x5deb20[_0x94b1('0x17')],'type':_0x5deb20[_0x94b1('0x18')]['key']};});_0x1abb7f[_0x94b1('0x19')]=_[_0x94b1('0x14')](_0x59d7cf,_0x94b1('0x11'));_0x1abb7f[_0x94b1('0x1a')]=_[_0x94b1('0x1b')](_0xa29b90[_0x94b1('0x1a')]);_0x1abb7f[_0x94b1('0x1c')]=_[_0x94b1('0x1d')](_0x1abb7f[_0x94b1('0x19')],_0x1abb7f[_0x94b1('0x1a')]);_0x1abb7f['filters']=_[_0x94b1('0x1e')](_0x1abb7f[_0x94b1('0x1c')],[_0x94b1('0x1f'),'$or',_0x94b1('0x20'),'$gte',_0x94b1('0x21'),_0x94b1('0x22'),_0x94b1('0x23'),_0x94b1('0x24'),'$not','$between',_0x94b1('0x25'),'$in',_0x94b1('0x26'),'$like',_0x94b1('0x27'),_0x94b1('0x28'),_0x94b1('0x29'),'$like',_0x94b1('0x2a'),_0x94b1('0x2b'),_0x94b1('0x2c'),_0x94b1('0x2d')]);_0x3a6ae0[_0x94b1('0x2e')]=_[_0x94b1('0x1d')](_0x1abb7f[_0x94b1('0x19')],qs[_0x94b1('0x2f')](_0xa29b90[_0x94b1('0x1a')]['fields']));_0x3a6ae0[_0x94b1('0x2e')]=_0x3a6ae0[_0x94b1('0x2e')]['length']?_0x3a6ae0[_0x94b1('0x2e')]:_0x1abb7f[_0x94b1('0x19')];if(!_0xa29b90[_0x94b1('0x1a')][_0x94b1('0x30')](_0x94b1('0x31'))){_0x3a6ae0[_0x94b1('0x9')]=qs['limit'](_0xa29b90[_0x94b1('0x1a')]['limit']);_0x3a6ae0[_0x94b1('0x7')]=qs['offset'](_0xa29b90['query'][_0x94b1('0x7')]);}_0x3a6ae0[_0x94b1('0x32')]=qs[_0x94b1('0x33')](_0xa29b90[_0x94b1('0x1a')][_0x94b1('0x33')]);_0x3a6ae0[_0x94b1('0x34')]=qs[_0x94b1('0x1c')](_[_0x94b1('0x35')](_0xa29b90[_0x94b1('0x1a')],_0x1abb7f[_0x94b1('0x1c')]),_0x59d7cf);if(_0xa29b90[_0x94b1('0x1a')][_0x94b1('0x36')]){_0x3a6ae0['where']=_['merge'](_0x3a6ae0[_0x94b1('0x34')],{'$or':_[_0x94b1('0x14')](_0x59d7cf,function(_0x298bc2){if(_0x298bc2[_0x94b1('0x18')]!==_0x94b1('0x37')){var _0x2ba486={};_0x2ba486[_0x298bc2[_0x94b1('0x11')]]={'$like':'%'+_0xa29b90[_0x94b1('0x1a')][_0x94b1('0x36')]+'%'};return _0x2ba486;}})});}_0x3a6ae0=_['merge']({},_0x3a6ae0,_0xa29b90[_0x94b1('0x38')]);var _0x4d18e8={'where':_0x3a6ae0[_0x94b1('0x34')]};return db[_0x94b1('0x15')][_0x94b1('0xa')](_0x4d18e8)['then'](function(_0x357798){_0x2d33dc[_0x94b1('0xa')]=_0x357798;if(_0xa29b90[_0x94b1('0x1a')]['includeAll']){_0x3a6ae0[_0x94b1('0x39')]=[{'all':!![]}];}return db[_0x94b1('0x15')][_0x94b1('0x3a')](_0x3a6ae0);})[_0x94b1('0xe')](function(_0x3e5b02){_0x2d33dc[_0x94b1('0x3b')]=_0x3e5b02;return _0x2d33dc;})[_0x94b1('0xe')](respondWithFilteredResult(_0x224099,_0x3a6ae0))[_0x94b1('0x3c')](handleError(_0x224099,null));};exports[_0x94b1('0x3d')]=function(_0x2d6f38,_0x32d009){var _0xfb5e55={'raw':!![],'where':{'id':_0x2d6f38['params']['id']}},_0x235a44={};_0x235a44[_0x94b1('0x19')]=_[_0x94b1('0x1b')](db[_0x94b1('0x15')][_0x94b1('0x16')]);_0x235a44[_0x94b1('0x1a')]=_['keys'](_0x2d6f38[_0x94b1('0x1a')]);_0x235a44[_0x94b1('0x1c')]=_[_0x94b1('0x1d')](_0x235a44[_0x94b1('0x19')],_0x235a44[_0x94b1('0x1a')]);_0xfb5e55[_0x94b1('0x2e')]=_['intersection'](_0x235a44[_0x94b1('0x19')],qs[_0x94b1('0x2f')](_0x2d6f38['query'][_0x94b1('0x2f')]));_0xfb5e55[_0x94b1('0x2e')]=_0xfb5e55['attributes'][_0x94b1('0x3e')]?_0xfb5e55[_0x94b1('0x2e')]:_0x235a44[_0x94b1('0x19')];if(_0x2d6f38['query'][_0x94b1('0x3f')]){_0xfb5e55[_0x94b1('0x39')]=[{'all':!![]}];}_0xfb5e55=_[_0x94b1('0x40')]({},_0xfb5e55,_0x2d6f38[_0x94b1('0x38')]);return db[_0x94b1('0x15')][_0x94b1('0x41')](_0xfb5e55)[_0x94b1('0xe')](handleEntityNotFound(_0x32d009,null))['then'](respondWithResult(_0x32d009,null))[_0x94b1('0x3c')](handleError(_0x32d009,null));};exports[_0x94b1('0x42')]=function(_0x163b8e,_0x4f023d){return db[_0x94b1('0x15')][_0x94b1('0x42')](_0x163b8e['body'],{})[_0x94b1('0xe')](respondWithResult(_0x4f023d,0xc9))[_0x94b1('0x3c')](handleError(_0x4f023d,null));};exports[_0x94b1('0xd')]=function(_0x4755c5,_0x13ec08){if(_0x4755c5[_0x94b1('0x43')]['id']){delete _0x4755c5[_0x94b1('0x43')]['id'];}return db[_0x94b1('0x15')][_0x94b1('0x41')]({'where':{'id':_0x4755c5[_0x94b1('0x44')]['id']}})[_0x94b1('0xe')](handleEntityNotFound(_0x13ec08,null))[_0x94b1('0xe')](saveUpdates(_0x4755c5[_0x94b1('0x43')],null))[_0x94b1('0xe')](respondWithResult(_0x13ec08,null))[_0x94b1('0x3c')](handleError(_0x13ec08,null));};exports[_0x94b1('0x45')]=function(_0xfe1c8f,_0x2b22ee){return db[_0x94b1('0x15')]['describe']()[_0x94b1('0xe')](respondWithResult(_0x2b22ee,null))['catch'](handleError(_0x2b22ee,null));};exports[_0x94b1('0x46')]=function(_0x3fc0fc,_0x1d8e57){var _0x54fc33;var _0x4dacb2=_0x3fc0fc['params']['id'];return db[_0x94b1('0x15')][_0x94b1('0x41')]({'where':{'id':_0x3fc0fc[_0x94b1('0x44')]['id']}})['then'](handleEntityNotFound(_0x1d8e57,null))['then'](function(_0x4d2af3){if(_0x4d2af3){return _0x4d2af3[_0x94b1('0x46')]()[_0x94b1('0xe')](function(_0xbfd51b){return _0xbfd51b;});}})[_0x94b1('0xe')](function(_0x4109ca){_0x54fc33=_0x4109ca;if(_0x4109ca){if(_0x4109ca[_0x94b1('0x47')]||_0x4109ca[_0x94b1('0x48')]){return db[_0x4109ca['VoiceQueueId']?_0x94b1('0x49'):_0x94b1('0x4a')][_0x94b1('0x41')]({'where':{'id':_0x4109ca[_0x94b1('0x47')]?_0x4109ca[_0x94b1('0x47')]:_0x4109ca[_0x94b1('0x48')]},'attributes':['id',_0x94b1('0x11')],'raw':!![]});}}})[_0x94b1('0xe')](function(_0x37aa72){var _0x252a63={};if(_0x37aa72){_[_0x94b1('0x40')](_0x252a63,_[_0x94b1('0x4b')](_0x54fc33[_0x94b1('0x4c')],[_0x94b1('0x4d'),'updatedAt','id']));_0x252a63[_0x94b1('0x4e')]=0x15;_0x252a63[_0x94b1('0x4f')]=_0x94b1('0x50');_0x252a63[_0x94b1('0x51')]=_0x37aa72[_0x94b1('0x11')];_0x252a63[_0x94b1('0x52')]=_0x3fc0fc[_0x94b1('0x53')][_0x94b1('0x11')];_0x252a63[_0x94b1('0x54')]=_0x3fc0fc['user']['id'];_0x252a63[_0x94b1('0x50')]=!![];_0x252a63[_0x94b1('0x55')]=moment()[_0x94b1('0x56')](_0x94b1('0x57'));_0x252a63[_0x94b1('0x58')]=_0x54fc33[_0x94b1('0x59')];_0x252a63['campaigntype']=_0x54fc33[_0x94b1('0x47')]?_0x94b1('0x5a'):_0x94b1('0x5b');return db[_0x94b1('0x5c')][_0x94b1('0x41')]({'where':{'id':_0x252a63[_0x94b1('0x5d')]},'attributes':[_0x94b1('0x5e'),_0x94b1('0x5f')]})[_0x94b1('0xe')](function(_0x502d2c){if(!_['isNil'](_0x1d8e57)&&!_[_0x94b1('0x60')](_0x502d2c[_0x94b1('0x5e')])){_0x252a63[_0x94b1('0x61')]=_0x502d2c[_0x94b1('0x5e')];if(!_[_0x94b1('0x60')](_0x502d2c[_0x94b1('0x5f')])){_0x252a63[_0x94b1('0x61')]+='\x20'+_0x502d2c[_0x94b1('0x5f')];}}})[_0x94b1('0x62')](function(){return db[_0x94b1('0x63')][_0x94b1('0x42')](_0x252a63);});}})[_0x94b1('0xe')](function(_0x4d22ac){return db['CmHopperAdditionalPhone'][_0x94b1('0x46')]({'where':{'CmHopperId':_0x4dacb2}});})[_0x94b1('0xe')](function(){return _0x1d8e57[_0x94b1('0x5')](0xcc)[_0x94b1('0x64')]();})[_0x94b1('0x3c')](handleError(_0x1d8e57,null));};exports['getPreview']=function(_0x249c48,_0x478117){var _0x37e951=[];return db[_0x94b1('0x5c')][_0x94b1('0x45')]()['then'](function(_0x576a6d){_0x37e951=_[_0x94b1('0x1b')](_0x576a6d);return _0x249c48[_0x94b1('0x53')][_0x94b1('0x65')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x94b1('0x66')},'attributes':['id',_0x94b1('0x67'),'dialPreviewAutoRecallMe'],'raw':!![]});})['then'](function(_0xca90cf){if(_0xca90cf&&_0xca90cf[_0x94b1('0x3e')]){return db[_0x94b1('0x68')][_0x94b1('0x69')](function(_0x282081){var _0x1c0013={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x94b1('0x56')](_0x94b1('0x57'))},'VoiceQueueId':{'$in':_['map'](_0xca90cf,'id')},'$or':[{'UserId':null},{'UserId':_0x249c48[_0x94b1('0x53')]['id']}]};var _0x4a26cc={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0xca90cf)[_0x94b1('0x36')]([_0x94b1('0x6a'),0x0])[_0x94b1('0x14')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x249c48[_0x94b1('0x53')]['id']}]};var _0x5b1340={'$or':[_0x1c0013,_0x4a26cc]};var _0x5615c8=[];if(_0x249c48[_0x94b1('0x43')][_0x94b1('0x6b')]&&_0x249c48[_0x94b1('0x43')][_0x94b1('0x6b')]==='prev'){if(!_['isEmpty'](_0x249c48[_0x94b1('0x43')][_0x94b1('0x6c')])){_0x5b1340['id']={'$in':_0x249c48[_0x94b1('0x43')][_0x94b1('0x6c')]};}_0x5615c8=[[_0x94b1('0x6d'),_0x94b1('0x6e')],[_0x94b1('0x6f'),_0xca90cf[0x0][_0x94b1('0x67')]==='ASC'?'DESC':_0x94b1('0x6e')],db['sequelize'][_0x94b1('0x70')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x94b1('0x71')]];}else{if(!_[_0x94b1('0x72')](_0x249c48[_0x94b1('0x43')][_0x94b1('0x6c')])){_0x5b1340['id']={'$notIn':_0x249c48[_0x94b1('0x43')][_0x94b1('0x6c')]};}_0x5615c8=[['priority',_0x94b1('0x71')],[_0x94b1('0x6f'),_0xca90cf[0x0][_0x94b1('0x67')]],db[_0x94b1('0x68')][_0x94b1('0x70')](_0x94b1('0x73')),['id',_0x94b1('0x6e')]];}return db['CmHopper'][_0x94b1('0x74')]({'attributes':['id',_0x94b1('0x75'),_0x94b1('0x59'),_0x94b1('0x76')],'where':_0x5b1340,'order':_0x5615c8,'transaction':_0x282081,'lock':_0x282081[_0x94b1('0x77')][_0x94b1('0x78')],'include':[{'model':db[_0x94b1('0x5c')],'as':'Contact','attributes':_0x37e951,'include':[{'model':db[_0x94b1('0x79')],'as':'Company','attributes':['id',_0x94b1('0x11')]}]},{'model':db[_0x94b1('0x7a')],'as':_0x94b1('0x7b'),'attributes':['id',_0x94b1('0x11')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0x94b1('0x11'),_0x94b1('0x7c')]}]})['then'](function(_0xe48788){if(_0xe48788){return _0xe48788[_0x94b1('0xd')]({'UserId':_0x249c48[_0x94b1('0x53')]['id']},{'transaction':_0x282081});}});});}})['then'](handleEntityNotFound(_0x478117,null))[_0x94b1('0xe')](respondWithResult(_0x478117,null))[_0x94b1('0x3c')](handleError(_0x478117,null));};exports[_0x94b1('0x7d')]=function(_0x219939,_0x48472c,_0x46893d){var _0x486841=[];var _0x53faf9=_0x219939['params']['id'];var _0x2f05d5=_0x219939[_0x94b1('0x53')]['id'];return db[_0x94b1('0x5c')]['describe']()['then'](function(_0x587099){_0x486841=_[_0x94b1('0x1b')](_0x587099);return db[_0x94b1('0x68')]['transaction'](function(_0x5edb29){const _0x4c2a00={'id':_0x53faf9};return db[_0x94b1('0x15')][_0x94b1('0x74')]({'attributes':['id',_0x94b1('0x75'),_0x94b1('0x76')],'where':_0x4c2a00,'transaction':_0x5edb29,'lock':_0x5edb29['LOCK']['UPDATE'],'include':[{'model':db[_0x94b1('0x5c')],'as':_0x94b1('0x7e'),'attributes':_0x486841,'include':[{'model':db[_0x94b1('0x79')],'as':_0x94b1('0x7f'),'attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x94b1('0x11')]},{'model':db[_0x94b1('0x49')],'as':_0x94b1('0x80'),'attributes':['id',_0x94b1('0x11'),_0x94b1('0x7c')]}]})['then'](function(_0xc2894f){if(_0xc2894f){return _0xc2894f[_0x94b1('0xd')]({'UserId':_0x2f05d5},{'transaction':_0x5edb29});}});});})['then'](handleEntityNotFound(_0x48472c,null))[_0x94b1('0xe')](respondWithResult(_0x48472c,null))['catch'](handleError(_0x48472c,null));};exports['getOpenContacts']=function(_0x416055,_0x5edac4){return _0x416055[_0x94b1('0x53')][_0x94b1('0x65')]({'where':{'type':_0x94b1('0x81'),'dialActive':!![],'dialMethod':_0x94b1('0x66')},'attributes':['id'],'raw':!![]})[_0x94b1('0xe')](function(_0x4f182c){if(_0x4f182c&&_0x4f182c[_0x94b1('0x3e')]){return db['CmHopper'][_0x94b1('0xa')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x94b1('0x56')](_0x94b1('0x57'))},'VoiceQueueId':{'$in':_['map'](_0x4f182c,'id')},'$or':[{'UserId':null},{'UserId':_0x416055[_0x94b1('0x53')]['id']}]}});}return 0x0;})[_0x94b1('0xe')](function(_0x59f77a){if(!_['isNil'](_0x59f77a)&&_[_0x94b1('0x82')](_0x59f77a)){return _0x5edac4[_0x94b1('0x5')](0xc8)[_0x94b1('0x6')]({'contacts':_0x59f77a});}else{logger[_0x94b1('0xf')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x94b1('0x83'),0x194,'entity\x20not\x20found');_0x5edac4[_0x94b1('0x84')](0x194);}})['catch'](handleError(_0x5edac4,null));};exports[_0x94b1('0x85')]=function(_0x4ba865,_0x497c2f){var _0x3f0958=shared[_0x94b1('0x86')];var _0x594bbd=[];_[_0x94b1('0x14')](_0x3f0958,function(_0x1b9a5d){_0x594bbd[_0x94b1('0x87')]({'id':_0x1b9a5d['name'],'name':_0x1b9a5d[_0x94b1('0x11')],'utcOffset':_0x1b9a5d[_0x94b1('0x88')]});});return _0x497c2f[_0x94b1('0x5')](0xc8)['json']({'tz':_0x594bbd});};exports[_0x94b1('0x89')]=function(_0x4d6c7e,_0x595ae3){var _0x238963=shared['timezones'];var _0x3ca231={};if(!_['isNil'](_0x238963[_0x4d6c7e[_0x94b1('0x43')]['id']]))_0x3ca231=_0x238963[_0x4d6c7e['body']['id']];return _0x595ae3[_0x94b1('0x5')](0xc8)['json'](_0x3ca231);};