5a05216624cbb311a8f6ee99d3dff254c0558590
[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 _0x5178=['pick','filter','merge','VIRTUAL','options','CmHopper','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','format','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','YYYY-MM-DD\x20HH:mm:ss','value','direction','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','sequelize','findOne','scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','List','Queue','dialActive','getPreviewRecall','Company','CmList','getOpenContacts','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','json','offset','undefined','count','limit','status','set','Content-Range','update','then','sendStatus','error','stack','name','send','map','rawAttributes','type','key','model','query','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x5aa00f,_0x1b9240){var _0x36a046=function(_0x16002f){while(--_0x16002f){_0x5aa00f['push'](_0x5aa00f['shift']());}};_0x36a046(++_0x1b9240);}(_0x5178,0x171));var _0x8517=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5178[_0x501510];return _0x1e6ee5;};'use strict';var moment=require('moment');var _=require(_0x8517('0x0'));var qs=require(_0x8517('0x1'));var logger=require(_0x8517('0x2'))(_0x8517('0x3'));var shared=require(_0x8517('0x4'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x483381,_0x3ed6a5){_0x3ed6a5=_0x3ed6a5||0xc8;return function(_0x221184){if(_0x221184){return _0x483381['status'](_0x3ed6a5)[_0x8517('0x5')](_0x221184);}};}function respondWithFilteredResult(_0x58ed7e,_0x13ba05){return function(_0x45498e){if(_0x45498e){var _0x3615b2=typeof _0x13ba05[_0x8517('0x6')]===_0x8517('0x7')&&typeof _0x13ba05['limit']===_0x8517('0x7');var _0x526e51=_0x45498e['count'];var _0x2d15fa=_0x3615b2?0x0:_0x13ba05[_0x8517('0x6')];var _0x4dac4d=_0x3615b2?_0x45498e[_0x8517('0x8')]:_0x13ba05[_0x8517('0x6')]+_0x13ba05[_0x8517('0x9')];var _0x3be6b0;if(_0x4dac4d>=_0x526e51){_0x4dac4d=_0x526e51;_0x3be6b0=0xc8;}else{_0x3be6b0=0xce;}_0x58ed7e[_0x8517('0xa')](_0x3be6b0);return _0x58ed7e[_0x8517('0xb')](_0x8517('0xc'),_0x2d15fa+'-'+_0x4dac4d+'/'+_0x526e51)[_0x8517('0x5')](_0x45498e);}return null;};}function saveUpdates(_0x4b9768,_0x9c57de){return function(_0x7f429a){if(_0x7f429a){return _0x7f429a[_0x8517('0xd')](_0x4b9768)[_0x8517('0xe')](function(_0x284a05){return _0x284a05;});}return null;};}function handleEntityNotFound(_0x49eba7,_0x385219){return function(_0x19dd9d){if(!_0x19dd9d){_0x49eba7[_0x8517('0xf')](0x194);}return _0x19dd9d;};}function handleError(_0x100280,_0x411d29){_0x411d29=_0x411d29||0x1f4;return function(_0x18a984){logger[_0x8517('0x10')](_0x18a984[_0x8517('0x11')]);if(_0x18a984[_0x8517('0x12')]){delete _0x18a984[_0x8517('0x12')];}_0x100280[_0x8517('0xa')](_0x411d29)[_0x8517('0x13')](_0x18a984);};}exports['index']=function(_0xdfe7fe,_0x100b76){var _0x38e0f3={},_0xf1b53b={},_0x64875e={'count':0x0,'rows':[]};var _0x24ca7e=_[_0x8517('0x14')](db['CmHopper'][_0x8517('0x15')],function(_0x4cd0a5){return{'name':_0x4cd0a5['fieldName'],'type':_0x4cd0a5[_0x8517('0x16')][_0x8517('0x17')]};});_0xf1b53b[_0x8517('0x18')]=_[_0x8517('0x14')](_0x24ca7e,_0x8517('0x12'));_0xf1b53b[_0x8517('0x19')]=_['keys'](_0xdfe7fe['query']);_0xf1b53b[_0x8517('0x1a')]=_[_0x8517('0x1b')](_0xf1b53b[_0x8517('0x18')],_0xf1b53b[_0x8517('0x19')]);_0xf1b53b[_0x8517('0x1a')]=_[_0x8517('0x1c')](_0xf1b53b['filters'],[_0x8517('0x1d'),_0x8517('0x1e'),'$gt',_0x8517('0x1f'),_0x8517('0x20'),_0x8517('0x21'),'$ne',_0x8517('0x22'),'$not',_0x8517('0x23'),_0x8517('0x24'),_0x8517('0x25'),_0x8517('0x26'),_0x8517('0x27'),_0x8517('0x28'),'$iLike',_0x8517('0x29'),'$like',_0x8517('0x2a'),_0x8517('0x2b'),_0x8517('0x2c'),_0x8517('0x2d')]);_0x38e0f3[_0x8517('0x2e')]=_[_0x8517('0x1b')](_0xf1b53b['model'],qs[_0x8517('0x2f')](_0xdfe7fe['query'][_0x8517('0x2f')]));_0x38e0f3[_0x8517('0x2e')]=_0x38e0f3[_0x8517('0x2e')][_0x8517('0x30')]?_0x38e0f3[_0x8517('0x2e')]:_0xf1b53b[_0x8517('0x18')];if(!_0xdfe7fe[_0x8517('0x19')][_0x8517('0x31')](_0x8517('0x32'))){_0x38e0f3['limit']=qs[_0x8517('0x9')](_0xdfe7fe[_0x8517('0x19')][_0x8517('0x9')]);_0x38e0f3['offset']=qs['offset'](_0xdfe7fe['query'][_0x8517('0x6')]);}_0x38e0f3[_0x8517('0x33')]=qs[_0x8517('0x34')](_0xdfe7fe[_0x8517('0x19')][_0x8517('0x34')]);_0x38e0f3[_0x8517('0x35')]=qs['filters'](_[_0x8517('0x36')](_0xdfe7fe[_0x8517('0x19')],_0xf1b53b[_0x8517('0x1a')]),_0x24ca7e);if(_0xdfe7fe['query'][_0x8517('0x37')]){_0x38e0f3['where']=_[_0x8517('0x38')](_0x38e0f3[_0x8517('0x35')],{'$or':_['map'](_0x24ca7e,function(_0x572feb){if(_0x572feb[_0x8517('0x16')]!==_0x8517('0x39')){var _0x2c1292={};_0x2c1292[_0x572feb[_0x8517('0x12')]]={'$like':'%'+_0xdfe7fe['query']['filter']+'%'};return _0x2c1292;}})});}_0x38e0f3=_[_0x8517('0x38')]({},_0x38e0f3,_0xdfe7fe[_0x8517('0x3a')]);var _0x1835ac={'where':_0x38e0f3['where']};return db[_0x8517('0x3b')][_0x8517('0x8')](_0x1835ac)['then'](function(_0x209235){_0x64875e[_0x8517('0x8')]=_0x209235;if(_0xdfe7fe[_0x8517('0x19')][_0x8517('0x3c')]){_0x38e0f3['include']=[{'all':!![]}];}return db[_0x8517('0x3b')][_0x8517('0x3d')](_0x38e0f3);})[_0x8517('0xe')](function(_0x36ff78){_0x64875e[_0x8517('0x3e')]=_0x36ff78;return _0x64875e;})[_0x8517('0xe')](respondWithFilteredResult(_0x100b76,_0x38e0f3))[_0x8517('0x3f')](handleError(_0x100b76,null));};exports[_0x8517('0x40')]=function(_0x3f338a,_0x183310){var _0x475d71={'raw':!![],'where':{'id':_0x3f338a[_0x8517('0x41')]['id']}},_0x42e62f={};_0x42e62f['model']=_['keys'](db[_0x8517('0x3b')][_0x8517('0x15')]);_0x42e62f[_0x8517('0x19')]=_[_0x8517('0x42')](_0x3f338a[_0x8517('0x19')]);_0x42e62f['filters']=_[_0x8517('0x1b')](_0x42e62f[_0x8517('0x18')],_0x42e62f['query']);_0x475d71[_0x8517('0x2e')]=_[_0x8517('0x1b')](_0x42e62f[_0x8517('0x18')],qs[_0x8517('0x2f')](_0x3f338a['query'][_0x8517('0x2f')]));_0x475d71[_0x8517('0x2e')]=_0x475d71['attributes'][_0x8517('0x30')]?_0x475d71[_0x8517('0x2e')]:_0x42e62f[_0x8517('0x18')];if(_0x3f338a['query'][_0x8517('0x3c')]){_0x475d71[_0x8517('0x43')]=[{'all':!![]}];}_0x475d71=_[_0x8517('0x38')]({},_0x475d71,_0x3f338a[_0x8517('0x3a')]);return db[_0x8517('0x3b')][_0x8517('0x44')](_0x475d71)[_0x8517('0xe')](handleEntityNotFound(_0x183310,null))['then'](respondWithResult(_0x183310,null))[_0x8517('0x3f')](handleError(_0x183310,null));};exports[_0x8517('0x45')]=function(_0x5382b2,_0x326323){return db[_0x8517('0x3b')][_0x8517('0x45')](_0x5382b2[_0x8517('0x46')],{})[_0x8517('0xe')](respondWithResult(_0x326323,0xc9))[_0x8517('0x3f')](handleError(_0x326323,null));};exports['update']=function(_0xad2c85,_0x10c07a){if(_0xad2c85[_0x8517('0x46')]['id']){delete _0xad2c85['body']['id'];}return db[_0x8517('0x3b')][_0x8517('0x44')]({'where':{'id':_0xad2c85['params']['id']}})[_0x8517('0xe')](handleEntityNotFound(_0x10c07a,null))[_0x8517('0xe')](saveUpdates(_0xad2c85['body'],null))['then'](respondWithResult(_0x10c07a,null))['catch'](handleError(_0x10c07a,null));};exports[_0x8517('0x47')]=function(_0x250a14,_0x4ec257){return db[_0x8517('0x3b')]['describe']()['then'](respondWithResult(_0x4ec257,null))[_0x8517('0x3f')](handleError(_0x4ec257,null));};exports[_0x8517('0x48')]=function(_0x3c8ecb,_0x6c2607){var _0x580af9;var _0x282601=_0x3c8ecb[_0x8517('0x41')]['id'];return db[_0x8517('0x3b')]['find']({'where':{'id':_0x3c8ecb[_0x8517('0x41')]['id']}})[_0x8517('0xe')](handleEntityNotFound(_0x6c2607,null))[_0x8517('0xe')](function(_0x22321c){if(_0x22321c){return _0x22321c[_0x8517('0x48')]()[_0x8517('0xe')](function(_0x3cccd9){return _0x3cccd9;});}})['then'](function(_0x3a5adb){_0x580af9=_0x3a5adb;if(_0x3a5adb){if(_0x3a5adb['VoiceQueueId']||_0x3a5adb['CampaignId']){return db[_0x3a5adb[_0x8517('0x49')]?_0x8517('0x4a'):_0x8517('0x4b')][_0x8517('0x44')]({'where':{'id':_0x3a5adb['VoiceQueueId']?_0x3a5adb[_0x8517('0x49')]:_0x3a5adb[_0x8517('0x4c')]},'attributes':['id','name'],'raw':!![]});}}})['then'](function(_0x3bdbb4){var _0x1f5db0={};if(_0x3bdbb4){_[_0x8517('0x38')](_0x1f5db0,_['omit'](_0x580af9[_0x8517('0x4d')],['createdAt',_0x8517('0x4e'),'id']));_0x1f5db0[_0x8517('0x4f')]=0x15;_0x1f5db0[_0x8517('0x50')]=_0x8517('0x51');_0x1f5db0[_0x8517('0x52')]=_0x3bdbb4[_0x8517('0x12')];_0x1f5db0[_0x8517('0x53')]=_0x3c8ecb[_0x8517('0x54')][_0x8517('0x12')];_0x1f5db0['UserId']=_0x3c8ecb['user']['id'];_0x1f5db0[_0x8517('0x51')]=!![];_0x1f5db0[_0x8517('0x55')]=moment()[_0x8517('0x56')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f5db0[_0x8517('0x57')]=_0x580af9[_0x8517('0x58')];_0x1f5db0[_0x8517('0x59')]=_0x580af9['VoiceQueueId']?'queue':_0x8517('0x5a');return db[_0x8517('0x5b')][_0x8517('0x44')]({'where':{'id':_0x1f5db0[_0x8517('0x5c')]},'attributes':[_0x8517('0x5d'),_0x8517('0x5e')]})[_0x8517('0xe')](function(_0x123504){if(!_[_0x8517('0x5f')](_0x6c2607)&&!_[_0x8517('0x5f')](_0x123504[_0x8517('0x5d')])){_0x1f5db0[_0x8517('0x60')]=_0x123504[_0x8517('0x5d')];if(!_[_0x8517('0x5f')](_0x123504[_0x8517('0x5e')])){_0x1f5db0[_0x8517('0x60')]+='\x20'+_0x123504['lastName'];}}})[_0x8517('0x61')](function(){return db[_0x8517('0x62')][_0x8517('0x45')](_0x1f5db0);});}})[_0x8517('0xe')](function(_0x1766a0){return db[_0x8517('0x63')][_0x8517('0x48')]({'where':{'CmHopperId':_0x282601}});})['then'](function(){return _0x6c2607[_0x8517('0xa')](0xcc)[_0x8517('0x64')]();})[_0x8517('0x3f')](handleError(_0x6c2607,null));};exports[_0x8517('0x65')]=function(_0x4240d0,_0x57dcb7){var _0x2437d4=[];return db['CmContact'][_0x8517('0x47')]()[_0x8517('0xe')](function(_0x4147cf){_0x2437d4=_[_0x8517('0x42')](_0x4147cf);return _0x4240d0[_0x8517('0x54')]['getVoiceQueues']({'where':{'type':_0x8517('0x66'),'dialActive':!![],'dialMethod':_0x8517('0x67')},'attributes':['id',_0x8517('0x68'),_0x8517('0x69')],'raw':!![]});})['then'](function(_0x4f4b32){if(_0x4f4b32&&_0x4f4b32[_0x8517('0x30')]){return db['sequelize'][_0x8517('0x6a')](function(_0x1c604c){var _0x4962d4={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x8517('0x56')](_0x8517('0x6b'))},'VoiceQueueId':{'$in':_['map'](_0x4f4b32,'id')},'$or':[{'UserId':null},{'UserId':_0x4240d0[_0x8517('0x54')]['id']}]};var _0x2b26f8={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4f4b32)[_0x8517('0x37')]([_0x8517('0x69'),0x0])[_0x8517('0x14')]('id')[_0x8517('0x6c')]()},'$or':[{'UserId':null},{'UserId':_0x4240d0[_0x8517('0x54')]['id']}]};var _0x3b58b7={'$or':[_0x4962d4,_0x2b26f8]};var _0x4cf0c8=[];if(_0x4240d0[_0x8517('0x46')][_0x8517('0x6d')]&&_0x4240d0[_0x8517('0x46')][_0x8517('0x6d')]==='prev'){if(!_[_0x8517('0x6e')](_0x4240d0['body'][_0x8517('0x6f')])){_0x3b58b7['id']={'$in':_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')]};}_0x4cf0c8=[[_0x8517('0x70'),'ASC'],['scheduledAt',_0x4f4b32[0x0][_0x8517('0x68')]===_0x8517('0x71')?_0x8517('0x72'):_0x8517('0x71')],db['sequelize'][_0x8517('0x73')](_0x8517('0x74')),['id',_0x8517('0x72')]];}else{if(!_[_0x8517('0x6e')](_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')])){_0x3b58b7['id']={'$notIn':_0x4240d0[_0x8517('0x46')][_0x8517('0x6f')]};}_0x4cf0c8=[[_0x8517('0x70'),_0x8517('0x72')],['scheduledAt',_0x4f4b32[0x0][_0x8517('0x68')]],db[_0x8517('0x75')][_0x8517('0x73')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x8517('0x71')]];}return db['CmHopper'][_0x8517('0x76')]({'attributes':['id',_0x8517('0x77'),'phone',_0x8517('0x78')],'where':_0x3b58b7,'order':_0x4cf0c8,'transaction':_0x1c604c,'lock':_0x1c604c[_0x8517('0x79')][_0x8517('0x7a')],'include':[{'model':db[_0x8517('0x5b')],'as':_0x8517('0x7b'),'attributes':_0x2437d4,'include':[{'model':db[_0x8517('0x7c')],'as':'Company','attributes':['id',_0x8517('0x12')]}]},{'model':db['CmList'],'as':_0x8517('0x7d'),'attributes':['id',_0x8517('0x12')]},{'model':db[_0x8517('0x4a')],'as':_0x8517('0x7e'),'attributes':['id','name',_0x8517('0x7f')]}]})[_0x8517('0xe')](function(_0x1a0b02){if(_0x1a0b02){return _0x1a0b02['update']({'UserId':_0x4240d0[_0x8517('0x54')]['id']},{'transaction':_0x1c604c});}});});}})[_0x8517('0xe')](handleEntityNotFound(_0x57dcb7,null))[_0x8517('0xe')](respondWithResult(_0x57dcb7,null))[_0x8517('0x3f')](handleError(_0x57dcb7,null));};exports[_0x8517('0x80')]=function(_0x13de00,_0x1e63d5,_0x495a38){var _0x402b34=[];var _0x533f23=_0x13de00['params']['id'];var _0x3d5687=_0x13de00[_0x8517('0x54')]['id'];return db[_0x8517('0x5b')]['describe']()[_0x8517('0xe')](function(_0x62f8a8){_0x402b34=_['keys'](_0x62f8a8);return db[_0x8517('0x75')]['transaction'](function(_0x57d29b){const _0x43986b={'id':_0x533f23};return db[_0x8517('0x3b')][_0x8517('0x76')]({'attributes':['id',_0x8517('0x77'),_0x8517('0x78')],'where':_0x43986b,'transaction':_0x57d29b,'lock':_0x57d29b['LOCK'][_0x8517('0x7a')],'include':[{'model':db[_0x8517('0x5b')],'as':'Contact','attributes':_0x402b34,'include':[{'model':db['CmCompany'],'as':_0x8517('0x81'),'attributes':['id',_0x8517('0x12')]}]},{'model':db[_0x8517('0x82')],'as':_0x8517('0x7d'),'attributes':['id',_0x8517('0x12')]},{'model':db[_0x8517('0x4a')],'as':'Queue','attributes':['id','name',_0x8517('0x7f')]}]})[_0x8517('0xe')](function(_0x5f53da){if(_0x5f53da){return _0x5f53da[_0x8517('0xd')]({'UserId':_0x3d5687},{'transaction':_0x57d29b});}});});})[_0x8517('0xe')](handleEntityNotFound(_0x1e63d5,null))['then'](respondWithResult(_0x1e63d5,null))[_0x8517('0x3f')](handleError(_0x1e63d5,null));};exports[_0x8517('0x83')]=function(_0x3c1b7e,_0x590a99){return _0x3c1b7e['user'][_0x8517('0x84')]({'where':{'type':_0x8517('0x66'),'dialActive':!![],'dialMethod':_0x8517('0x67')},'attributes':['id'],'raw':!![]})[_0x8517('0xe')](function(_0x8c1dce){if(_0x8c1dce&&_0x8c1dce['length']){return db[_0x8517('0x3b')][_0x8517('0x8')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x8517('0x6b'))},'VoiceQueueId':{'$in':_[_0x8517('0x14')](_0x8c1dce,'id')},'$or':[{'UserId':null},{'UserId':_0x3c1b7e[_0x8517('0x54')]['id']}]}});}return 0x0;})[_0x8517('0xe')](function(_0xdbc754){if(!_[_0x8517('0x5f')](_0xdbc754)&&_[_0x8517('0x85')](_0xdbc754)){return _0x590a99[_0x8517('0xa')](0xc8)[_0x8517('0x5')]({'contacts':_0xdbc754});}else{logger[_0x8517('0x10')](_0x8517('0x86'),_0x8517('0x83'),0x194,_0x8517('0x87'));_0x590a99[_0x8517('0xf')](0x194);}})[_0x8517('0x3f')](handleError(_0x590a99,null));};exports[_0x8517('0x88')]=function(_0x2985a0,_0x799502){var _0x3a9a21=shared['timezones'];var _0x1c271c=[];_[_0x8517('0x14')](_0x3a9a21,function(_0x41b3ea){_0x1c271c[_0x8517('0x89')]({'id':_0x41b3ea[_0x8517('0x12')],'name':_0x41b3ea[_0x8517('0x12')],'utcOffset':_0x41b3ea[_0x8517('0x8a')]});});return _0x799502['status'](0xc8)[_0x8517('0x5')]({'tz':_0x1c271c});};exports[_0x8517('0x8b')]=function(_0x38add4,_0x2e9ece){var _0x4762d3=shared[_0x8517('0x8c')];var _0x5bb8e9={};if(!_[_0x8517('0x5f')](_0x4762d3[_0x38add4[_0x8517('0x46')]['id']]))_0x5bb8e9=_0x4762d3[_0x38add4[_0x8517('0x46')]['id']];return _0x2e9ece[_0x8517('0xa')](0xc8)[_0x8517('0x5')](_0x5bb8e9);};