Built motion from commit 14588770.|2.5.38
[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 _0x23bb=['deletedat','format','calleridnum','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','firstName','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','dialPreviewAutoRecallMe','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','Contact','Company','CmList','List','getOpenContacts','isNumber','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','update','then','error','name','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','CmHopper','count','include','findAll','catch','show','find','create','body','params','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','createdAt','updatedAt','state','statedesc','campaign','user','UserId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x23bb,0xc1));var _0xb23b=function(_0x38aeea,_0x57522a){_0x38aeea=_0x38aeea-0x0;var _0x5e8d2c=_0x23bb[_0x38aeea];return _0x5e8d2c;};'use strict';var emlformat=require(_0xb23b('0x0'));var rimraf=require(_0xb23b('0x1'));var zipdir=require(_0xb23b('0x2'));var jsonpatch=require(_0xb23b('0x3'));var rp=require(_0xb23b('0x4'));var moment=require('moment');var BPromise=require(_0xb23b('0x5'));var Mustache=require('mustache');var util=require(_0xb23b('0x6'));var path=require(_0xb23b('0x7'));var sox=require(_0xb23b('0x8'));var csv=require('to-csv');var ejs=require(_0xb23b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb23b('0xa'));var squel=require(_0xb23b('0xb'));var crypto=require(_0xb23b('0xc'));var jsforce=require(_0xb23b('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb23b('0xe'));var Redis=require(_0xb23b('0xf'));var authService=require(_0xb23b('0x10'));var qs=require(_0xb23b('0x11'));var as=require(_0xb23b('0x12'));var hardwareService=require(_0xb23b('0x13'));var logger=require('../../config/logger')(_0xb23b('0x14'));var utils=require(_0xb23b('0x15'));var config=require(_0xb23b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xb23b('0x17'))['db'];function respondWithStatusCode(_0x1b5755,_0x894374){_0x894374=_0x894374||0xcc;return function(_0x3e048a){if(_0x3e048a){return _0x1b5755[_0xb23b('0x18')](_0x894374);}return _0x1b5755[_0xb23b('0x19')](_0x894374)[_0xb23b('0x1a')]();};}function respondWithResult(_0x24cf76,_0x4ca09e){_0x4ca09e=_0x4ca09e||0xc8;return function(_0x5b2974){if(_0x5b2974){return _0x24cf76['status'](_0x4ca09e)[_0xb23b('0x1b')](_0x5b2974);}};}function respondWithFilteredResult(_0x1175e2,_0x40b2f2){return function(_0x19ebe8){if(_0x19ebe8){var _0x5351e0=typeof _0x40b2f2[_0xb23b('0x1c')]===_0xb23b('0x1d')&&typeof _0x40b2f2[_0xb23b('0x1e')]===_0xb23b('0x1d');var _0x52a4a8=_0x19ebe8['count'];var _0x32221a=_0x5351e0?0x0:_0x40b2f2[_0xb23b('0x1c')];var _0x3934e6=_0x5351e0?_0x19ebe8['count']:_0x40b2f2[_0xb23b('0x1c')]+_0x40b2f2[_0xb23b('0x1e')];var _0x1ef1eb;if(_0x3934e6>=_0x52a4a8){_0x3934e6=_0x52a4a8;_0x1ef1eb=0xc8;}else{_0x1ef1eb=0xce;}_0x1175e2['status'](_0x1ef1eb);return _0x1175e2[_0xb23b('0x1f')]('Content-Range',_0x32221a+'-'+_0x3934e6+'/'+_0x52a4a8)['json'](_0x19ebe8);}return null;};}function patchUpdates(_0x1afd4f){return function(_0x46ef92){try{jsonpatch[_0xb23b('0x20')](_0x46ef92,_0x1afd4f,!![]);}catch(_0x3a267c){return BPromise[_0xb23b('0x21')](_0x3a267c);}return _0x46ef92[_0xb23b('0x22')]();};}function saveUpdates(_0x4f3fa6,_0x16c91){return function(_0x3e35a3){if(_0x3e35a3){return _0x3e35a3[_0xb23b('0x23')](_0x4f3fa6)[_0xb23b('0x24')](function(_0xd2b1cf){return _0xd2b1cf;});}return null;};}function removeEntity(_0x13a3a7,_0x5eb980){return function(_0x30d866){if(_0x30d866){return _0x30d866['destroy']()['then'](function(){_0x13a3a7[_0xb23b('0x19')](0xcc)[_0xb23b('0x1a')]();});}};}function handleEntityNotFound(_0x25ff38,_0x2199a4){return function(_0x529435){if(!_0x529435){_0x25ff38[_0xb23b('0x18')](0x194);}return _0x529435;};}function handleError(_0x361038,_0x1036e6){_0x1036e6=_0x1036e6||0x1f4;return function(_0x5ce29d){logger[_0xb23b('0x25')](_0x5ce29d['stack']);if(_0x5ce29d[_0xb23b('0x26')]){delete _0x5ce29d[_0xb23b('0x26')];}_0x361038['status'](_0x1036e6)['send'](_0x5ce29d);};}exports[_0xb23b('0x27')]=function(_0x5f2ac1,_0x4ffbdd){var _0x66025c={},_0x16e71f={},_0x3bc9e6={'count':0x0,'rows':[]};var _0x499d71=_[_0xb23b('0x28')](db['CmHopper'][_0xb23b('0x29')],function(_0x5649f3){return{'name':_0x5649f3[_0xb23b('0x2a')],'type':_0x5649f3[_0xb23b('0x2b')]['key']};});_0x16e71f[_0xb23b('0x2c')]=_[_0xb23b('0x28')](_0x499d71,'name');_0x16e71f['query']=_[_0xb23b('0x2d')](_0x5f2ac1[_0xb23b('0x2e')]);_0x16e71f[_0xb23b('0x2f')]=_[_0xb23b('0x30')](_0x16e71f[_0xb23b('0x2c')],_0x16e71f[_0xb23b('0x2e')]);_0x16e71f['filters']=_[_0xb23b('0x31')](_0x16e71f[_0xb23b('0x2f')],[_0xb23b('0x32'),_0xb23b('0x33'),_0xb23b('0x34'),_0xb23b('0x35'),_0xb23b('0x36'),_0xb23b('0x37'),_0xb23b('0x38'),_0xb23b('0x39'),_0xb23b('0x3a'),_0xb23b('0x3b'),_0xb23b('0x3c'),_0xb23b('0x3d'),'$notIn',_0xb23b('0x3e'),_0xb23b('0x3f'),_0xb23b('0x40'),_0xb23b('0x41'),'$like',_0xb23b('0x42'),'$contains',_0xb23b('0x43'),_0xb23b('0x44')]);_0x66025c[_0xb23b('0x45')]=_[_0xb23b('0x30')](_0x16e71f[_0xb23b('0x2c')],qs[_0xb23b('0x46')](_0x5f2ac1[_0xb23b('0x2e')]['fields']));_0x66025c[_0xb23b('0x45')]=_0x66025c['attributes'][_0xb23b('0x47')]?_0x66025c[_0xb23b('0x45')]:_0x16e71f[_0xb23b('0x2c')];if(!_0x5f2ac1[_0xb23b('0x2e')][_0xb23b('0x48')](_0xb23b('0x49'))){_0x66025c[_0xb23b('0x1e')]=qs['limit'](_0x5f2ac1[_0xb23b('0x2e')][_0xb23b('0x1e')]);_0x66025c['offset']=qs[_0xb23b('0x1c')](_0x5f2ac1[_0xb23b('0x2e')]['offset']);}_0x66025c['order']=qs[_0xb23b('0x4a')](_0x5f2ac1[_0xb23b('0x2e')][_0xb23b('0x4a')]);_0x66025c[_0xb23b('0x4b')]=qs[_0xb23b('0x2f')](_[_0xb23b('0x4c')](_0x5f2ac1[_0xb23b('0x2e')],_0x16e71f[_0xb23b('0x2f')]),_0x499d71);if(_0x5f2ac1['query'][_0xb23b('0x4d')]){_0x66025c[_0xb23b('0x4b')]=_[_0xb23b('0x4e')](_0x66025c[_0xb23b('0x4b')],{'$or':_[_0xb23b('0x28')](_0x499d71,function(_0x195930){if(_0x195930[_0xb23b('0x2b')]!==_0xb23b('0x4f')){var _0x431994={};_0x431994[_0x195930['name']]={'$like':'%'+_0x5f2ac1[_0xb23b('0x2e')][_0xb23b('0x4d')]+'%'};return _0x431994;}})});}_0x66025c=_['merge']({},_0x66025c,_0x5f2ac1[_0xb23b('0x50')]);var _0x30cc76={'where':_0x66025c['where']};return db[_0xb23b('0x51')][_0xb23b('0x52')](_0x30cc76)[_0xb23b('0x24')](function(_0x186258){_0x3bc9e6[_0xb23b('0x52')]=_0x186258;if(_0x5f2ac1[_0xb23b('0x2e')]['includeAll']){_0x66025c[_0xb23b('0x53')]=[{'all':!![]}];}return db['CmHopper'][_0xb23b('0x54')](_0x66025c);})[_0xb23b('0x24')](function(_0x5fa4c8){_0x3bc9e6['rows']=_0x5fa4c8;return _0x3bc9e6;})[_0xb23b('0x24')](respondWithFilteredResult(_0x4ffbdd,_0x66025c))[_0xb23b('0x55')](handleError(_0x4ffbdd,null));};exports[_0xb23b('0x56')]=function(_0x41f72c,_0x198327){var _0x375560={'raw':!![],'where':{'id':_0x41f72c['params']['id']}},_0x56a909={};_0x56a909[_0xb23b('0x2c')]=_[_0xb23b('0x2d')](db[_0xb23b('0x51')][_0xb23b('0x29')]);_0x56a909[_0xb23b('0x2e')]=_[_0xb23b('0x2d')](_0x41f72c[_0xb23b('0x2e')]);_0x56a909[_0xb23b('0x2f')]=_['intersection'](_0x56a909[_0xb23b('0x2c')],_0x56a909[_0xb23b('0x2e')]);_0x375560[_0xb23b('0x45')]=_['intersection'](_0x56a909[_0xb23b('0x2c')],qs[_0xb23b('0x46')](_0x41f72c[_0xb23b('0x2e')][_0xb23b('0x46')]));_0x375560[_0xb23b('0x45')]=_0x375560[_0xb23b('0x45')][_0xb23b('0x47')]?_0x375560[_0xb23b('0x45')]:_0x56a909['model'];if(_0x41f72c['query']['includeAll']){_0x375560[_0xb23b('0x53')]=[{'all':!![]}];}_0x375560=_[_0xb23b('0x4e')]({},_0x375560,_0x41f72c[_0xb23b('0x50')]);return db[_0xb23b('0x51')][_0xb23b('0x57')](_0x375560)['then'](handleEntityNotFound(_0x198327,null))[_0xb23b('0x24')](respondWithResult(_0x198327,null))[_0xb23b('0x55')](handleError(_0x198327,null));};exports[_0xb23b('0x58')]=function(_0x32fea5,_0xf2ee65){return db[_0xb23b('0x51')][_0xb23b('0x58')](_0x32fea5[_0xb23b('0x59')],{})[_0xb23b('0x24')](respondWithResult(_0xf2ee65,0xc9))[_0xb23b('0x55')](handleError(_0xf2ee65,null));};exports[_0xb23b('0x23')]=function(_0x46b405,_0x22b80a){if(_0x46b405[_0xb23b('0x59')]['id']){delete _0x46b405[_0xb23b('0x59')]['id'];}return db[_0xb23b('0x51')][_0xb23b('0x57')]({'where':{'id':_0x46b405[_0xb23b('0x5a')]['id']}})[_0xb23b('0x24')](handleEntityNotFound(_0x22b80a,null))[_0xb23b('0x24')](saveUpdates(_0x46b405[_0xb23b('0x59')],null))['then'](respondWithResult(_0x22b80a,null))['catch'](handleError(_0x22b80a,null));};exports['describe']=function(_0x4fe054,_0x218599){return db[_0xb23b('0x51')][_0xb23b('0x5b')]()[_0xb23b('0x24')](respondWithResult(_0x218599,null))[_0xb23b('0x55')](handleError(_0x218599,null));};exports[_0xb23b('0x5c')]=function(_0x3ae3e0,_0x38ccb9){var _0x18aa9f;return db[_0xb23b('0x51')][_0xb23b('0x57')]({'where':{'id':_0x3ae3e0[_0xb23b('0x5a')]['id']}})[_0xb23b('0x24')](handleEntityNotFound(_0x38ccb9,null))[_0xb23b('0x24')](function(_0x515810){if(_0x515810){return _0x515810[_0xb23b('0x5c')]()[_0xb23b('0x24')](function(_0x519b5a){return _0x519b5a;});}})['then'](function(_0x921869){_0x18aa9f=_0x921869;if(_0x921869){if(_0x921869[_0xb23b('0x5d')]||_0x921869[_0xb23b('0x5e')]){return db[_0x921869['VoiceQueueId']?_0xb23b('0x5f'):_0xb23b('0x60')][_0xb23b('0x57')]({'where':{'id':_0x921869[_0xb23b('0x5d')]?_0x921869[_0xb23b('0x5d')]:_0x921869[_0xb23b('0x5e')]},'attributes':['id',_0xb23b('0x26')],'raw':!![]});}}})[_0xb23b('0x24')](function(_0x538848){var _0x44ffe7={};if(_0x538848){_[_0xb23b('0x4e')](_0x44ffe7,_[_0xb23b('0x61')](_0x18aa9f['dataValues'],[_0xb23b('0x62'),_0xb23b('0x63'),'id']));_0x44ffe7[_0xb23b('0x64')]=0x15;_0x44ffe7[_0xb23b('0x65')]='deleted';_0x44ffe7[_0xb23b('0x66')]=_0x538848[_0xb23b('0x26')];_0x44ffe7['membername']=_0x3ae3e0[_0xb23b('0x67')][_0xb23b('0x26')];_0x44ffe7[_0xb23b('0x68')]=_0x3ae3e0[_0xb23b('0x67')]['id'];_0x44ffe7['deleted']=!![];_0x44ffe7[_0xb23b('0x69')]=moment()[_0xb23b('0x6a')]('YYYY-MM-DD\x20HH:mm:ss');_0x44ffe7[_0xb23b('0x6b')]=_0x18aa9f['phone'];_0x44ffe7[_0xb23b('0x6c')]=_0x18aa9f[_0xb23b('0x5d')]?_0xb23b('0x6d'):_0xb23b('0x6e');return db[_0xb23b('0x6f')]['find']({'where':{'id':_0x44ffe7[_0xb23b('0x70')]},'attributes':['firstName',_0xb23b('0x71')]})['then'](function(_0x170fb1){if(!_[_0xb23b('0x72')](_0x38ccb9)&&!_[_0xb23b('0x72')](_0x170fb1['firstName'])){_0x44ffe7['calleridname']=_0x170fb1[_0xb23b('0x73')];if(!_[_0xb23b('0x72')](_0x170fb1[_0xb23b('0x71')])){_0x44ffe7[_0xb23b('0x74')]+='\x20'+_0x170fb1['lastName'];}}})['finally'](function(){return db[_0xb23b('0x75')][_0xb23b('0x58')](_0x44ffe7);});}})[_0xb23b('0x24')](function(){return _0x38ccb9[_0xb23b('0x19')](0xcc)[_0xb23b('0x1a')]();})[_0xb23b('0x55')](handleError(_0x38ccb9,null));};exports[_0xb23b('0x76')]=function(_0x5c552b,_0x11cee3,_0x4a04da){var _0x17bc21=[];return db[_0xb23b('0x6f')][_0xb23b('0x5b')]()[_0xb23b('0x24')](function(_0x4e6a40){_0x17bc21=_[_0xb23b('0x2d')](_0x4e6a40);return _0x5c552b[_0xb23b('0x67')][_0xb23b('0x77')]({'where':{'type':_0xb23b('0x78'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xb23b('0x79'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0xb23b('0x24')](function(_0x331c20){if(_0x331c20&&_0x331c20[_0xb23b('0x47')]){return db[_0xb23b('0x7a')][_0xb23b('0x7b')](function(_0x56bace){var _0x100fdc={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xb23b('0x7c'))},'VoiceQueueId':{'$in':_[_0xb23b('0x28')](_0x331c20,'id')},'$or':[{'UserId':null},{'UserId':_0x5c552b['user']['id']}]};var _0x4336cc={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x331c20)[_0xb23b('0x4d')]([_0xb23b('0x7d'),0x0])[_0xb23b('0x28')]('id')[_0xb23b('0x7e')]()},'$or':[{'UserId':null},{'UserId':_0x5c552b[_0xb23b('0x67')]['id']}]};var _0x59fbfa={'$or':[_0x100fdc,_0x4336cc]};var _0x3487ff=[];if(_0x5c552b[_0xb23b('0x59')]['direction']&&_0x5c552b['body'][_0xb23b('0x7f')]===_0xb23b('0x80')){if(!_[_0xb23b('0x81')](_0x5c552b[_0xb23b('0x59')][_0xb23b('0x82')])){_0x59fbfa['id']={'$in':_0x5c552b['body']['hopperIds']};}_0x3487ff=[[_0xb23b('0x83'),_0xb23b('0x84')],['scheduledAt',_0x331c20[0x0]['dialOrderByScheduledAt']===_0xb23b('0x84')?_0xb23b('0x85'):_0xb23b('0x84')],db['sequelize'][_0xb23b('0x86')](_0xb23b('0x87')),['id',_0xb23b('0x85')]];}else{if(!_[_0xb23b('0x81')](_0x5c552b[_0xb23b('0x59')]['hopperIds'])){_0x59fbfa['id']={'$notIn':_0x5c552b[_0xb23b('0x59')][_0xb23b('0x82')]};}_0x3487ff=[[_0xb23b('0x83'),'DESC'],[_0xb23b('0x88'),_0x331c20[0x0]['dialOrderByScheduledAt']],db['sequelize']['literal'](_0xb23b('0x89')),['id','ASC']];}return db[_0xb23b('0x51')][_0xb23b('0x8a')]({'attributes':['id',_0xb23b('0x8b'),_0xb23b('0x8c')],'where':_0x59fbfa,'order':_0x3487ff,'transaction':_0x56bace,'lock':_0x56bace[_0xb23b('0x8d')]['UPDATE'],'include':[{'model':db[_0xb23b('0x6f')],'as':_0xb23b('0x8e'),'attributes':_0x17bc21,'include':[{'model':db['CmCompany'],'as':_0xb23b('0x8f'),'attributes':['id',_0xb23b('0x26')]}]},{'model':db[_0xb23b('0x90')],'as':_0xb23b('0x91'),'attributes':['id','name']},{'model':db[_0xb23b('0x5f')],'as':'Queue','attributes':['id',_0xb23b('0x26'),'dialActive']}]})[_0xb23b('0x24')](function(_0x5053c2){if(_0x5053c2){return _0x5053c2[_0xb23b('0x23')]({'UserId':_0x5c552b[_0xb23b('0x67')]['id']},{'transaction':_0x56bace});}});});}})['then'](handleEntityNotFound(_0x11cee3,null))[_0xb23b('0x24')](respondWithResult(_0x11cee3,null))[_0xb23b('0x55')](handleError(_0x11cee3,null));};exports[_0xb23b('0x92')]=function(_0x373e4e,_0x377dd2,_0x15efac){return _0x373e4e['user']['getVoiceQueues']({'where':{'type':_0xb23b('0x78'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xb23b('0x24')](function(_0x2cc776){if(_0x2cc776&&_0x2cc776[_0xb23b('0x47')]){return db['CmHopper'][_0xb23b('0x52')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xb23b('0x6a')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xb23b('0x28')](_0x2cc776,'id')},'$or':[{'UserId':null},{'UserId':_0x373e4e[_0xb23b('0x67')]['id']}]}});}return 0x0;})[_0xb23b('0x24')](function(_0x2abae3){if(!_[_0xb23b('0x72')](_0x2abae3)&&_[_0xb23b('0x93')](_0x2abae3)){return _0x377dd2['status'](0xc8)[_0xb23b('0x1b')]({'contacts':_0x2abae3});}else{logger[_0xb23b('0x25')]('CmHopper,\x20%s,\x20%s,\x20%s',_0xb23b('0x92'),0x194,_0xb23b('0x94'));_0x377dd2['sendStatus'](0x194);}})[_0xb23b('0x55')](handleError(_0x377dd2,null));};