ebc7a24a1b34a18d08b82a66c606cc5fa201ab24
[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 _0x04de=['getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','update','then','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','filters','concat','$and','$gt','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$iLike','$notILike','$contains','fields','attributes','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','CmHopper','includeAll','findAll','rows','show','params','keys','include','find','create','body','catch','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','updatedAt','deleted','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','ContactId','firstName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','dialPreviewAutoRecallMe','length','sequelize','transaction','direction','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','isEmpty','priority','literal','findOne','scheduledat','recallme','LOCK','UPDATE','CmContact','CmCompany','Company','CmList','Queue','dialActive','getOpenContacts','getVoiceQueues','outbound','preview','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','push','utcOffset'];(function(_0x544960,_0x48b4df){var _0x15da05=function(_0x2dbb0d){while(--_0x2dbb0d){_0x544960['push'](_0x544960['shift']());}};_0x15da05(++_0x48b4df);}(_0x04de,0x107));var _0xe04d=function(_0x359246,_0xa686f){_0x359246=_0x359246-0x0;var _0xa4bc34=_0x04de[_0x359246];return _0xa4bc34;};'use strict';var moment=require(_0xe04d('0x0'));var _=require(_0xe04d('0x1'));var qs=require(_0xe04d('0x2'));var logger=require(_0xe04d('0x3'))(_0xe04d('0x4'));var shared=require(_0xe04d('0x5'));var db=require(_0xe04d('0x6'))['db'];function respondWithResult(_0x43c4b1,_0x2593a4){_0x2593a4=_0x2593a4||0xc8;return function(_0x70ead0){if(_0x70ead0){return _0x43c4b1[_0xe04d('0x7')](_0x2593a4)['json'](_0x70ead0);}};}function respondWithFilteredResult(_0x4bb925,_0x4f7637){return function(_0x531688){if(_0x531688){var _0x55efb5=typeof _0x4f7637[_0xe04d('0x8')]===_0xe04d('0x9')&&typeof _0x4f7637[_0xe04d('0xa')]===_0xe04d('0x9');var _0x2a1f43=_0x531688[_0xe04d('0xb')];var _0x433350=_0x55efb5?0x0:_0x4f7637['offset'];var _0x160d4f=_0x55efb5?_0x531688[_0xe04d('0xb')]:_0x4f7637[_0xe04d('0x8')]+_0x4f7637[_0xe04d('0xa')];var _0xad5c34;if(_0x160d4f>=_0x2a1f43){_0x160d4f=_0x2a1f43;_0xad5c34=0xc8;}else{_0xad5c34=0xce;}_0x4bb925[_0xe04d('0x7')](_0xad5c34);return _0x4bb925[_0xe04d('0xc')](_0xe04d('0xd'),_0x433350+'-'+_0x160d4f+'/'+_0x2a1f43)[_0xe04d('0xe')](_0x531688);}return null;};}function saveUpdates(_0x53f59a,_0x8bf2d2){return function(_0x1d3f03){if(_0x1d3f03){return _0x1d3f03[_0xe04d('0xf')](_0x53f59a)[_0xe04d('0x10')](function(_0x2f7f51){return _0x2f7f51;});}return null;};}function handleEntityNotFound(_0xa2521,_0xf205f5){return function(_0x143019){if(!_0x143019){_0xa2521[_0xe04d('0x11')](0x194);}return _0x143019;};}function handleError(_0x16b305,_0xbc5cc7){_0xbc5cc7=_0xbc5cc7||0x1f4;return function(_0x1aa69b){logger['error'](_0x1aa69b[_0xe04d('0x12')]);if(_0x1aa69b['name']){delete _0x1aa69b[_0xe04d('0x13')];}_0x16b305['status'](_0xbc5cc7)[_0xe04d('0x14')](_0x1aa69b);};}exports[_0xe04d('0x15')]=function(_0x4221aa,_0x93b107){var _0x4090e0={},_0x35a2b4={},_0x251772={'count':0x0,'rows':[]};var _0x399aa0=_[_0xe04d('0x16')](db['CmHopper'][_0xe04d('0x17')],function(_0x3e0fa9){return{'name':_0x3e0fa9[_0xe04d('0x18')],'type':_0x3e0fa9[_0xe04d('0x19')][_0xe04d('0x1a')]};});_0x35a2b4[_0xe04d('0x1b')]=_['map'](_0x399aa0,_0xe04d('0x13'));_0x35a2b4[_0xe04d('0x1c')]=_['keys'](_0x4221aa['query']);_0x35a2b4['filters']=_[_0xe04d('0x1d')](_0x35a2b4['model'],_0x35a2b4['query']);_0x35a2b4[_0xe04d('0x1e')]=_[_0xe04d('0x1f')](_0x35a2b4['filters'],[_0xe04d('0x20'),'$or',_0xe04d('0x21'),'$gte',_0xe04d('0x22'),_0xe04d('0x23'),_0xe04d('0x24'),_0xe04d('0x25'),_0xe04d('0x26'),'$between',_0xe04d('0x27'),_0xe04d('0x28'),_0xe04d('0x29'),_0xe04d('0x2a'),'$notLike',_0xe04d('0x2b'),_0xe04d('0x2c'),_0xe04d('0x2a'),'$overlap',_0xe04d('0x2d'),'$contained','$any']);_0x4090e0['attributes']=_[_0xe04d('0x1d')](_0x35a2b4[_0xe04d('0x1b')],qs['fields'](_0x4221aa['query'][_0xe04d('0x2e')]));_0x4090e0[_0xe04d('0x2f')]=_0x4090e0[_0xe04d('0x2f')]['length']?_0x4090e0[_0xe04d('0x2f')]:_0x35a2b4[_0xe04d('0x1b')];if(!_0x4221aa['query'][_0xe04d('0x30')]('nolimit')){_0x4090e0[_0xe04d('0xa')]=qs[_0xe04d('0xa')](_0x4221aa['query'][_0xe04d('0xa')]);_0x4090e0['offset']=qs[_0xe04d('0x8')](_0x4221aa[_0xe04d('0x1c')][_0xe04d('0x8')]);}_0x4090e0[_0xe04d('0x31')]=qs[_0xe04d('0x32')](_0x4221aa[_0xe04d('0x1c')][_0xe04d('0x32')]);_0x4090e0['where']=qs[_0xe04d('0x1e')](_[_0xe04d('0x33')](_0x4221aa[_0xe04d('0x1c')],_0x35a2b4[_0xe04d('0x1e')]),_0x399aa0);if(_0x4221aa[_0xe04d('0x1c')][_0xe04d('0x34')]){_0x4090e0[_0xe04d('0x35')]=_[_0xe04d('0x36')](_0x4090e0[_0xe04d('0x35')],{'$or':_['map'](_0x399aa0,function(_0x151057){if(_0x151057['type']!==_0xe04d('0x37')){var _0x547f56={};_0x547f56[_0x151057['name']]={'$like':'%'+_0x4221aa[_0xe04d('0x1c')][_0xe04d('0x34')]+'%'};return _0x547f56;}})});}_0x4090e0=_[_0xe04d('0x36')]({},_0x4090e0,_0x4221aa[_0xe04d('0x38')]);var _0x56e74d={'where':_0x4090e0[_0xe04d('0x35')]};return db[_0xe04d('0x39')][_0xe04d('0xb')](_0x56e74d)[_0xe04d('0x10')](function(_0x322228){_0x251772['count']=_0x322228;if(_0x4221aa['query'][_0xe04d('0x3a')]){_0x4090e0['include']=[{'all':!![]}];}return db['CmHopper'][_0xe04d('0x3b')](_0x4090e0);})[_0xe04d('0x10')](function(_0x3a7320){_0x251772[_0xe04d('0x3c')]=_0x3a7320;return _0x251772;})['then'](respondWithFilteredResult(_0x93b107,_0x4090e0))['catch'](handleError(_0x93b107,null));};exports[_0xe04d('0x3d')]=function(_0x164b3f,_0x8bb80a){var _0x148a1b={'raw':!![],'where':{'id':_0x164b3f[_0xe04d('0x3e')]['id']}},_0x3f215d={};_0x3f215d['model']=_[_0xe04d('0x3f')](db['CmHopper'][_0xe04d('0x17')]);_0x3f215d[_0xe04d('0x1c')]=_[_0xe04d('0x3f')](_0x164b3f[_0xe04d('0x1c')]);_0x3f215d[_0xe04d('0x1e')]=_[_0xe04d('0x1d')](_0x3f215d[_0xe04d('0x1b')],_0x3f215d[_0xe04d('0x1c')]);_0x148a1b['attributes']=_[_0xe04d('0x1d')](_0x3f215d[_0xe04d('0x1b')],qs['fields'](_0x164b3f[_0xe04d('0x1c')]['fields']));_0x148a1b[_0xe04d('0x2f')]=_0x148a1b[_0xe04d('0x2f')]['length']?_0x148a1b[_0xe04d('0x2f')]:_0x3f215d[_0xe04d('0x1b')];if(_0x164b3f[_0xe04d('0x1c')][_0xe04d('0x3a')]){_0x148a1b[_0xe04d('0x40')]=[{'all':!![]}];}_0x148a1b=_[_0xe04d('0x36')]({},_0x148a1b,_0x164b3f[_0xe04d('0x38')]);return db[_0xe04d('0x39')][_0xe04d('0x41')](_0x148a1b)['then'](handleEntityNotFound(_0x8bb80a,null))['then'](respondWithResult(_0x8bb80a,null))['catch'](handleError(_0x8bb80a,null));};exports[_0xe04d('0x42')]=function(_0x4bf286,_0x1868bb){return db[_0xe04d('0x39')][_0xe04d('0x42')](_0x4bf286[_0xe04d('0x43')],{})[_0xe04d('0x10')](respondWithResult(_0x1868bb,0xc9))[_0xe04d('0x44')](handleError(_0x1868bb,null));};exports['update']=function(_0x24d976,_0x3d20ac){if(_0x24d976['body']['id']){delete _0x24d976['body']['id'];}return db[_0xe04d('0x39')][_0xe04d('0x41')]({'where':{'id':_0x24d976['params']['id']}})[_0xe04d('0x10')](handleEntityNotFound(_0x3d20ac,null))['then'](saveUpdates(_0x24d976[_0xe04d('0x43')],null))[_0xe04d('0x10')](respondWithResult(_0x3d20ac,null))[_0xe04d('0x44')](handleError(_0x3d20ac,null));};exports[_0xe04d('0x45')]=function(_0xa9d536,_0x3ed027){return db[_0xe04d('0x39')][_0xe04d('0x45')]()[_0xe04d('0x10')](respondWithResult(_0x3ed027,null))[_0xe04d('0x44')](handleError(_0x3ed027,null));};exports['destroy']=function(_0x52f4c5,_0x35e4cb){var _0x4b8822;var _0x5c4e24=_0x52f4c5['params']['id'];return db[_0xe04d('0x39')][_0xe04d('0x41')]({'where':{'id':_0x52f4c5[_0xe04d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x35e4cb,null))['then'](function(_0x1b239a){if(_0x1b239a){return _0x1b239a[_0xe04d('0x46')]()['then'](function(_0x5a57d2){return _0x5a57d2;});}})[_0xe04d('0x10')](function(_0x5c6dda){_0x4b8822=_0x5c6dda;if(_0x5c6dda){if(_0x5c6dda[_0xe04d('0x47')]||_0x5c6dda[_0xe04d('0x48')]){return db[_0x5c6dda[_0xe04d('0x47')]?_0xe04d('0x49'):_0xe04d('0x4a')][_0xe04d('0x41')]({'where':{'id':_0x5c6dda[_0xe04d('0x47')]?_0x5c6dda[_0xe04d('0x47')]:_0x5c6dda['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})[_0xe04d('0x10')](function(_0x3fee58){var _0x3dd446={};if(_0x3fee58){_[_0xe04d('0x36')](_0x3dd446,_[_0xe04d('0x4b')](_0x4b8822['dataValues'],['createdAt',_0xe04d('0x4c'),'id']));_0x3dd446['state']=0x15;_0x3dd446['statedesc']=_0xe04d('0x4d');_0x3dd446['campaign']=_0x3fee58[_0xe04d('0x13')];_0x3dd446['membername']=_0x52f4c5[_0xe04d('0x4e')]['name'];_0x3dd446['UserId']=_0x52f4c5[_0xe04d('0x4e')]['id'];_0x3dd446[_0xe04d('0x4d')]=!![];_0x3dd446[_0xe04d('0x4f')]=moment()[_0xe04d('0x50')](_0xe04d('0x51'));_0x3dd446[_0xe04d('0x52')]=_0x4b8822[_0xe04d('0x53')];_0x3dd446[_0xe04d('0x54')]=_0x4b8822[_0xe04d('0x47')]?_0xe04d('0x55'):_0xe04d('0x56');return db['CmContact'][_0xe04d('0x41')]({'where':{'id':_0x3dd446[_0xe04d('0x57')]},'attributes':[_0xe04d('0x58'),'lastName']})[_0xe04d('0x10')](function(_0x48a753){if(!_[_0xe04d('0x59')](_0x35e4cb)&&!_[_0xe04d('0x59')](_0x48a753['firstName'])){_0x3dd446[_0xe04d('0x5a')]=_0x48a753[_0xe04d('0x58')];if(!_[_0xe04d('0x59')](_0x48a753['lastName'])){_0x3dd446[_0xe04d('0x5a')]+='\x20'+_0x48a753['lastName'];}}})[_0xe04d('0x5b')](function(){return db[_0xe04d('0x5c')][_0xe04d('0x42')](_0x3dd446);});}})[_0xe04d('0x10')](function(_0x5e6228){return db[_0xe04d('0x5d')]['destroy']({'where':{'CmHopperId':_0x5c4e24}});})[_0xe04d('0x10')](function(){return _0x35e4cb['status'](0xcc)[_0xe04d('0x5e')]();})[_0xe04d('0x44')](handleError(_0x35e4cb,null));};exports[_0xe04d('0x5f')]=function(_0x174143,_0x504fab){var _0x143909=[];return db['CmContact']['describe']()[_0xe04d('0x10')](function(_0x4195a1){_0x143909=_[_0xe04d('0x3f')](_0x4195a1);return _0x174143[_0xe04d('0x4e')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt',_0xe04d('0x60')],'raw':!![]});})[_0xe04d('0x10')](function(_0x4972d4){if(_0x4972d4&&_0x4972d4[_0xe04d('0x61')]){return db[_0xe04d('0x62')][_0xe04d('0x63')](function(_0x129397){var _0x45eda3={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xe04d('0x51'))},'VoiceQueueId':{'$in':_['map'](_0x4972d4,'id')},'$or':[{'UserId':null},{'UserId':_0x174143[_0xe04d('0x4e')]['id']}]};var _0x5870e3={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4972d4)[_0xe04d('0x34')]([_0xe04d('0x60'),0x0])[_0xe04d('0x16')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x174143[_0xe04d('0x4e')]['id']}]};var _0x2434b4={'$or':[_0x45eda3,_0x5870e3]};var _0x143940=[];if(_0x174143[_0xe04d('0x43')][_0xe04d('0x64')]&&_0x174143[_0xe04d('0x43')][_0xe04d('0x64')]==='prev'){if(!_['isEmpty'](_0x174143[_0xe04d('0x43')][_0xe04d('0x65')])){_0x2434b4['id']={'$in':_0x174143[_0xe04d('0x43')][_0xe04d('0x65')]};}_0x143940=[['priority',_0xe04d('0x66')],[_0xe04d('0x67'),_0x4972d4[0x0][_0xe04d('0x68')]===_0xe04d('0x66')?'DESC':_0xe04d('0x66')],db[_0xe04d('0x62')]['literal'](_0xe04d('0x69')),['id',_0xe04d('0x6a')]];}else{if(!_[_0xe04d('0x6b')](_0x174143['body'][_0xe04d('0x65')])){_0x2434b4['id']={'$notIn':_0x174143[_0xe04d('0x43')][_0xe04d('0x65')]};}_0x143940=[[_0xe04d('0x6c'),_0xe04d('0x6a')],[_0xe04d('0x67'),_0x4972d4[0x0][_0xe04d('0x68')]],db[_0xe04d('0x62')][_0xe04d('0x6d')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xe04d('0x66')]];}return db[_0xe04d('0x39')][_0xe04d('0x6e')]({'attributes':['id',_0xe04d('0x6f'),_0xe04d('0x53'),_0xe04d('0x70')],'where':_0x2434b4,'order':_0x143940,'transaction':_0x129397,'lock':_0x129397[_0xe04d('0x71')][_0xe04d('0x72')],'include':[{'model':db[_0xe04d('0x73')],'as':'Contact','attributes':_0x143909,'include':[{'model':db[_0xe04d('0x74')],'as':_0xe04d('0x75'),'attributes':['id','name']}]},{'model':db[_0xe04d('0x76')],'as':'List','attributes':['id','name']},{'model':db[_0xe04d('0x49')],'as':_0xe04d('0x77'),'attributes':['id',_0xe04d('0x13'),_0xe04d('0x78')]}]})[_0xe04d('0x10')](function(_0x5416f7){if(_0x5416f7){return _0x5416f7[_0xe04d('0xf')]({'UserId':_0x174143[_0xe04d('0x4e')]['id']},{'transaction':_0x129397});}});});}})['then'](handleEntityNotFound(_0x504fab,null))[_0xe04d('0x10')](respondWithResult(_0x504fab,null))['catch'](handleError(_0x504fab,null));};exports['getPreviewRecall']=function(_0x5f222e,_0x3370bf,_0x5a6d0d){var _0x18c3dc=[];var _0x58199f=_0x5f222e[_0xe04d('0x3e')]['id'];var _0x1d075e=_0x5f222e['user']['id'];return db[_0xe04d('0x73')]['describe']()[_0xe04d('0x10')](function(_0x5e2199){_0x18c3dc=_[_0xe04d('0x3f')](_0x5e2199);return db[_0xe04d('0x62')][_0xe04d('0x63')](function(_0x2a22c3){const _0xf49816={'id':_0x58199f};return db[_0xe04d('0x39')][_0xe04d('0x6e')]({'attributes':['id','scheduledat',_0xe04d('0x70')],'where':_0xf49816,'transaction':_0x2a22c3,'lock':_0x2a22c3['LOCK'][_0xe04d('0x72')],'include':[{'model':db[_0xe04d('0x73')],'as':'Contact','attributes':_0x18c3dc,'include':[{'model':db[_0xe04d('0x74')],'as':_0xe04d('0x75'),'attributes':['id',_0xe04d('0x13')]}]},{'model':db[_0xe04d('0x76')],'as':'List','attributes':['id',_0xe04d('0x13')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0xe04d('0x13'),_0xe04d('0x78')]}]})[_0xe04d('0x10')](function(_0x2b68ad){if(_0x2b68ad){return _0x2b68ad[_0xe04d('0xf')]({'UserId':_0x1d075e},{'transaction':_0x2a22c3});}});});})[_0xe04d('0x10')](handleEntityNotFound(_0x3370bf,null))[_0xe04d('0x10')](respondWithResult(_0x3370bf,null))['catch'](handleError(_0x3370bf,null));};exports[_0xe04d('0x79')]=function(_0xc6d30e,_0x3727fe){return _0xc6d30e[_0xe04d('0x4e')][_0xe04d('0x7a')]({'where':{'type':_0xe04d('0x7b'),'dialActive':!![],'dialMethod':_0xe04d('0x7c')},'attributes':['id'],'raw':!![]})[_0xe04d('0x10')](function(_0x20cf56){if(_0x20cf56&&_0x20cf56[_0xe04d('0x61')]){return db[_0xe04d('0x39')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xe04d('0x50')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xe04d('0x16')](_0x20cf56,'id')},'$or':[{'UserId':null},{'UserId':_0xc6d30e[_0xe04d('0x4e')]['id']}]}});}return 0x0;})[_0xe04d('0x10')](function(_0x40e0a9){if(!_[_0xe04d('0x59')](_0x40e0a9)&&_['isNumber'](_0x40e0a9)){return _0x3727fe['status'](0xc8)['json']({'contacts':_0x40e0a9});}else{logger['error'](_0xe04d('0x7d'),'getOpenContacts',0x194,_0xe04d('0x7e'));_0x3727fe['sendStatus'](0x194);}})[_0xe04d('0x44')](handleError(_0x3727fe,null));};exports[_0xe04d('0x7f')]=function(_0x5c5a07,_0x1afeeb){var _0xbc81af=shared['timezones'];var _0x5cec62=[];_['map'](_0xbc81af,function(_0x4ea198){_0x5cec62[_0xe04d('0x80')]({'id':_0x4ea198[_0xe04d('0x13')],'name':_0x4ea198['name'],'utcOffset':_0x4ea198[_0xe04d('0x81')]});});return _0x1afeeb[_0xe04d('0x7')](0xc8)[_0xe04d('0xe')]({'tz':_0x5cec62});};exports[_0xe04d('0x82')]=function(_0x36d086,_0x4676d7){var _0x1140ec=shared['timezones'];var _0x770284={};if(!_['isNil'](_0x1140ec[_0x36d086['body']['id']]))_0x770284=_0x1140ec[_0x36d086[_0xe04d('0x43')]['id']];return _0x4676d7[_0xe04d('0x7')](0xc8)[_0xe04d('0xe')](_0x770284);};