Built motion from commit 3e059bc2.|2.5.32
[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 _0x7e26=['isNil','calleridname','lastName','finally','CmHopperFinal','getPreview','user','outbound','preview','dialOrderByScheduledAt','sequelize','format','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue','dialActive','getVoiceQueues','YYYY-MM-DD\x20HH:mm:ss','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','reject','destroy','then','error','stack','name','send','index','map','rawAttributes','type','key','query','keys','intersection','model','filters','concat','$or','$gt','$gte','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$iLike','$notILike','$like','$overlap','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CmHopper','includeAll','findAll','rows','catch','show','include','options','find','create','update','body','params','describe','VoiceQueueId','CampaignId','VoiceQueue','updatedAt','state','statedesc','UserId','deleted','deletedat','calleridnum','campaigntype','ivr','CmContact','ContactId','firstName'];(function(_0x2181fc,_0x7283aa){var _0x315da1=function(_0x1df7ca){while(--_0x1df7ca){_0x2181fc['push'](_0x2181fc['shift']());}};_0x315da1(++_0x7283aa);}(_0x7e26,0x14b));var _0x67e2=function(_0x35de94,_0x5f1de9){_0x35de94=_0x35de94-0x0;var _0xf9eb13=_0x7e26[_0x35de94];return _0xf9eb13;};'use strict';var emlformat=require(_0x67e2('0x0'));var rimraf=require(_0x67e2('0x1'));var zipdir=require(_0x67e2('0x2'));var jsonpatch=require(_0x67e2('0x3'));var rp=require(_0x67e2('0x4'));var moment=require(_0x67e2('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x67e2('0x6'));var path=require(_0x67e2('0x7'));var sox=require(_0x67e2('0x8'));var csv=require(_0x67e2('0x9'));var ejs=require(_0x67e2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x67e2('0xb'));var squel=require('squel');var crypto=require(_0x67e2('0xc'));var jsforce=require(_0x67e2('0xd'));var deskjs=require(_0x67e2('0xe'));var toCsv=require(_0x67e2('0x9'));var querystring=require(_0x67e2('0xf'));var Papa=require(_0x67e2('0x10'));var Redis=require('ioredis');var authService=require(_0x67e2('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x67e2('0x12'));var hardwareService=require(_0x67e2('0x13'));var logger=require(_0x67e2('0x14'))(_0x67e2('0x15'));var utils=require(_0x67e2('0x16'));var config=require(_0x67e2('0x17'));var licenseUtil=require(_0x67e2('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2aeab3,_0x2bc8f5){_0x2bc8f5=_0x2bc8f5||0xcc;return function(_0x2c25b4){if(_0x2c25b4){return _0x2aeab3[_0x67e2('0x19')](_0x2bc8f5);}return _0x2aeab3[_0x67e2('0x1a')](_0x2bc8f5)[_0x67e2('0x1b')]();};}function respondWithResult(_0x47567e,_0x321fae){_0x321fae=_0x321fae||0xc8;return function(_0x3ba7bd){if(_0x3ba7bd){return _0x47567e['status'](_0x321fae)[_0x67e2('0x1c')](_0x3ba7bd);}};}function respondWithFilteredResult(_0x12f3a7,_0x54b82d){return function(_0x531653){if(_0x531653){var _0x241a43=typeof _0x54b82d['offset']===_0x67e2('0x1d')&&typeof _0x54b82d['limit']===_0x67e2('0x1d');var _0x13b2b6=_0x531653['count'];var _0x469e75=_0x241a43?0x0:_0x54b82d[_0x67e2('0x1e')];var _0x9247fc=_0x241a43?_0x531653[_0x67e2('0x1f')]:_0x54b82d[_0x67e2('0x1e')]+_0x54b82d[_0x67e2('0x20')];var _0x22cf4f;if(_0x9247fc>=_0x13b2b6){_0x9247fc=_0x13b2b6;_0x22cf4f=0xc8;}else{_0x22cf4f=0xce;}_0x12f3a7['status'](_0x22cf4f);return _0x12f3a7[_0x67e2('0x21')](_0x67e2('0x22'),_0x469e75+'-'+_0x9247fc+'/'+_0x13b2b6)['json'](_0x531653);}return null;};}function patchUpdates(_0x5a9242){return function(_0x1789cb){try{jsonpatch['apply'](_0x1789cb,_0x5a9242,!![]);}catch(_0x46d421){return BPromise[_0x67e2('0x23')](_0x46d421);}return _0x1789cb['save']();};}function saveUpdates(_0x305fef,_0x2535f6){return function(_0x366e33){if(_0x366e33){return _0x366e33['update'](_0x305fef)['then'](function(_0x5e3a4d){return _0x5e3a4d;});}return null;};}function removeEntity(_0x1a5efe,_0x2d7bf5){return function(_0x3dadc8){if(_0x3dadc8){return _0x3dadc8[_0x67e2('0x24')]()[_0x67e2('0x25')](function(){_0x1a5efe[_0x67e2('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf8cf6c,_0x1c0e5e){return function(_0x14dd2f){if(!_0x14dd2f){_0xf8cf6c['sendStatus'](0x194);}return _0x14dd2f;};}function handleError(_0x2d145a,_0x45158c){_0x45158c=_0x45158c||0x1f4;return function(_0x5178a8){logger[_0x67e2('0x26')](_0x5178a8[_0x67e2('0x27')]);if(_0x5178a8[_0x67e2('0x28')]){delete _0x5178a8['name'];}_0x2d145a[_0x67e2('0x1a')](_0x45158c)[_0x67e2('0x29')](_0x5178a8);};}exports[_0x67e2('0x2a')]=function(_0x3e4b33,_0xac908f){var _0x5e7594={},_0x514858={},_0x3faef3={'count':0x0,'rows':[]};var _0x187b95=_[_0x67e2('0x2b')](db['CmHopper'][_0x67e2('0x2c')],function(_0x58f817){return{'name':_0x58f817['fieldName'],'type':_0x58f817[_0x67e2('0x2d')][_0x67e2('0x2e')]};});_0x514858['model']=_[_0x67e2('0x2b')](_0x187b95,_0x67e2('0x28'));_0x514858[_0x67e2('0x2f')]=_[_0x67e2('0x30')](_0x3e4b33[_0x67e2('0x2f')]);_0x514858['filters']=_[_0x67e2('0x31')](_0x514858[_0x67e2('0x32')],_0x514858[_0x67e2('0x2f')]);_0x514858[_0x67e2('0x33')]=_[_0x67e2('0x34')](_0x514858[_0x67e2('0x33')],['$and',_0x67e2('0x35'),_0x67e2('0x36'),_0x67e2('0x37'),'$lt',_0x67e2('0x38'),_0x67e2('0x39'),_0x67e2('0x3a'),_0x67e2('0x3b'),_0x67e2('0x3c'),_0x67e2('0x3d'),_0x67e2('0x3e'),_0x67e2('0x3f'),'$like','$notLike',_0x67e2('0x40'),_0x67e2('0x41'),_0x67e2('0x42'),_0x67e2('0x43'),'$contains',_0x67e2('0x44'),_0x67e2('0x45')]);_0x5e7594[_0x67e2('0x46')]=_[_0x67e2('0x31')](_0x514858[_0x67e2('0x32')],qs[_0x67e2('0x47')](_0x3e4b33[_0x67e2('0x2f')]['fields']));_0x5e7594[_0x67e2('0x46')]=_0x5e7594['attributes'][_0x67e2('0x48')]?_0x5e7594[_0x67e2('0x46')]:_0x514858[_0x67e2('0x32')];if(!_0x3e4b33[_0x67e2('0x2f')][_0x67e2('0x49')](_0x67e2('0x4a'))){_0x5e7594[_0x67e2('0x20')]=qs[_0x67e2('0x20')](_0x3e4b33[_0x67e2('0x2f')]['limit']);_0x5e7594[_0x67e2('0x1e')]=qs[_0x67e2('0x1e')](_0x3e4b33[_0x67e2('0x2f')][_0x67e2('0x1e')]);}_0x5e7594[_0x67e2('0x4b')]=qs[_0x67e2('0x4c')](_0x3e4b33[_0x67e2('0x2f')]['sort']);_0x5e7594[_0x67e2('0x4d')]=qs[_0x67e2('0x33')](_[_0x67e2('0x4e')](_0x3e4b33['query'],_0x514858['filters']),_0x187b95);if(_0x3e4b33['query'][_0x67e2('0x4f')]){_0x5e7594[_0x67e2('0x4d')]=_[_0x67e2('0x50')](_0x5e7594['where'],{'$or':_['map'](_0x187b95,function(_0x4d35fd){if(_0x4d35fd['type']!=='VIRTUAL'){var _0x940c09={};_0x940c09[_0x4d35fd['name']]={'$like':'%'+_0x3e4b33[_0x67e2('0x2f')]['filter']+'%'};return _0x940c09;}})});}_0x5e7594=_[_0x67e2('0x50')]({},_0x5e7594,_0x3e4b33['options']);var _0x40f97d={'where':_0x5e7594['where']};return db[_0x67e2('0x51')][_0x67e2('0x1f')](_0x40f97d)[_0x67e2('0x25')](function(_0x437624){_0x3faef3[_0x67e2('0x1f')]=_0x437624;if(_0x3e4b33['query'][_0x67e2('0x52')]){_0x5e7594['include']=[{'all':!![]}];}return db['CmHopper'][_0x67e2('0x53')](_0x5e7594);})[_0x67e2('0x25')](function(_0x49e14e){_0x3faef3[_0x67e2('0x54')]=_0x49e14e;return _0x3faef3;})[_0x67e2('0x25')](respondWithFilteredResult(_0xac908f,_0x5e7594))[_0x67e2('0x55')](handleError(_0xac908f,null));};exports[_0x67e2('0x56')]=function(_0x6a475d,_0x401528){var _0x1833cf={'raw':!![],'where':{'id':_0x6a475d['params']['id']}},_0x2378b9={};_0x2378b9[_0x67e2('0x32')]=_['keys'](db[_0x67e2('0x51')][_0x67e2('0x2c')]);_0x2378b9['query']=_[_0x67e2('0x30')](_0x6a475d[_0x67e2('0x2f')]);_0x2378b9[_0x67e2('0x33')]=_['intersection'](_0x2378b9[_0x67e2('0x32')],_0x2378b9[_0x67e2('0x2f')]);_0x1833cf['attributes']=_['intersection'](_0x2378b9[_0x67e2('0x32')],qs[_0x67e2('0x47')](_0x6a475d[_0x67e2('0x2f')][_0x67e2('0x47')]));_0x1833cf[_0x67e2('0x46')]=_0x1833cf[_0x67e2('0x46')][_0x67e2('0x48')]?_0x1833cf[_0x67e2('0x46')]:_0x2378b9[_0x67e2('0x32')];if(_0x6a475d[_0x67e2('0x2f')][_0x67e2('0x52')]){_0x1833cf[_0x67e2('0x57')]=[{'all':!![]}];}_0x1833cf=_[_0x67e2('0x50')]({},_0x1833cf,_0x6a475d[_0x67e2('0x58')]);return db[_0x67e2('0x51')][_0x67e2('0x59')](_0x1833cf)[_0x67e2('0x25')](handleEntityNotFound(_0x401528,null))['then'](respondWithResult(_0x401528,null))[_0x67e2('0x55')](handleError(_0x401528,null));};exports[_0x67e2('0x5a')]=function(_0x39b9e5,_0x5744b8){return db[_0x67e2('0x51')][_0x67e2('0x5a')](_0x39b9e5['body'],{})[_0x67e2('0x25')](respondWithResult(_0x5744b8,0xc9))[_0x67e2('0x55')](handleError(_0x5744b8,null));};exports[_0x67e2('0x5b')]=function(_0x32c286,_0x50bfce){if(_0x32c286[_0x67e2('0x5c')]['id']){delete _0x32c286['body']['id'];}return db[_0x67e2('0x51')][_0x67e2('0x59')]({'where':{'id':_0x32c286[_0x67e2('0x5d')]['id']}})[_0x67e2('0x25')](handleEntityNotFound(_0x50bfce,null))[_0x67e2('0x25')](saveUpdates(_0x32c286[_0x67e2('0x5c')],null))['then'](respondWithResult(_0x50bfce,null))[_0x67e2('0x55')](handleError(_0x50bfce,null));};exports[_0x67e2('0x5e')]=function(_0x300da0,_0x1df29e){return db[_0x67e2('0x51')][_0x67e2('0x5e')]()['then'](respondWithResult(_0x1df29e,null))['catch'](handleError(_0x1df29e,null));};exports[_0x67e2('0x24')]=function(_0x1722c2,_0x45ed2d){var _0x5e387b;return db[_0x67e2('0x51')][_0x67e2('0x59')]({'where':{'id':_0x1722c2['params']['id']}})['then'](handleEntityNotFound(_0x45ed2d,null))['then'](function(_0x4f6859){if(_0x4f6859){return _0x4f6859[_0x67e2('0x24')]()[_0x67e2('0x25')](function(_0x12166a){return _0x12166a;});}})['then'](function(_0x4eebba){_0x5e387b=_0x4eebba;if(_0x4eebba){if(_0x4eebba[_0x67e2('0x5f')]||_0x4eebba[_0x67e2('0x60')]){return db[_0x4eebba[_0x67e2('0x5f')]?_0x67e2('0x61'):'Campaign']['find']({'where':{'id':_0x4eebba[_0x67e2('0x5f')]?_0x4eebba['VoiceQueueId']:_0x4eebba[_0x67e2('0x60')]},'attributes':['id',_0x67e2('0x28')],'raw':!![]});}}})['then'](function(_0xa95ee){var _0x1d2fe0={};if(_0xa95ee){_[_0x67e2('0x50')](_0x1d2fe0,_['omit'](_0x5e387b['dataValues'],['createdAt',_0x67e2('0x62'),'id']));_0x1d2fe0[_0x67e2('0x63')]=0x15;_0x1d2fe0[_0x67e2('0x64')]='deleted';_0x1d2fe0['campaign']=_0xa95ee[_0x67e2('0x28')];_0x1d2fe0['membername']=_0x1722c2['user']['name'];_0x1d2fe0[_0x67e2('0x65')]=_0x1722c2['user']['id'];_0x1d2fe0[_0x67e2('0x66')]=!![];_0x1d2fe0[_0x67e2('0x67')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1d2fe0[_0x67e2('0x68')]=_0x5e387b['phone'];_0x1d2fe0[_0x67e2('0x69')]=_0x5e387b['VoiceQueueId']?'queue':_0x67e2('0x6a');return db[_0x67e2('0x6b')][_0x67e2('0x59')]({'where':{'id':_0x1d2fe0[_0x67e2('0x6c')]},'attributes':[_0x67e2('0x6d'),'lastName']})[_0x67e2('0x25')](function(_0x5a576d){if(!_[_0x67e2('0x6e')](_0x45ed2d)&&!_[_0x67e2('0x6e')](_0x5a576d[_0x67e2('0x6d')])){_0x1d2fe0[_0x67e2('0x6f')]=_0x5a576d[_0x67e2('0x6d')];if(!_['isNil'](_0x5a576d[_0x67e2('0x70')])){_0x1d2fe0[_0x67e2('0x6f')]+='\x20'+_0x5a576d[_0x67e2('0x70')];}}})[_0x67e2('0x71')](function(){return db[_0x67e2('0x72')][_0x67e2('0x5a')](_0x1d2fe0);});}})['then'](function(){return _0x45ed2d[_0x67e2('0x1a')](0xcc)[_0x67e2('0x1b')]();})[_0x67e2('0x55')](handleError(_0x45ed2d,null));};exports[_0x67e2('0x73')]=function(_0x483ccb,_0x173e1b,_0x2cb9c7){var _0x161c60=[];return db[_0x67e2('0x6b')]['describe']()[_0x67e2('0x25')](function(_0x23728b){_0x161c60=_[_0x67e2('0x30')](_0x23728b);return _0x483ccb[_0x67e2('0x74')]['getVoiceQueues']({'where':{'type':_0x67e2('0x75'),'dialActive':!![],'dialMethod':_0x67e2('0x76')},'attributes':['id',_0x67e2('0x77')],'raw':!![]});})[_0x67e2('0x25')](function(_0x31bdd7){if(_0x31bdd7&&_0x31bdd7['length']){return db[_0x67e2('0x78')]['transaction'](function(_0xb65a31){var _0x570499={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x67e2('0x79')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x67e2('0x2b')](_0x31bdd7,'id')},'$or':[{'UserId':null},{'UserId':_0x483ccb[_0x67e2('0x74')]['id']}]};var _0x1ad6fe=[];if(_0x483ccb[_0x67e2('0x5c')][_0x67e2('0x7a')]&&_0x483ccb[_0x67e2('0x5c')][_0x67e2('0x7a')]==='prev'){if(!_[_0x67e2('0x7b')](_0x483ccb[_0x67e2('0x5c')][_0x67e2('0x7c')])){_0x570499['id']={'$in':_0x483ccb[_0x67e2('0x5c')][_0x67e2('0x7c')]};}_0x1ad6fe=[[_0x67e2('0x7d'),_0x67e2('0x7e')],[_0x67e2('0x7f'),_0x31bdd7[0x0][_0x67e2('0x77')]===_0x67e2('0x7e')?_0x67e2('0x80'):_0x67e2('0x7e')],db[_0x67e2('0x78')][_0x67e2('0x81')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x67e2('0x80')]];}else{if(!_[_0x67e2('0x7b')](_0x483ccb[_0x67e2('0x5c')]['hopperIds'])){_0x570499['id']={'$notIn':_0x483ccb[_0x67e2('0x5c')]['hopperIds']};}_0x1ad6fe=[['priority',_0x67e2('0x80')],['scheduledAt',_0x31bdd7[0x0]['dialOrderByScheduledAt']],db[_0x67e2('0x78')]['literal'](_0x67e2('0x82')),['id',_0x67e2('0x7e')]];}return db['CmHopper'][_0x67e2('0x83')]({'attributes':['id',_0x67e2('0x84')],'where':_0x570499,'order':_0x1ad6fe,'transaction':_0xb65a31,'lock':_0xb65a31[_0x67e2('0x85')][_0x67e2('0x86')],'include':[{'model':db['CmContact'],'as':_0x67e2('0x87'),'attributes':_0x161c60,'include':[{'model':db[_0x67e2('0x88')],'as':'Company','attributes':['id',_0x67e2('0x28')]}]},{'model':db[_0x67e2('0x89')],'as':_0x67e2('0x8a'),'attributes':['id','name']},{'model':db[_0x67e2('0x61')],'as':_0x67e2('0x8b'),'attributes':['id','name',_0x67e2('0x8c')]}]})[_0x67e2('0x25')](function(_0x46cc35){if(_0x46cc35){return _0x46cc35[_0x67e2('0x5b')]({'UserId':_0x483ccb[_0x67e2('0x74')]['id']},{'transaction':_0xb65a31});}});});}})[_0x67e2('0x25')](handleEntityNotFound(_0x173e1b,null))[_0x67e2('0x25')](respondWithResult(_0x173e1b,null))[_0x67e2('0x55')](handleError(_0x173e1b,null));};exports['getOpenContacts']=function(_0x58330a,_0x11fa7e,_0x2a069e){return _0x58330a['user'][_0x67e2('0x8d')]({'where':{'type':_0x67e2('0x75'),'dialActive':!![],'dialMethod':_0x67e2('0x76')},'attributes':['id'],'raw':!![]})[_0x67e2('0x25')](function(_0x1fa0cc){if(_0x1fa0cc&&_0x1fa0cc['length']){return db['CmHopper'][_0x67e2('0x1f')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x67e2('0x79')](_0x67e2('0x8e'))},'VoiceQueueId':{'$in':_[_0x67e2('0x2b')](_0x1fa0cc,'id')},'$or':[{'UserId':null},{'UserId':_0x58330a[_0x67e2('0x74')]['id']}]}});}return 0x0;})['then'](function(_0x4b7a07){if(!_['isNil'](_0x4b7a07)&&_[_0x67e2('0x8f')](_0x4b7a07)){return _0x11fa7e[_0x67e2('0x1a')](0xc8)[_0x67e2('0x1c')]({'contacts':_0x4b7a07});}else{logger['error'](_0x67e2('0x90'),_0x67e2('0x91'),0x194,_0x67e2('0x92'));_0x11fa7e[_0x67e2('0x19')](0x194);}})[_0x67e2('0x55')](handleError(_0x11fa7e,null));};