361feb5490cd91ae0f9262eecf9e871c479410a9
[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 _0x51a8=['$in','$notIn','$notLike','$iLike','$notILike','$overlap','$contains','$contained','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','options','find','create','body','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','format','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','findOne','recallme','UPDATE','Contact','CmCompany','Company','CmList','List','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','map','CmHopper','rawAttributes','model','query','keys','filters','intersection','concat','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween'];(function(_0x1c7b4c,_0x5b85b2){var _0x18daf6=function(_0xbe824e){while(--_0xbe824e){_0x1c7b4c['push'](_0x1c7b4c['shift']());}};_0x18daf6(++_0x5b85b2);}(_0x51a8,0xec));var _0x851a=function(_0x1ca08a,_0x1b845e){_0x1ca08a=_0x1ca08a-0x0;var _0x15c998=_0x51a8[_0x1ca08a];return _0x15c998;};'use strict';var emlformat=require(_0x851a('0x0'));var rimraf=require(_0x851a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x851a('0x2'));var rp=require('request-promise');var moment=require(_0x851a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x851a('0x4'));var util=require(_0x851a('0x5'));var path=require(_0x851a('0x6'));var sox=require(_0x851a('0x7'));var csv=require(_0x851a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x851a('0x9'));var _=require(_0x851a('0xa'));var squel=require(_0x851a('0xb'));var crypto=require(_0x851a('0xc'));var jsforce=require(_0x851a('0xd'));var deskjs=require(_0x851a('0xe'));var toCsv=require(_0x851a('0x8'));var querystring=require(_0x851a('0xf'));var Papa=require(_0x851a('0x10'));var Redis=require('ioredis');var authService=require(_0x851a('0x11'));var qs=require(_0x851a('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x851a('0x13'));var logger=require(_0x851a('0x14'))(_0x851a('0x15'));var utils=require(_0x851a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x851a('0x17'));var db=require(_0x851a('0x18'))['db'];function respondWithStatusCode(_0x321827,_0x171db9){_0x171db9=_0x171db9||0xcc;return function(_0x3ef339){if(_0x3ef339){return _0x321827[_0x851a('0x19')](_0x171db9);}return _0x321827[_0x851a('0x1a')](_0x171db9)[_0x851a('0x1b')]();};}function respondWithResult(_0x70496b,_0x415cb4){_0x415cb4=_0x415cb4||0xc8;return function(_0x3e9dd9){if(_0x3e9dd9){return _0x70496b[_0x851a('0x1a')](_0x415cb4)[_0x851a('0x1c')](_0x3e9dd9);}};}function respondWithFilteredResult(_0x38f441,_0x3b4df8){return function(_0x1f3688){if(_0x1f3688){var _0x12ef90=typeof _0x3b4df8[_0x851a('0x1d')]===_0x851a('0x1e')&&typeof _0x3b4df8[_0x851a('0x1f')]===_0x851a('0x1e');var _0x3366bc=_0x1f3688['count'];var _0x53b4ce=_0x12ef90?0x0:_0x3b4df8[_0x851a('0x1d')];var _0x4c9d2f=_0x12ef90?_0x1f3688[_0x851a('0x20')]:_0x3b4df8[_0x851a('0x1d')]+_0x3b4df8['limit'];var _0x21e65b;if(_0x4c9d2f>=_0x3366bc){_0x4c9d2f=_0x3366bc;_0x21e65b=0xc8;}else{_0x21e65b=0xce;}_0x38f441[_0x851a('0x1a')](_0x21e65b);return _0x38f441[_0x851a('0x21')](_0x851a('0x22'),_0x53b4ce+'-'+_0x4c9d2f+'/'+_0x3366bc)[_0x851a('0x1c')](_0x1f3688);}return null;};}function patchUpdates(_0x12f97d){return function(_0x3f030f){try{jsonpatch[_0x851a('0x23')](_0x3f030f,_0x12f97d,!![]);}catch(_0x1f8a9f){return BPromise[_0x851a('0x24')](_0x1f8a9f);}return _0x3f030f['save']();};}function saveUpdates(_0x1c31b8,_0x1f2565){return function(_0x215334){if(_0x215334){return _0x215334[_0x851a('0x25')](_0x1c31b8)['then'](function(_0x571909){return _0x571909;});}return null;};}function removeEntity(_0x3786b0,_0x52d153){return function(_0x343165){if(_0x343165){return _0x343165[_0x851a('0x26')]()[_0x851a('0x27')](function(){_0x3786b0[_0x851a('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ff49c,_0x182598){return function(_0x249e50){if(!_0x249e50){_0x4ff49c['sendStatus'](0x194);}return _0x249e50;};}function handleError(_0x5d02e6,_0x8798fa){_0x8798fa=_0x8798fa||0x1f4;return function(_0x4075bc){logger[_0x851a('0x28')](_0x4075bc[_0x851a('0x29')]);if(_0x4075bc[_0x851a('0x2a')]){delete _0x4075bc['name'];}_0x5d02e6['status'](_0x8798fa)['send'](_0x4075bc);};}exports['index']=function(_0x271940,_0x2865d2){var _0x40b141={},_0x40b809={},_0x32c779={'count':0x0,'rows':[]};var _0x3f35d0=_[_0x851a('0x2b')](db[_0x851a('0x2c')][_0x851a('0x2d')],function(_0x4d2d5c){return{'name':_0x4d2d5c['fieldName'],'type':_0x4d2d5c['type']['key']};});_0x40b809[_0x851a('0x2e')]=_['map'](_0x3f35d0,_0x851a('0x2a'));_0x40b809[_0x851a('0x2f')]=_[_0x851a('0x30')](_0x271940[_0x851a('0x2f')]);_0x40b809[_0x851a('0x31')]=_[_0x851a('0x32')](_0x40b809['model'],_0x40b809[_0x851a('0x2f')]);_0x40b809[_0x851a('0x31')]=_[_0x851a('0x33')](_0x40b809['filters'],['$and','$or',_0x851a('0x34'),_0x851a('0x35'),_0x851a('0x36'),_0x851a('0x37'),_0x851a('0x38'),_0x851a('0x39'),'$not',_0x851a('0x3a'),_0x851a('0x3b'),_0x851a('0x3c'),_0x851a('0x3d'),'$like',_0x851a('0x3e'),_0x851a('0x3f'),_0x851a('0x40'),'$like',_0x851a('0x41'),_0x851a('0x42'),_0x851a('0x43'),'$any']);_0x40b141['attributes']=_[_0x851a('0x32')](_0x40b809[_0x851a('0x2e')],qs[_0x851a('0x44')](_0x271940['query'][_0x851a('0x44')]));_0x40b141[_0x851a('0x45')]=_0x40b141[_0x851a('0x45')][_0x851a('0x46')]?_0x40b141[_0x851a('0x45')]:_0x40b809['model'];if(!_0x271940[_0x851a('0x2f')][_0x851a('0x47')](_0x851a('0x48'))){_0x40b141[_0x851a('0x1f')]=qs[_0x851a('0x1f')](_0x271940[_0x851a('0x2f')]['limit']);_0x40b141['offset']=qs[_0x851a('0x1d')](_0x271940['query']['offset']);}_0x40b141[_0x851a('0x49')]=qs[_0x851a('0x4a')](_0x271940[_0x851a('0x2f')][_0x851a('0x4a')]);_0x40b141[_0x851a('0x4b')]=qs['filters'](_['pick'](_0x271940[_0x851a('0x2f')],_0x40b809[_0x851a('0x31')]),_0x3f35d0);if(_0x271940[_0x851a('0x2f')][_0x851a('0x4c')]){_0x40b141['where']=_[_0x851a('0x4d')](_0x40b141[_0x851a('0x4b')],{'$or':_[_0x851a('0x2b')](_0x3f35d0,function(_0x4e8663){if(_0x4e8663['type']!==_0x851a('0x4e')){var _0x1ffd06={};_0x1ffd06[_0x4e8663[_0x851a('0x2a')]]={'$like':'%'+_0x271940[_0x851a('0x2f')][_0x851a('0x4c')]+'%'};return _0x1ffd06;}})});}_0x40b141=_['merge']({},_0x40b141,_0x271940['options']);var _0xc1de2a={'where':_0x40b141[_0x851a('0x4b')]};return db[_0x851a('0x2c')][_0x851a('0x20')](_0xc1de2a)['then'](function(_0x111722){_0x32c779[_0x851a('0x20')]=_0x111722;if(_0x271940['query'][_0x851a('0x4f')]){_0x40b141[_0x851a('0x50')]=[{'all':!![]}];}return db[_0x851a('0x2c')][_0x851a('0x51')](_0x40b141);})[_0x851a('0x27')](function(_0x53a8cf){_0x32c779['rows']=_0x53a8cf;return _0x32c779;})[_0x851a('0x27')](respondWithFilteredResult(_0x2865d2,_0x40b141))[_0x851a('0x52')](handleError(_0x2865d2,null));};exports[_0x851a('0x53')]=function(_0x3fe601,_0x268b53){var _0x402184={'raw':!![],'where':{'id':_0x3fe601[_0x851a('0x54')]['id']}},_0x16088c={};_0x16088c[_0x851a('0x2e')]=_[_0x851a('0x30')](db[_0x851a('0x2c')]['rawAttributes']);_0x16088c[_0x851a('0x2f')]=_[_0x851a('0x30')](_0x3fe601[_0x851a('0x2f')]);_0x16088c[_0x851a('0x31')]=_['intersection'](_0x16088c[_0x851a('0x2e')],_0x16088c['query']);_0x402184[_0x851a('0x45')]=_['intersection'](_0x16088c[_0x851a('0x2e')],qs[_0x851a('0x44')](_0x3fe601[_0x851a('0x2f')][_0x851a('0x44')]));_0x402184[_0x851a('0x45')]=_0x402184[_0x851a('0x45')][_0x851a('0x46')]?_0x402184['attributes']:_0x16088c['model'];if(_0x3fe601[_0x851a('0x2f')][_0x851a('0x4f')]){_0x402184['include']=[{'all':!![]}];}_0x402184=_[_0x851a('0x4d')]({},_0x402184,_0x3fe601[_0x851a('0x55')]);return db[_0x851a('0x2c')][_0x851a('0x56')](_0x402184)[_0x851a('0x27')](handleEntityNotFound(_0x268b53,null))[_0x851a('0x27')](respondWithResult(_0x268b53,null))[_0x851a('0x52')](handleError(_0x268b53,null));};exports['create']=function(_0x1bab23,_0x3fe96c){return db[_0x851a('0x2c')][_0x851a('0x57')](_0x1bab23['body'],{})[_0x851a('0x27')](respondWithResult(_0x3fe96c,0xc9))[_0x851a('0x52')](handleError(_0x3fe96c,null));};exports['update']=function(_0xc98bcd,_0x216559){if(_0xc98bcd[_0x851a('0x58')]['id']){delete _0xc98bcd['body']['id'];}return db[_0x851a('0x2c')][_0x851a('0x56')]({'where':{'id':_0xc98bcd[_0x851a('0x54')]['id']}})['then'](handleEntityNotFound(_0x216559,null))[_0x851a('0x27')](saveUpdates(_0xc98bcd[_0x851a('0x58')],null))['then'](respondWithResult(_0x216559,null))['catch'](handleError(_0x216559,null));};exports[_0x851a('0x59')]=function(_0x122ba1,_0x11c41d){return db[_0x851a('0x2c')]['describe']()[_0x851a('0x27')](respondWithResult(_0x11c41d,null))['catch'](handleError(_0x11c41d,null));};exports[_0x851a('0x26')]=function(_0x4db34a,_0x1a9bde){var _0x3d7409;return db[_0x851a('0x2c')][_0x851a('0x56')]({'where':{'id':_0x4db34a['params']['id']}})['then'](handleEntityNotFound(_0x1a9bde,null))['then'](function(_0x4a81f0){if(_0x4a81f0){return _0x4a81f0[_0x851a('0x26')]()[_0x851a('0x27')](function(_0x36e3a0){return _0x36e3a0;});}})[_0x851a('0x27')](function(_0x375ecf){_0x3d7409=_0x375ecf;if(_0x375ecf){if(_0x375ecf[_0x851a('0x5a')]||_0x375ecf['CampaignId']){return db[_0x375ecf[_0x851a('0x5a')]?_0x851a('0x5b'):_0x851a('0x5c')][_0x851a('0x56')]({'where':{'id':_0x375ecf['VoiceQueueId']?_0x375ecf['VoiceQueueId']:_0x375ecf[_0x851a('0x5d')]},'attributes':['id','name'],'raw':!![]});}}})['then'](function(_0x587c8d){var _0x6568e={};if(_0x587c8d){_[_0x851a('0x4d')](_0x6568e,_[_0x851a('0x5e')](_0x3d7409[_0x851a('0x5f')],[_0x851a('0x60'),_0x851a('0x61'),'id']));_0x6568e[_0x851a('0x62')]=0x15;_0x6568e[_0x851a('0x63')]=_0x851a('0x64');_0x6568e[_0x851a('0x65')]=_0x587c8d['name'];_0x6568e[_0x851a('0x66')]=_0x4db34a[_0x851a('0x67')][_0x851a('0x2a')];_0x6568e['UserId']=_0x4db34a['user']['id'];_0x6568e[_0x851a('0x64')]=!![];_0x6568e[_0x851a('0x68')]=moment()['format'](_0x851a('0x69'));_0x6568e['calleridnum']=_0x3d7409[_0x851a('0x6a')];_0x6568e[_0x851a('0x6b')]=_0x3d7409['VoiceQueueId']?_0x851a('0x6c'):_0x851a('0x6d');return db[_0x851a('0x6e')][_0x851a('0x56')]({'where':{'id':_0x6568e[_0x851a('0x6f')]},'attributes':[_0x851a('0x70'),'lastName']})['then'](function(_0x37690a){if(!_[_0x851a('0x71')](_0x1a9bde)&&!_[_0x851a('0x71')](_0x37690a[_0x851a('0x70')])){_0x6568e[_0x851a('0x72')]=_0x37690a[_0x851a('0x70')];if(!_[_0x851a('0x71')](_0x37690a[_0x851a('0x73')])){_0x6568e['calleridname']+='\x20'+_0x37690a[_0x851a('0x73')];}}})[_0x851a('0x74')](function(){return db[_0x851a('0x75')][_0x851a('0x57')](_0x6568e);});}})[_0x851a('0x27')](function(){return _0x1a9bde[_0x851a('0x1a')](0xcc)[_0x851a('0x1b')]();})[_0x851a('0x52')](handleError(_0x1a9bde,null));};exports[_0x851a('0x76')]=function(_0x362c59,_0x5e0497,_0x28b850){var _0x3507db=[];return db[_0x851a('0x6e')][_0x851a('0x59')]()['then'](function(_0x395bdf){_0x3507db=_[_0x851a('0x30')](_0x395bdf);return _0x362c59[_0x851a('0x67')][_0x851a('0x77')]({'where':{'type':_0x851a('0x78'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x851a('0x79'),_0x851a('0x7a')],'raw':!![]});})[_0x851a('0x27')](function(_0x313723){if(_0x313723&&_0x313723['length']){return db[_0x851a('0x7b')]['transaction'](function(_0x52a249){var _0x3c463f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x851a('0x7c')](_0x851a('0x69'))},'VoiceQueueId':{'$in':_['map'](_0x313723,'id')},'$or':[{'UserId':null},{'UserId':_0x362c59[_0x851a('0x67')]['id']}]};var _0x2727cd={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x313723)[_0x851a('0x4c')]([_0x851a('0x7a'),0x0])[_0x851a('0x2b')]('id')[_0x851a('0x7d')]()},'$or':[{'UserId':null},{'UserId':_0x362c59['user']['id']}]};var _0x3e7a17={'$or':[_0x3c463f,_0x2727cd]};var _0x3c8377=[];if(_0x362c59[_0x851a('0x58')][_0x851a('0x7e')]&&_0x362c59['body'][_0x851a('0x7e')]===_0x851a('0x7f')){if(!_[_0x851a('0x80')](_0x362c59[_0x851a('0x58')][_0x851a('0x81')])){_0x3e7a17['id']={'$in':_0x362c59['body'][_0x851a('0x81')]};}_0x3c8377=[[_0x851a('0x82'),_0x851a('0x83')],[_0x851a('0x84'),_0x313723[0x0][_0x851a('0x79')]===_0x851a('0x83')?_0x851a('0x85'):_0x851a('0x83')],db[_0x851a('0x7b')]['literal'](_0x851a('0x86')),['id','DESC']];}else{if(!_['isEmpty'](_0x362c59['body'][_0x851a('0x81')])){_0x3e7a17['id']={'$notIn':_0x362c59[_0x851a('0x58')][_0x851a('0x81')]};}_0x3c8377=[[_0x851a('0x82'),_0x851a('0x85')],['scheduledAt',_0x313723[0x0][_0x851a('0x79')]],db[_0x851a('0x7b')][_0x851a('0x87')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x851a('0x83')]];}return db[_0x851a('0x2c')][_0x851a('0x88')]({'attributes':['id','scheduledat',_0x851a('0x89')],'where':_0x3e7a17,'order':_0x3c8377,'transaction':_0x52a249,'lock':_0x52a249['LOCK'][_0x851a('0x8a')],'include':[{'model':db[_0x851a('0x6e')],'as':_0x851a('0x8b'),'attributes':_0x3507db,'include':[{'model':db[_0x851a('0x8c')],'as':_0x851a('0x8d'),'attributes':['id',_0x851a('0x2a')]}]},{'model':db[_0x851a('0x8e')],'as':_0x851a('0x8f'),'attributes':['id',_0x851a('0x2a')]},{'model':db[_0x851a('0x5b')],'as':'Queue','attributes':['id',_0x851a('0x2a'),_0x851a('0x90')]}]})[_0x851a('0x27')](function(_0x469918){if(_0x469918){return _0x469918[_0x851a('0x25')]({'UserId':_0x362c59['user']['id']},{'transaction':_0x52a249});}});});}})['then'](handleEntityNotFound(_0x5e0497,null))['then'](respondWithResult(_0x5e0497,null))['catch'](handleError(_0x5e0497,null));};exports[_0x851a('0x91')]=function(_0x4543f5,_0x5e335a,_0x2a6ed4){return _0x4543f5[_0x851a('0x67')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x851a('0x27')](function(_0x50ff2d){if(_0x50ff2d&&_0x50ff2d['length']){return db[_0x851a('0x2c')][_0x851a('0x20')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x851a('0x69'))},'VoiceQueueId':{'$in':_['map'](_0x50ff2d,'id')},'$or':[{'UserId':null},{'UserId':_0x4543f5[_0x851a('0x67')]['id']}]}});}return 0x0;})[_0x851a('0x27')](function(_0x32c995){if(!_[_0x851a('0x71')](_0x32c995)&&_[_0x851a('0x92')](_0x32c995)){return _0x5e335a[_0x851a('0x1a')](0xc8)[_0x851a('0x1c')]({'contacts':_0x32c995});}else{logger[_0x851a('0x28')](_0x851a('0x93'),_0x851a('0x91'),0x194,'entity\x20not\x20found');_0x5e335a['sendStatus'](0x194);}})['catch'](handleError(_0x5e335a,null));};