ddad4ffd0f7b37d6c26af55613552baae3664bce
[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 _0x025d=['UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getOpenContacts','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','json','count','offset','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','type','key','model','query','filters','intersection','concat','$and','$or','$gte','$lt','$lte','$eq','$not','$notBetween','$in','$notIn','$iLike','$notILike','$like','$contains','$contained','$any','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','describe','CampaignId','VoiceQueueId','VoiceQueue','createdAt','updatedAt','state','statedesc','deleted','campaign','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','isEmpty','ASC','scheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','hopperIds','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat'];(function(_0x2d2a33,_0x2d1d1f){var _0x32d8ba=function(_0x566914){while(--_0x566914){_0x2d2a33['push'](_0x2d2a33['shift']());}};_0x32d8ba(++_0x2d1d1f);}(_0x025d,0x12b));var _0xd025=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x025d[_0x20a584];return _0x4b41a8;};'use strict';var pdf=require(_0xd025('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd025('0x1'));var rp=require(_0xd025('0x2'));var moment=require('moment');var BPromise=require(_0xd025('0x3'));var Mustache=require('mustache');var util=require(_0xd025('0x4'));var path=require(_0xd025('0x5'));var sox=require('sox');var csv=require(_0xd025('0x6'));var ejs=require(_0xd025('0x7'));var fs=require('fs');var _=require(_0xd025('0x8'));var squel=require('squel');var crypto=require(_0xd025('0x9'));var jsforce=require(_0xd025('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xd025('0x6'));var querystring=require(_0xd025('0xb'));var Papa=require('papaparse');var Redis=require(_0xd025('0xc'));var authService=require(_0xd025('0xd'));var qs=require(_0xd025('0xe'));var as=require(_0xd025('0xf'));var hardwareService=require(_0xd025('0x10'));var logger=require('../../config/logger')(_0xd025('0x11'));var utils=require(_0xd025('0x12'));var config=require(_0xd025('0x13'));var db=require(_0xd025('0x14'))['db'];function respondWithStatusCode(_0x213c7e,_0x1ee9a0){_0x1ee9a0=_0x1ee9a0||0xcc;return function(_0x5ca2ac){if(_0x5ca2ac){return _0x213c7e['sendStatus'](_0x1ee9a0);}return _0x213c7e[_0xd025('0x15')](_0x1ee9a0)['end']();};}function respondWithResult(_0xa1064a,_0x3ad798){_0x3ad798=_0x3ad798||0xc8;return function(_0x2ffb8c){if(_0x2ffb8c){return _0xa1064a[_0xd025('0x15')](_0x3ad798)[_0xd025('0x16')](_0x2ffb8c);}};}function respondWithFilteredResult(_0x3a898e,_0x1a2a96){return function(_0x1a1c32){if(_0x1a1c32){var _0x1f0dbf=_0x1a1c32[_0xd025('0x17')],_0x1e1247=_0x1a2a96[_0xd025('0x18')],_0x1058f6=_0x1a2a96[_0xd025('0x18')]+_0x1a2a96[_0xd025('0x19')],_0x3609c2;if(_0x1058f6>=_0x1f0dbf){_0x1058f6=_0x1f0dbf;_0x3609c2=0xc8;}else{_0x3609c2=0xce;}_0x3a898e[_0xd025('0x15')](_0x3609c2);return _0x3a898e[_0xd025('0x1a')](_0xd025('0x1b'),_0x1e1247+'-'+_0x1058f6+'/'+_0x1f0dbf)[_0xd025('0x16')](_0x1a1c32);}return null;};}function patchUpdates(_0x3571d4){return function(_0x365414){try{jsonpatch[_0xd025('0x1c')](_0x365414,_0x3571d4,!![]);}catch(_0x548496){return BPromise[_0xd025('0x1d')](_0x548496);}return _0x365414['save']();};}function saveUpdates(_0x36c31e,_0x52ac7d){return function(_0x11b6fb){if(_0x11b6fb){return _0x11b6fb[_0xd025('0x1e')](_0x36c31e)['then'](function(_0x573e96){return _0x573e96;});}return null;};}function removeEntity(_0x35f74a,_0x2883c5){return function(_0x512770){if(_0x512770){return _0x512770[_0xd025('0x1f')]()['then'](function(){_0x35f74a[_0xd025('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27a622,_0x260d50){return function(_0x4eef42){if(!_0x4eef42){_0x27a622[_0xd025('0x20')](0x194);}return _0x4eef42;};}function handleError(_0x53609b,_0x51aec9){_0x51aec9=_0x51aec9||0x1f4;return function(_0x4abebf){logger[_0xd025('0x21')](_0x4abebf[_0xd025('0x22')]);if(_0x4abebf[_0xd025('0x23')]){delete _0x4abebf[_0xd025('0x23')];}_0x53609b['status'](_0x51aec9)[_0xd025('0x24')](_0x4abebf);};}exports[_0xd025('0x25')]=function(_0x1cc8e5,_0x35e21f){var _0x3a4cc4={},_0x3ba0dc={},_0x16b967={'count':0x0,'rows':[]};var _0x49e123=_[_0xd025('0x26')](db[_0xd025('0x27')][_0xd025('0x28')],function(_0x149c51){return{'name':_0x149c51['fieldName'],'type':_0x149c51[_0xd025('0x29')][_0xd025('0x2a')]};});_0x3ba0dc[_0xd025('0x2b')]=_[_0xd025('0x26')](_0x49e123,_0xd025('0x23'));_0x3ba0dc[_0xd025('0x2c')]=_['keys'](_0x1cc8e5[_0xd025('0x2c')]);_0x3ba0dc[_0xd025('0x2d')]=_[_0xd025('0x2e')](_0x3ba0dc[_0xd025('0x2b')],_0x3ba0dc['query']);_0x3ba0dc['filters']=_[_0xd025('0x2f')](_0x3ba0dc[_0xd025('0x2d')],[_0xd025('0x30'),_0xd025('0x31'),'$gt',_0xd025('0x32'),_0xd025('0x33'),_0xd025('0x34'),'$ne',_0xd025('0x35'),_0xd025('0x36'),'$between',_0xd025('0x37'),_0xd025('0x38'),_0xd025('0x39'),'$like','$notLike',_0xd025('0x3a'),_0xd025('0x3b'),_0xd025('0x3c'),'$overlap',_0xd025('0x3d'),_0xd025('0x3e'),_0xd025('0x3f')]);_0x3a4cc4['attributes']=_['intersection'](_0x3ba0dc['model'],qs['fields'](_0x1cc8e5[_0xd025('0x2c')][_0xd025('0x40')]));_0x3a4cc4[_0xd025('0x41')]=_0x3a4cc4['attributes'][_0xd025('0x42')]?_0x3a4cc4[_0xd025('0x41')]:_0x3ba0dc[_0xd025('0x2b')];if(!_0x1cc8e5['query'][_0xd025('0x43')](_0xd025('0x44'))){_0x3a4cc4['limit']=qs[_0xd025('0x19')](_0x1cc8e5[_0xd025('0x2c')][_0xd025('0x19')]);_0x3a4cc4['offset']=qs['offset'](_0x1cc8e5['query']['offset']);}_0x3a4cc4['order']=qs[_0xd025('0x45')](_0x1cc8e5[_0xd025('0x2c')]['sort']);_0x3a4cc4[_0xd025('0x46')]=qs['filters'](_['pick'](_0x1cc8e5[_0xd025('0x2c')],_0x3ba0dc[_0xd025('0x2d')]),_0x49e123);if(_0x1cc8e5['query'][_0xd025('0x47')]){_0x3a4cc4['where']=_[_0xd025('0x48')](_0x3a4cc4[_0xd025('0x46')],{'$or':_['map'](_0x49e123,function(_0x57754e){if(_0x57754e[_0xd025('0x29')]!==_0xd025('0x49')){var _0x55eff7={};_0x55eff7[_0x57754e[_0xd025('0x23')]]={'$like':'%'+_0x1cc8e5['query'][_0xd025('0x47')]+'%'};return _0x55eff7;}})});}_0x3a4cc4=_['merge']({},_0x3a4cc4,_0x1cc8e5[_0xd025('0x4a')]);var _0x3c327c={'where':_0x3a4cc4[_0xd025('0x46')]};return db[_0xd025('0x27')][_0xd025('0x17')](_0x3c327c)[_0xd025('0x4b')](function(_0x46c858){_0x16b967[_0xd025('0x17')]=_0x46c858;if(_0x1cc8e5[_0xd025('0x2c')][_0xd025('0x4c')]){_0x3a4cc4[_0xd025('0x4d')]=[{'all':!![]}];}return db['CmHopper'][_0xd025('0x4e')](_0x3a4cc4);})[_0xd025('0x4b')](function(_0x22b3e1){_0x16b967[_0xd025('0x4f')]=_0x22b3e1;return _0x16b967;})[_0xd025('0x4b')](respondWithFilteredResult(_0x35e21f,_0x3a4cc4))['catch'](handleError(_0x35e21f,null));};exports[_0xd025('0x50')]=function(_0x128c24,_0x70d977){var _0x5352e7={'raw':!![],'where':{'id':_0x128c24[_0xd025('0x51')]['id']}},_0x5c3b4c={};_0x5c3b4c[_0xd025('0x2b')]=_[_0xd025('0x52')](db[_0xd025('0x27')][_0xd025('0x28')]);_0x5c3b4c['query']=_[_0xd025('0x52')](_0x128c24[_0xd025('0x2c')]);_0x5c3b4c[_0xd025('0x2d')]=_['intersection'](_0x5c3b4c[_0xd025('0x2b')],_0x5c3b4c[_0xd025('0x2c')]);_0x5352e7[_0xd025('0x41')]=_[_0xd025('0x2e')](_0x5c3b4c['model'],qs[_0xd025('0x40')](_0x128c24[_0xd025('0x2c')][_0xd025('0x40')]));_0x5352e7['attributes']=_0x5352e7['attributes']['length']?_0x5352e7['attributes']:_0x5c3b4c[_0xd025('0x2b')];if(_0x128c24[_0xd025('0x2c')][_0xd025('0x4c')]){_0x5352e7[_0xd025('0x4d')]=[{'all':!![]}];}_0x5352e7=_[_0xd025('0x48')]({},_0x5352e7,_0x128c24[_0xd025('0x4a')]);return db['CmHopper'][_0xd025('0x53')](_0x5352e7)[_0xd025('0x4b')](handleEntityNotFound(_0x70d977,null))[_0xd025('0x4b')](respondWithResult(_0x70d977,null))[_0xd025('0x54')](handleError(_0x70d977,null));};exports[_0xd025('0x55')]=function(_0x8b7d52,_0xca27ad){return db['CmHopper']['create'](_0x8b7d52[_0xd025('0x56')],{})[_0xd025('0x4b')](respondWithResult(_0xca27ad,0xc9))[_0xd025('0x54')](handleError(_0xca27ad,null));};exports['update']=function(_0x3d020b,_0x30c2ba){if(_0x3d020b['body']['id']){delete _0x3d020b[_0xd025('0x56')]['id'];}return db[_0xd025('0x27')][_0xd025('0x53')]({'where':{'id':_0x3d020b[_0xd025('0x51')]['id']}})[_0xd025('0x4b')](handleEntityNotFound(_0x30c2ba,null))[_0xd025('0x4b')](saveUpdates(_0x3d020b[_0xd025('0x56')],null))[_0xd025('0x4b')](respondWithResult(_0x30c2ba,null))[_0xd025('0x54')](handleError(_0x30c2ba,null));};exports[_0xd025('0x57')]=function(_0x44ec3e,_0x2afe6a){return db[_0xd025('0x27')][_0xd025('0x57')]()[_0xd025('0x4b')](respondWithResult(_0x2afe6a,null))[_0xd025('0x54')](handleError(_0x2afe6a,null));};exports[_0xd025('0x1f')]=function(_0x597988,_0x54cd59){var _0x544faa;return db['CmHopper']['find']({'where':{'id':_0x597988[_0xd025('0x51')]['id']}})['then'](handleEntityNotFound(_0x54cd59,null))[_0xd025('0x4b')](function(_0x1eeead){if(_0x1eeead){return _0x1eeead['destroy']()['then'](function(_0x3d17c9){return _0x3d17c9;});}})[_0xd025('0x4b')](function(_0x5b4a04){_0x544faa=_0x5b4a04;if(_0x5b4a04){if(_0x5b4a04['VoiceQueueId']||_0x5b4a04[_0xd025('0x58')]){return db[_0x5b4a04[_0xd025('0x59')]?_0xd025('0x5a'):'Campaign'][_0xd025('0x53')]({'where':{'id':_0x5b4a04[_0xd025('0x59')]?_0x5b4a04[_0xd025('0x59')]:_0x5b4a04[_0xd025('0x58')]},'attributes':['id',_0xd025('0x23')],'raw':!![]});}}})['then'](function(_0x3ed09b){var _0x1f48a1={};if(_0x3ed09b){_[_0xd025('0x48')](_0x1f48a1,_['omit'](_0x544faa['dataValues'],[_0xd025('0x5b'),_0xd025('0x5c'),'id']));_0x1f48a1[_0xd025('0x5d')]=0x15;_0x1f48a1[_0xd025('0x5e')]=_0xd025('0x5f');_0x1f48a1[_0xd025('0x60')]=_0x3ed09b[_0xd025('0x23')];_0x1f48a1['membername']=_0x597988['user'][_0xd025('0x23')];_0x1f48a1[_0xd025('0x61')]=_0x597988[_0xd025('0x62')]['id'];_0x1f48a1['deleted']=!![];_0x1f48a1[_0xd025('0x63')]=moment()[_0xd025('0x64')](_0xd025('0x65'));_0x1f48a1['calleridnum']=_0x544faa[_0xd025('0x66')];_0x1f48a1[_0xd025('0x67')]=_0x544faa[_0xd025('0x59')]?_0xd025('0x68'):_0xd025('0x69');return db[_0xd025('0x6a')][_0xd025('0x53')]({'where':{'id':_0x1f48a1['ContactId']},'attributes':['firstName',_0xd025('0x6b')]})[_0xd025('0x4b')](function(_0x337c2e){if(!_[_0xd025('0x6c')](_0x54cd59)&&!_['isNil'](_0x337c2e[_0xd025('0x6d')])){_0x1f48a1[_0xd025('0x6e')]=_0x337c2e[_0xd025('0x6d')];if(!_[_0xd025('0x6c')](_0x337c2e[_0xd025('0x6b')])){_0x1f48a1['calleridname']+='\x20'+_0x337c2e[_0xd025('0x6b')];}}})[_0xd025('0x6f')](function(){return db[_0xd025('0x70')][_0xd025('0x55')](_0x1f48a1);});}})[_0xd025('0x4b')](function(){return _0x54cd59[_0xd025('0x15')](0xcc)['end']();})[_0xd025('0x54')](handleError(_0x54cd59,null));};exports[_0xd025('0x71')]=function(_0x4de9f8,_0x5cafd1,_0x3f15f8){var _0x456100=[];return db[_0xd025('0x6a')]['describe']()[_0xd025('0x4b')](function(_0x54c0dd){_0x456100=_[_0xd025('0x52')](_0x54c0dd);return _0x4de9f8[_0xd025('0x62')]['getVoiceQueues']({'where':{'type':_0xd025('0x72'),'dialActive':!![],'dialMethod':_0xd025('0x73')},'attributes':['id',_0xd025('0x74')],'raw':!![]});})['then'](function(_0x2c39fd){if(_0x2c39fd&&_0x2c39fd[_0xd025('0x42')]){return db[_0xd025('0x75')][_0xd025('0x76')](function(_0x2a202b){var _0x520e7c={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd025('0x64')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xd025('0x26')](_0x2c39fd,'id')},'$or':[{'UserId':null},{'UserId':_0x4de9f8[_0xd025('0x62')]['id']}]};var _0x627bdf=[];if(_0x4de9f8[_0xd025('0x56')][_0xd025('0x77')]&&_0x4de9f8[_0xd025('0x56')][_0xd025('0x77')]==='prev'){if(!_[_0xd025('0x78')](_0x4de9f8[_0xd025('0x56')]['hopperIds'])){_0x520e7c['id']={'$in':_0x4de9f8[_0xd025('0x56')]['hopperIds']};}_0x627bdf=[['priority',_0xd025('0x79')],[_0xd025('0x7a'),_0x2c39fd[0x0][_0xd025('0x74')]===_0xd025('0x79')?'DESC':'ASC'],db['sequelize'][_0xd025('0x7b')](_0xd025('0x7c')),['id','DESC']];}else{if(!_[_0xd025('0x78')](_0x4de9f8['body']['hopperIds'])){_0x520e7c['id']={'$notIn':_0x4de9f8[_0xd025('0x56')][_0xd025('0x7d')]};}_0x627bdf=[[_0xd025('0x7e'),'DESC'],['scheduledAt',_0x2c39fd[0x0]['dialOrderByScheduledAt']],db[_0xd025('0x75')][_0xd025('0x7b')](_0xd025('0x7f')),['id',_0xd025('0x79')]];}return db['CmHopper'][_0xd025('0x80')]({'attributes':['id',_0xd025('0x81')],'where':_0x520e7c,'order':_0x627bdf,'transaction':_0x2a202b,'lock':_0x2a202b['LOCK'][_0xd025('0x82')],'include':[{'model':db[_0xd025('0x6a')],'as':_0xd025('0x83'),'attributes':_0x456100,'include':[{'model':db[_0xd025('0x84')],'as':_0xd025('0x85'),'attributes':['id',_0xd025('0x23')]}]},{'model':db[_0xd025('0x86')],'as':_0xd025('0x87'),'attributes':['id',_0xd025('0x23')]},{'model':db['VoiceQueue'],'as':_0xd025('0x88'),'attributes':['id',_0xd025('0x23'),_0xd025('0x89')]}]})[_0xd025('0x4b')](function(_0x3582bf){if(_0x3582bf){return _0x3582bf['update']({'UserId':_0x4de9f8[_0xd025('0x62')]['id']},{'transaction':_0x2a202b});}});});}})['then'](handleEntityNotFound(_0x5cafd1,null))[_0xd025('0x4b')](respondWithResult(_0x5cafd1,null))[_0xd025('0x54')](handleError(_0x5cafd1,null));};exports[_0xd025('0x8a')]=function(_0x1c07e8,_0x35419a,_0x394551){return _0x1c07e8['user'][_0xd025('0x8b')]({'where':{'type':_0xd025('0x72'),'dialActive':!![],'dialMethod':_0xd025('0x73')},'attributes':['id'],'raw':!![]})[_0xd025('0x4b')](function(_0x5ab0ff){if(_0x5ab0ff&&_0x5ab0ff[_0xd025('0x42')]){return db[_0xd025('0x27')][_0xd025('0x17')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd025('0x64')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xd025('0x26')](_0x5ab0ff,'id')},'$or':[{'UserId':null},{'UserId':_0x1c07e8[_0xd025('0x62')]['id']}]}});}return 0x0;})[_0xd025('0x4b')](function(_0x1aded1){if(!_[_0xd025('0x6c')](_0x1aded1)&&_[_0xd025('0x8c')](_0x1aded1)){return _0x35419a['status'](0xc8)['json']({'contacts':_0x1aded1});}else{logger[_0xd025('0x21')](_0xd025('0x8d'),_0xd025('0x8a'),0x194,_0xd025('0x8e'));_0x35419a[_0xd025('0x20')](0x194);}})[_0xd025('0x54')](handleError(_0x35419a,null));};