Built motion from commit f16df95f.|2.5.40
[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 _0x6fad=['pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','rawAttributes','includeAll','create','body','find','describe','params','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','createdAt','statedesc','deleted','campaign','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','finally','CmHopperFinal','getPreview','getVoiceQueues','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','transaction','value','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','Company','CmList','List','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopper','fieldName','type','key','model','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$not','$notBetween','$notIn','$like','$iLike','$overlap','$contains','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x243fb8,_0x47d1c0){var _0xa96f4e=function(_0x27f860){while(--_0x27f860){_0x243fb8['push'](_0x243fb8['shift']());}};_0xa96f4e(++_0x47d1c0);}(_0x6fad,0x174));var _0xd6fa=function(_0x584b87,_0x3542b8){_0x584b87=_0x584b87-0x0;var _0x3e7b7e=_0x6fad[_0x584b87];return _0x3e7b7e;};'use strict';var emlformat=require(_0xd6fa('0x0'));var rimraf=require(_0xd6fa('0x1'));var zipdir=require(_0xd6fa('0x2'));var jsonpatch=require(_0xd6fa('0x3'));var rp=require('request-promise');var moment=require(_0xd6fa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd6fa('0x5'));var util=require(_0xd6fa('0x6'));var path=require(_0xd6fa('0x7'));var sox=require(_0xd6fa('0x8'));var csv=require('to-csv');var ejs=require(_0xd6fa('0x9'));var fs=require('fs');var fs_extra=require(_0xd6fa('0xa'));var _=require(_0xd6fa('0xb'));var squel=require(_0xd6fa('0xc'));var crypto=require('crypto');var jsforce=require(_0xd6fa('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd6fa('0xe'));var querystring=require(_0xd6fa('0xf'));var Papa=require(_0xd6fa('0x10'));var Redis=require(_0xd6fa('0x11'));var authService=require(_0xd6fa('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd6fa('0x13'));var logger=require(_0xd6fa('0x14'))(_0xd6fa('0x15'));var utils=require(_0xd6fa('0x16'));var config=require(_0xd6fa('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd7341e,_0x54a0b4){_0x54a0b4=_0x54a0b4||0xcc;return function(_0x5e0600){if(_0x5e0600){return _0xd7341e[_0xd6fa('0x18')](_0x54a0b4);}return _0xd7341e[_0xd6fa('0x19')](_0x54a0b4)[_0xd6fa('0x1a')]();};}function respondWithResult(_0x40df7f,_0x3cd6fa){_0x3cd6fa=_0x3cd6fa||0xc8;return function(_0x919d49){if(_0x919d49){return _0x40df7f[_0xd6fa('0x19')](_0x3cd6fa)[_0xd6fa('0x1b')](_0x919d49);}};}function respondWithFilteredResult(_0x45f777,_0x5b853a){return function(_0x3ad938){if(_0x3ad938){var _0x4082c5=typeof _0x5b853a[_0xd6fa('0x1c')]===_0xd6fa('0x1d')&&typeof _0x5b853a['limit']==='undefined';var _0x59a501=_0x3ad938['count'];var _0x4c44da=_0x4082c5?0x0:_0x5b853a[_0xd6fa('0x1c')];var _0x51fbd0=_0x4082c5?_0x3ad938[_0xd6fa('0x1e')]:_0x5b853a['offset']+_0x5b853a[_0xd6fa('0x1f')];var _0x133069;if(_0x51fbd0>=_0x59a501){_0x51fbd0=_0x59a501;_0x133069=0xc8;}else{_0x133069=0xce;}_0x45f777[_0xd6fa('0x19')](_0x133069);return _0x45f777[_0xd6fa('0x20')](_0xd6fa('0x21'),_0x4c44da+'-'+_0x51fbd0+'/'+_0x59a501)[_0xd6fa('0x1b')](_0x3ad938);}return null;};}function patchUpdates(_0x45b20e){return function(_0x42f984){try{jsonpatch[_0xd6fa('0x22')](_0x42f984,_0x45b20e,!![]);}catch(_0x814130){return BPromise[_0xd6fa('0x23')](_0x814130);}return _0x42f984[_0xd6fa('0x24')]();};}function saveUpdates(_0x66dc60,_0x26c329){return function(_0x2f1f4e){if(_0x2f1f4e){return _0x2f1f4e[_0xd6fa('0x25')](_0x66dc60)[_0xd6fa('0x26')](function(_0x45474d){return _0x45474d;});}return null;};}function removeEntity(_0x3fbab3,_0x5f2088){return function(_0x5dd144){if(_0x5dd144){return _0x5dd144[_0xd6fa('0x27')]()[_0xd6fa('0x26')](function(){_0x3fbab3[_0xd6fa('0x19')](0xcc)[_0xd6fa('0x1a')]();});}};}function handleEntityNotFound(_0x1c5af3,_0xa3264f){return function(_0x5f25ca){if(!_0x5f25ca){_0x1c5af3[_0xd6fa('0x18')](0x194);}return _0x5f25ca;};}function handleError(_0x1af27c,_0x4c7444){_0x4c7444=_0x4c7444||0x1f4;return function(_0x1ac83f){logger[_0xd6fa('0x28')](_0x1ac83f[_0xd6fa('0x29')]);if(_0x1ac83f['name']){delete _0x1ac83f[_0xd6fa('0x2a')];}_0x1af27c[_0xd6fa('0x19')](_0x4c7444)[_0xd6fa('0x2b')](_0x1ac83f);};}exports[_0xd6fa('0x2c')]=function(_0x3c7a9e,_0x198ad6){var _0x42f145={},_0x4b2329={},_0x2a59c0={'count':0x0,'rows':[]};var _0x4c1104=_[_0xd6fa('0x2d')](db[_0xd6fa('0x2e')]['rawAttributes'],function(_0x3fc7f5){return{'name':_0x3fc7f5[_0xd6fa('0x2f')],'type':_0x3fc7f5[_0xd6fa('0x30')][_0xd6fa('0x31')]};});_0x4b2329[_0xd6fa('0x32')]=_[_0xd6fa('0x2d')](_0x4c1104,_0xd6fa('0x2a'));_0x4b2329[_0xd6fa('0x33')]=_[_0xd6fa('0x34')](_0x3c7a9e['query']);_0x4b2329[_0xd6fa('0x35')]=_[_0xd6fa('0x36')](_0x4b2329['model'],_0x4b2329[_0xd6fa('0x33')]);_0x4b2329[_0xd6fa('0x35')]=_[_0xd6fa('0x37')](_0x4b2329[_0xd6fa('0x35')],[_0xd6fa('0x38'),_0xd6fa('0x39'),_0xd6fa('0x3a'),_0xd6fa('0x3b'),_0xd6fa('0x3c'),_0xd6fa('0x3d'),_0xd6fa('0x3e'),'$eq',_0xd6fa('0x3f'),'$between',_0xd6fa('0x40'),'$in',_0xd6fa('0x41'),_0xd6fa('0x42'),'$notLike',_0xd6fa('0x43'),'$notILike',_0xd6fa('0x42'),_0xd6fa('0x44'),_0xd6fa('0x45'),'$contained','$any']);_0x42f145[_0xd6fa('0x46')]=_[_0xd6fa('0x36')](_0x4b2329[_0xd6fa('0x32')],qs['fields'](_0x3c7a9e[_0xd6fa('0x33')][_0xd6fa('0x47')]));_0x42f145[_0xd6fa('0x46')]=_0x42f145[_0xd6fa('0x46')][_0xd6fa('0x48')]?_0x42f145[_0xd6fa('0x46')]:_0x4b2329[_0xd6fa('0x32')];if(!_0x3c7a9e['query'][_0xd6fa('0x49')](_0xd6fa('0x4a'))){_0x42f145[_0xd6fa('0x1f')]=qs[_0xd6fa('0x1f')](_0x3c7a9e[_0xd6fa('0x33')][_0xd6fa('0x1f')]);_0x42f145[_0xd6fa('0x1c')]=qs[_0xd6fa('0x1c')](_0x3c7a9e['query'][_0xd6fa('0x1c')]);}_0x42f145[_0xd6fa('0x4b')]=qs[_0xd6fa('0x4c')](_0x3c7a9e[_0xd6fa('0x33')][_0xd6fa('0x4c')]);_0x42f145[_0xd6fa('0x4d')]=qs[_0xd6fa('0x35')](_[_0xd6fa('0x4e')](_0x3c7a9e[_0xd6fa('0x33')],_0x4b2329['filters']),_0x4c1104);if(_0x3c7a9e[_0xd6fa('0x33')][_0xd6fa('0x4f')]){_0x42f145[_0xd6fa('0x4d')]=_[_0xd6fa('0x50')](_0x42f145['where'],{'$or':_[_0xd6fa('0x2d')](_0x4c1104,function(_0xe98e6d){if(_0xe98e6d[_0xd6fa('0x30')]!==_0xd6fa('0x51')){var _0x32ac34={};_0x32ac34[_0xe98e6d[_0xd6fa('0x2a')]]={'$like':'%'+_0x3c7a9e[_0xd6fa('0x33')][_0xd6fa('0x4f')]+'%'};return _0x32ac34;}})});}_0x42f145=_[_0xd6fa('0x50')]({},_0x42f145,_0x3c7a9e[_0xd6fa('0x52')]);var _0x275eda={'where':_0x42f145[_0xd6fa('0x4d')]};return db[_0xd6fa('0x2e')][_0xd6fa('0x1e')](_0x275eda)[_0xd6fa('0x26')](function(_0x519800){_0x2a59c0[_0xd6fa('0x1e')]=_0x519800;if(_0x3c7a9e[_0xd6fa('0x33')]['includeAll']){_0x42f145[_0xd6fa('0x53')]=[{'all':!![]}];}return db[_0xd6fa('0x2e')][_0xd6fa('0x54')](_0x42f145);})[_0xd6fa('0x26')](function(_0xb92ea2){_0x2a59c0['rows']=_0xb92ea2;return _0x2a59c0;})[_0xd6fa('0x26')](respondWithFilteredResult(_0x198ad6,_0x42f145))[_0xd6fa('0x55')](handleError(_0x198ad6,null));};exports[_0xd6fa('0x56')]=function(_0x4e8a7b,_0x141897){var _0xd5c2f4={'raw':!![],'where':{'id':_0x4e8a7b['params']['id']}},_0x1dae6b={};_0x1dae6b['model']=_[_0xd6fa('0x34')](db[_0xd6fa('0x2e')][_0xd6fa('0x57')]);_0x1dae6b['query']=_['keys'](_0x4e8a7b[_0xd6fa('0x33')]);_0x1dae6b[_0xd6fa('0x35')]=_[_0xd6fa('0x36')](_0x1dae6b[_0xd6fa('0x32')],_0x1dae6b[_0xd6fa('0x33')]);_0xd5c2f4[_0xd6fa('0x46')]=_[_0xd6fa('0x36')](_0x1dae6b[_0xd6fa('0x32')],qs[_0xd6fa('0x47')](_0x4e8a7b[_0xd6fa('0x33')][_0xd6fa('0x47')]));_0xd5c2f4[_0xd6fa('0x46')]=_0xd5c2f4[_0xd6fa('0x46')][_0xd6fa('0x48')]?_0xd5c2f4[_0xd6fa('0x46')]:_0x1dae6b[_0xd6fa('0x32')];if(_0x4e8a7b['query'][_0xd6fa('0x58')]){_0xd5c2f4['include']=[{'all':!![]}];}_0xd5c2f4=_[_0xd6fa('0x50')]({},_0xd5c2f4,_0x4e8a7b[_0xd6fa('0x52')]);return db['CmHopper']['find'](_0xd5c2f4)[_0xd6fa('0x26')](handleEntityNotFound(_0x141897,null))[_0xd6fa('0x26')](respondWithResult(_0x141897,null))['catch'](handleError(_0x141897,null));};exports[_0xd6fa('0x59')]=function(_0xbea48c,_0x1abd98){return db[_0xd6fa('0x2e')][_0xd6fa('0x59')](_0xbea48c[_0xd6fa('0x5a')],{})[_0xd6fa('0x26')](respondWithResult(_0x1abd98,0xc9))['catch'](handleError(_0x1abd98,null));};exports[_0xd6fa('0x25')]=function(_0x2f55ff,_0x493b37){if(_0x2f55ff[_0xd6fa('0x5a')]['id']){delete _0x2f55ff[_0xd6fa('0x5a')]['id'];}return db['CmHopper'][_0xd6fa('0x5b')]({'where':{'id':_0x2f55ff['params']['id']}})['then'](handleEntityNotFound(_0x493b37,null))[_0xd6fa('0x26')](saveUpdates(_0x2f55ff[_0xd6fa('0x5a')],null))[_0xd6fa('0x26')](respondWithResult(_0x493b37,null))['catch'](handleError(_0x493b37,null));};exports[_0xd6fa('0x5c')]=function(_0x2e9883,_0x5d2617){return db['CmHopper'][_0xd6fa('0x5c')]()['then'](respondWithResult(_0x5d2617,null))[_0xd6fa('0x55')](handleError(_0x5d2617,null));};exports[_0xd6fa('0x27')]=function(_0x41a55f,_0x4fc13f){var _0x54a775;return db['CmHopper'][_0xd6fa('0x5b')]({'where':{'id':_0x41a55f[_0xd6fa('0x5d')]['id']}})[_0xd6fa('0x26')](handleEntityNotFound(_0x4fc13f,null))['then'](function(_0x57a7d5){if(_0x57a7d5){return _0x57a7d5[_0xd6fa('0x27')]()[_0xd6fa('0x26')](function(_0x1501d7){return _0x1501d7;});}})['then'](function(_0x5de7ea){_0x54a775=_0x5de7ea;if(_0x5de7ea){if(_0x5de7ea[_0xd6fa('0x5e')]||_0x5de7ea[_0xd6fa('0x5f')]){return db[_0x5de7ea[_0xd6fa('0x5e')]?_0xd6fa('0x60'):_0xd6fa('0x61')][_0xd6fa('0x5b')]({'where':{'id':_0x5de7ea['VoiceQueueId']?_0x5de7ea['VoiceQueueId']:_0x5de7ea[_0xd6fa('0x5f')]},'attributes':['id',_0xd6fa('0x2a')],'raw':!![]});}}})[_0xd6fa('0x26')](function(_0x50d54b){var _0x10b446={};if(_0x50d54b){_['merge'](_0x10b446,_[_0xd6fa('0x62')](_0x54a775['dataValues'],[_0xd6fa('0x63'),'updatedAt','id']));_0x10b446['state']=0x15;_0x10b446[_0xd6fa('0x64')]=_0xd6fa('0x65');_0x10b446[_0xd6fa('0x66')]=_0x50d54b[_0xd6fa('0x2a')];_0x10b446['membername']=_0x41a55f['user'][_0xd6fa('0x2a')];_0x10b446['UserId']=_0x41a55f[_0xd6fa('0x67')]['id'];_0x10b446[_0xd6fa('0x65')]=!![];_0x10b446[_0xd6fa('0x68')]=moment()[_0xd6fa('0x69')](_0xd6fa('0x6a'));_0x10b446[_0xd6fa('0x6b')]=_0x54a775[_0xd6fa('0x6c')];_0x10b446[_0xd6fa('0x6d')]=_0x54a775[_0xd6fa('0x5e')]?'queue':_0xd6fa('0x6e');return db[_0xd6fa('0x6f')][_0xd6fa('0x5b')]({'where':{'id':_0x10b446[_0xd6fa('0x70')]},'attributes':[_0xd6fa('0x71'),_0xd6fa('0x72')]})[_0xd6fa('0x26')](function(_0x53e634){if(!_[_0xd6fa('0x73')](_0x4fc13f)&&!_[_0xd6fa('0x73')](_0x53e634[_0xd6fa('0x71')])){_0x10b446['calleridname']=_0x53e634['firstName'];if(!_[_0xd6fa('0x73')](_0x53e634[_0xd6fa('0x72')])){_0x10b446['calleridname']+='\x20'+_0x53e634['lastName'];}}})[_0xd6fa('0x74')](function(){return db[_0xd6fa('0x75')][_0xd6fa('0x59')](_0x10b446);});}})['then'](function(){return _0x4fc13f['status'](0xcc)[_0xd6fa('0x1a')]();})['catch'](handleError(_0x4fc13f,null));};exports[_0xd6fa('0x76')]=function(_0x369eaf,_0x7ea36,_0x2b07ea){var _0x51833a=[];return db[_0xd6fa('0x6f')][_0xd6fa('0x5c')]()[_0xd6fa('0x26')](function(_0x341664){_0x51833a=_[_0xd6fa('0x34')](_0x341664);return _0x369eaf[_0xd6fa('0x67')][_0xd6fa('0x77')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xd6fa('0x78')},'attributes':['id',_0xd6fa('0x79'),_0xd6fa('0x7a')],'raw':!![]});})[_0xd6fa('0x26')](function(_0x11a5e2){if(_0x11a5e2&&_0x11a5e2[_0xd6fa('0x48')]){return db['sequelize'][_0xd6fa('0x7b')](function(_0x351147){var _0x304600={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xd6fa('0x6a'))},'VoiceQueueId':{'$in':_[_0xd6fa('0x2d')](_0x11a5e2,'id')},'$or':[{'UserId':null},{'UserId':_0x369eaf[_0xd6fa('0x67')]['id']}]};var _0xb0933a={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x11a5e2)[_0xd6fa('0x4f')]([_0xd6fa('0x7a'),0x0])[_0xd6fa('0x2d')]('id')[_0xd6fa('0x7c')]()},'$or':[{'UserId':null},{'UserId':_0x369eaf[_0xd6fa('0x67')]['id']}]};var _0x533989={'$or':[_0x304600,_0xb0933a]};var _0x4c7691=[];if(_0x369eaf[_0xd6fa('0x5a')][_0xd6fa('0x7d')]&&_0x369eaf[_0xd6fa('0x5a')][_0xd6fa('0x7d')]===_0xd6fa('0x7e')){if(!_[_0xd6fa('0x7f')](_0x369eaf[_0xd6fa('0x5a')][_0xd6fa('0x80')])){_0x533989['id']={'$in':_0x369eaf['body'][_0xd6fa('0x80')]};}_0x4c7691=[[_0xd6fa('0x81'),_0xd6fa('0x82')],[_0xd6fa('0x83'),_0x11a5e2[0x0]['dialOrderByScheduledAt']===_0xd6fa('0x82')?_0xd6fa('0x84'):_0xd6fa('0x82')],db[_0xd6fa('0x85')][_0xd6fa('0x86')](_0xd6fa('0x87')),['id',_0xd6fa('0x84')]];}else{if(!_['isEmpty'](_0x369eaf[_0xd6fa('0x5a')][_0xd6fa('0x80')])){_0x533989['id']={'$notIn':_0x369eaf[_0xd6fa('0x5a')][_0xd6fa('0x80')]};}_0x4c7691=[[_0xd6fa('0x81'),_0xd6fa('0x84')],[_0xd6fa('0x83'),_0x11a5e2[0x0]['dialOrderByScheduledAt']],db[_0xd6fa('0x85')][_0xd6fa('0x86')](_0xd6fa('0x88')),['id',_0xd6fa('0x82')]];}return db[_0xd6fa('0x2e')][_0xd6fa('0x89')]({'attributes':['id',_0xd6fa('0x8a'),_0xd6fa('0x8b')],'where':_0x533989,'order':_0x4c7691,'transaction':_0x351147,'lock':_0x351147[_0xd6fa('0x8c')][_0xd6fa('0x8d')],'include':[{'model':db[_0xd6fa('0x6f')],'as':'Contact','attributes':_0x51833a,'include':[{'model':db[_0xd6fa('0x8e')],'as':_0xd6fa('0x8f'),'attributes':['id',_0xd6fa('0x2a')]}]},{'model':db[_0xd6fa('0x90')],'as':_0xd6fa('0x91'),'attributes':['id',_0xd6fa('0x2a')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0xd6fa('0x2a'),'dialActive']}]})['then'](function(_0x1a2c19){if(_0x1a2c19){return _0x1a2c19['update']({'UserId':_0x369eaf[_0xd6fa('0x67')]['id']},{'transaction':_0x351147});}});});}})[_0xd6fa('0x26')](handleEntityNotFound(_0x7ea36,null))[_0xd6fa('0x26')](respondWithResult(_0x7ea36,null))[_0xd6fa('0x55')](handleError(_0x7ea36,null));};exports['getOpenContacts']=function(_0x4f4972,_0x4e84e0,_0x2229b4){return _0x4f4972[_0xd6fa('0x67')][_0xd6fa('0x77')]({'where':{'type':_0xd6fa('0x92'),'dialActive':!![],'dialMethod':_0xd6fa('0x78')},'attributes':['id'],'raw':!![]})[_0xd6fa('0x26')](function(_0xa8df1d){if(_0xa8df1d&&_0xa8df1d['length']){return db[_0xd6fa('0x2e')][_0xd6fa('0x1e')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd6fa('0x69')](_0xd6fa('0x6a'))},'VoiceQueueId':{'$in':_['map'](_0xa8df1d,'id')},'$or':[{'UserId':null},{'UserId':_0x4f4972[_0xd6fa('0x67')]['id']}]}});}return 0x0;})[_0xd6fa('0x26')](function(_0x156846){if(!_[_0xd6fa('0x73')](_0x156846)&&_[_0xd6fa('0x93')](_0x156846)){return _0x4e84e0[_0xd6fa('0x19')](0xc8)[_0xd6fa('0x1b')]({'contacts':_0x156846});}else{logger[_0xd6fa('0x28')](_0xd6fa('0x94'),_0xd6fa('0x95'),0x194,'entity\x20not\x20found');_0x4e84e0[_0xd6fa('0x18')](0x194);}})[_0xd6fa('0x55')](handleError(_0x4e84e0,null));};