83c5374a1d76973512677a174e76b5659eee6605
[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 _0xb01a=['end','count','offset','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','intersection','filters','concat','$and','$or','$gt','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$notLike','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','nolimit','sort','where','pick','merge','options','CmHopper','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','state','statedesc','campaign','membername','user','UserId','deleted','deletedat','phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','getVoiceQueues','dialOrderByScheduledAt','length','format','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','CmCompany','Company','List','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0xb01a,0x1a1));var _0xab01=function(_0x22dae4,_0x51d7a4){_0x22dae4=_0x22dae4-0x0;var _0x5862ff=_0xb01a[_0x22dae4];return _0x5862ff;};'use strict';var pdf=require(_0xab01('0x0'));var emlformat=require(_0xab01('0x1'));var rimraf=require(_0xab01('0x2'));var zipdir=require(_0xab01('0x3'));var jsonpatch=require(_0xab01('0x4'));var rp=require(_0xab01('0x5'));var moment=require(_0xab01('0x6'));var BPromise=require(_0xab01('0x7'));var Mustache=require(_0xab01('0x8'));var util=require(_0xab01('0x9'));var path=require(_0xab01('0xa'));var sox=require(_0xab01('0xb'));var csv=require(_0xab01('0xc'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xab01('0xd'));var squel=require(_0xab01('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab01('0xf'));var toCsv=require(_0xab01('0xc'));var querystring=require('querystring');var Papa=require(_0xab01('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xab01('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xab01('0x12'));var logger=require(_0xab01('0x13'))('api');var utils=require(_0xab01('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xab01('0x15'))['db'];function respondWithStatusCode(_0x37088b,_0x1ededa){_0x1ededa=_0x1ededa||0xcc;return function(_0xe9d23c){if(_0xe9d23c){return _0x37088b[_0xab01('0x16')](_0x1ededa);}return _0x37088b[_0xab01('0x17')](_0x1ededa)[_0xab01('0x18')]();};}function respondWithResult(_0x39c46c,_0x509ceb){_0x509ceb=_0x509ceb||0xc8;return function(_0x4812c6){if(_0x4812c6){return _0x39c46c['status'](_0x509ceb)['json'](_0x4812c6);}};}function respondWithFilteredResult(_0x32001d,_0x4c0557){return function(_0x2bfa8a){if(_0x2bfa8a){var _0x2d9c23=_0x2bfa8a[_0xab01('0x19')],_0x26af11=_0x4c0557['offset'],_0x17dddb=_0x4c0557[_0xab01('0x1a')]+_0x4c0557[_0xab01('0x1b')],_0x54bd09;if(_0x17dddb>=_0x2d9c23){_0x17dddb=_0x2d9c23;_0x54bd09=0xc8;}else{_0x54bd09=0xce;}_0x32001d['status'](_0x54bd09);return _0x32001d['set'](_0xab01('0x1c'),_0x26af11+'-'+_0x17dddb+'/'+_0x2d9c23)[_0xab01('0x1d')](_0x2bfa8a);}return null;};}function patchUpdates(_0xa9f649){return function(_0x1d5af2){try{jsonpatch[_0xab01('0x1e')](_0x1d5af2,_0xa9f649,!![]);}catch(_0x2b83e8){return BPromise[_0xab01('0x1f')](_0x2b83e8);}return _0x1d5af2[_0xab01('0x20')]();};}function saveUpdates(_0x457e75,_0x331daf){return function(_0x50d0bd){if(_0x50d0bd){return _0x50d0bd[_0xab01('0x21')](_0x457e75)[_0xab01('0x22')](function(_0x331607){return _0x331607;});}return null;};}function removeEntity(_0xac3a88,_0x405c93){return function(_0x180344){if(_0x180344){return _0x180344[_0xab01('0x23')]()[_0xab01('0x22')](function(){_0xac3a88['status'](0xcc)[_0xab01('0x18')]();});}};}function handleEntityNotFound(_0x152d5e,_0x27b430){return function(_0x343ae6){if(!_0x343ae6){_0x152d5e[_0xab01('0x16')](0x194);}return _0x343ae6;};}function handleError(_0x1ebc65,_0x2e4405){_0x2e4405=_0x2e4405||0x1f4;return function(_0x55831d){logger[_0xab01('0x24')](_0x55831d[_0xab01('0x25')]);if(_0x55831d[_0xab01('0x26')]){delete _0x55831d[_0xab01('0x26')];}_0x1ebc65[_0xab01('0x17')](_0x2e4405)[_0xab01('0x27')](_0x55831d);};}exports[_0xab01('0x28')]=function(_0x5b1014,_0xd908be){var _0x3533e5={},_0x34908d={},_0x36c53f={'count':0x0,'rows':[]};var _0x3bb7fc=_[_0xab01('0x29')](db['CmHopper'][_0xab01('0x2a')],function(_0x209e10){return{'name':_0x209e10['fieldName'],'type':_0x209e10[_0xab01('0x2b')][_0xab01('0x2c')]};});_0x34908d[_0xab01('0x2d')]=_[_0xab01('0x29')](_0x3bb7fc,_0xab01('0x26'));_0x34908d[_0xab01('0x2e')]=_[_0xab01('0x2f')](_0x5b1014[_0xab01('0x2e')]);_0x34908d['filters']=_[_0xab01('0x30')](_0x34908d[_0xab01('0x2d')],_0x34908d['query']);_0x34908d[_0xab01('0x31')]=_[_0xab01('0x32')](_0x34908d[_0xab01('0x31')],[_0xab01('0x33'),_0xab01('0x34'),_0xab01('0x35'),'$gte',_0xab01('0x36'),_0xab01('0x37'),_0xab01('0x38'),_0xab01('0x39'),_0xab01('0x3a'),_0xab01('0x3b'),_0xab01('0x3c'),'$in','$notIn','$like',_0xab01('0x3d'),_0xab01('0x3e'),_0xab01('0x3f'),_0xab01('0x40'),_0xab01('0x41'),_0xab01('0x42'),_0xab01('0x43'),_0xab01('0x44')]);_0x3533e5[_0xab01('0x45')]=_[_0xab01('0x30')](_0x34908d[_0xab01('0x2d')],qs[_0xab01('0x46')](_0x5b1014[_0xab01('0x2e')][_0xab01('0x46')]));_0x3533e5[_0xab01('0x45')]=_0x3533e5[_0xab01('0x45')]['length']?_0x3533e5['attributes']:_0x34908d[_0xab01('0x2d')];if(!_0x5b1014[_0xab01('0x2e')]['hasOwnProperty'](_0xab01('0x47'))){_0x3533e5[_0xab01('0x1b')]=qs[_0xab01('0x1b')](_0x5b1014['query'][_0xab01('0x1b')]);_0x3533e5['offset']=qs['offset'](_0x5b1014[_0xab01('0x2e')][_0xab01('0x1a')]);}_0x3533e5['order']=qs[_0xab01('0x48')](_0x5b1014[_0xab01('0x2e')]['sort']);_0x3533e5[_0xab01('0x49')]=qs[_0xab01('0x31')](_[_0xab01('0x4a')](_0x5b1014[_0xab01('0x2e')],_0x34908d[_0xab01('0x31')]),_0x3bb7fc);if(_0x5b1014[_0xab01('0x2e')]['filter']){_0x3533e5[_0xab01('0x49')]=_[_0xab01('0x4b')](_0x3533e5[_0xab01('0x49')],{'$or':_[_0xab01('0x29')](_0x3bb7fc,function(_0x2a0dfd){if(_0x2a0dfd['type']!=='VIRTUAL'){var _0x4ddaff={};_0x4ddaff[_0x2a0dfd[_0xab01('0x26')]]={'$like':'%'+_0x5b1014[_0xab01('0x2e')]['filter']+'%'};return _0x4ddaff;}})});}_0x3533e5=_[_0xab01('0x4b')]({},_0x3533e5,_0x5b1014[_0xab01('0x4c')]);var _0x1df4d9={'where':_0x3533e5[_0xab01('0x49')]};return db[_0xab01('0x4d')][_0xab01('0x19')](_0x1df4d9)[_0xab01('0x22')](function(_0x16da17){_0x36c53f[_0xab01('0x19')]=_0x16da17;if(_0x5b1014[_0xab01('0x2e')][_0xab01('0x4e')]){_0x3533e5[_0xab01('0x4f')]=[{'all':!![]}];}return db[_0xab01('0x4d')][_0xab01('0x50')](_0x3533e5);})[_0xab01('0x22')](function(_0x21fa1a){_0x36c53f[_0xab01('0x51')]=_0x21fa1a;return _0x36c53f;})['then'](respondWithFilteredResult(_0xd908be,_0x3533e5))['catch'](handleError(_0xd908be,null));};exports[_0xab01('0x52')]=function(_0x395a11,_0xc1fcfb){var _0x8c8712={'raw':!![],'where':{'id':_0x395a11[_0xab01('0x53')]['id']}},_0x866b9d={};_0x866b9d['model']=_[_0xab01('0x2f')](db[_0xab01('0x4d')]['rawAttributes']);_0x866b9d[_0xab01('0x2e')]=_[_0xab01('0x2f')](_0x395a11[_0xab01('0x2e')]);_0x866b9d['filters']=_[_0xab01('0x30')](_0x866b9d[_0xab01('0x2d')],_0x866b9d[_0xab01('0x2e')]);_0x8c8712[_0xab01('0x45')]=_[_0xab01('0x30')](_0x866b9d['model'],qs[_0xab01('0x46')](_0x395a11['query'][_0xab01('0x46')]));_0x8c8712[_0xab01('0x45')]=_0x8c8712[_0xab01('0x45')]['length']?_0x8c8712[_0xab01('0x45')]:_0x866b9d[_0xab01('0x2d')];if(_0x395a11[_0xab01('0x2e')][_0xab01('0x4e')]){_0x8c8712['include']=[{'all':!![]}];}_0x8c8712=_[_0xab01('0x4b')]({},_0x8c8712,_0x395a11[_0xab01('0x4c')]);return db[_0xab01('0x4d')][_0xab01('0x54')](_0x8c8712)[_0xab01('0x22')](handleEntityNotFound(_0xc1fcfb,null))['then'](respondWithResult(_0xc1fcfb,null))[_0xab01('0x55')](handleError(_0xc1fcfb,null));};exports[_0xab01('0x56')]=function(_0x5c0b2f,_0x29dae2){return db[_0xab01('0x4d')][_0xab01('0x56')](_0x5c0b2f[_0xab01('0x57')],{})[_0xab01('0x22')](respondWithResult(_0x29dae2,0xc9))[_0xab01('0x55')](handleError(_0x29dae2,null));};exports[_0xab01('0x21')]=function(_0x5755a1,_0x5b4fab){if(_0x5755a1[_0xab01('0x57')]['id']){delete _0x5755a1[_0xab01('0x57')]['id'];}return db[_0xab01('0x4d')][_0xab01('0x54')]({'where':{'id':_0x5755a1['params']['id']}})['then'](handleEntityNotFound(_0x5b4fab,null))[_0xab01('0x22')](saveUpdates(_0x5755a1[_0xab01('0x57')],null))[_0xab01('0x22')](respondWithResult(_0x5b4fab,null))[_0xab01('0x55')](handleError(_0x5b4fab,null));};exports[_0xab01('0x58')]=function(_0x10e0de,_0x24bd8a){return db['CmHopper']['describe']()[_0xab01('0x22')](respondWithResult(_0x24bd8a,null))[_0xab01('0x55')](handleError(_0x24bd8a,null));};exports[_0xab01('0x23')]=function(_0x176f53,_0x3eba5e){var _0x4fef68;return db['CmHopper']['find']({'where':{'id':_0x176f53[_0xab01('0x53')]['id']}})[_0xab01('0x22')](handleEntityNotFound(_0x3eba5e,null))[_0xab01('0x22')](function(_0x2b6e9d){if(_0x2b6e9d){return _0x2b6e9d[_0xab01('0x23')]()[_0xab01('0x22')](function(_0xeaca6f){return _0xeaca6f;});}})[_0xab01('0x22')](function(_0x4b601a){_0x4fef68=_0x4b601a;if(_0x4b601a){if(_0x4b601a[_0xab01('0x59')]||_0x4b601a[_0xab01('0x5a')]){return db[_0x4b601a[_0xab01('0x59')]?_0xab01('0x5b'):_0xab01('0x5c')][_0xab01('0x54')]({'where':{'id':_0x4b601a[_0xab01('0x59')]?_0x4b601a[_0xab01('0x59')]:_0x4b601a[_0xab01('0x5a')]},'attributes':['id',_0xab01('0x26')],'raw':!![]});}}})[_0xab01('0x22')](function(_0x3800de){var _0x27a088={};if(_0x3800de){_[_0xab01('0x4b')](_0x27a088,_[_0xab01('0x5d')](_0x4fef68[_0xab01('0x5e')],[_0xab01('0x5f'),'updatedAt','id']));_0x27a088[_0xab01('0x60')]=0x15;_0x27a088[_0xab01('0x61')]='deleted';_0x27a088[_0xab01('0x62')]=_0x3800de[_0xab01('0x26')];_0x27a088[_0xab01('0x63')]=_0x176f53[_0xab01('0x64')][_0xab01('0x26')];_0x27a088[_0xab01('0x65')]=_0x176f53['user']['id'];_0x27a088[_0xab01('0x66')]=!![];_0x27a088[_0xab01('0x67')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x27a088['calleridnum']=_0x4fef68[_0xab01('0x68')];_0x27a088[_0xab01('0x69')]=_0x4fef68[_0xab01('0x59')]?_0xab01('0x6a'):_0xab01('0x6b');return db['CmContact'][_0xab01('0x54')]({'where':{'id':_0x27a088[_0xab01('0x6c')]},'attributes':[_0xab01('0x6d'),_0xab01('0x6e')]})[_0xab01('0x22')](function(_0x117477){if(!_[_0xab01('0x6f')](_0x3eba5e)&&!_[_0xab01('0x6f')](_0x117477[_0xab01('0x6d')])){_0x27a088['calleridname']=_0x117477[_0xab01('0x6d')];if(!_[_0xab01('0x6f')](_0x117477['lastName'])){_0x27a088[_0xab01('0x70')]+='\x20'+_0x117477[_0xab01('0x6e')];}}})[_0xab01('0x71')](function(){return db[_0xab01('0x72')][_0xab01('0x56')](_0x27a088);});}})[_0xab01('0x22')](function(){return _0x3eba5e['status'](0xcc)[_0xab01('0x18')]();})[_0xab01('0x55')](handleError(_0x3eba5e,null));};exports[_0xab01('0x73')]=function(_0x23af2d,_0x3fc0d1,_0x410ca0){var _0x5ae48e=[];return db[_0xab01('0x74')][_0xab01('0x58')]()['then'](function(_0x144062){_0x5ae48e=_['keys'](_0x144062);return _0x23af2d['user'][_0xab01('0x75')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xab01('0x76')],'raw':!![]});})['then'](function(_0x2bb770){if(_0x2bb770&&_0x2bb770[_0xab01('0x77')]){return db['sequelize']['transaction'](function(_0x4a7a96){var _0x36f0a0={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xab01('0x78')](_0xab01('0x79'))},'VoiceQueueId':{'$in':_[_0xab01('0x29')](_0x2bb770,'id')},'$or':[{'UserId':null},{'UserId':_0x23af2d[_0xab01('0x64')]['id']}]};var _0x445263=[];if(_0x23af2d[_0xab01('0x57')][_0xab01('0x7a')]&&_0x23af2d['body']['direction']===_0xab01('0x7b')){if(!_[_0xab01('0x7c')](_0x23af2d[_0xab01('0x57')][_0xab01('0x7d')])){_0x36f0a0['id']={'$in':_0x23af2d[_0xab01('0x57')]['hopperIds']};}_0x445263=[[_0xab01('0x7e'),_0xab01('0x7f')],[_0xab01('0x80'),_0x2bb770[0x0][_0xab01('0x76')]==='ASC'?'DESC':_0xab01('0x7f')],db[_0xab01('0x81')][_0xab01('0x82')](_0xab01('0x83')),['id',_0xab01('0x84')]];}else{if(!_['isEmpty'](_0x23af2d[_0xab01('0x57')][_0xab01('0x7d')])){_0x36f0a0['id']={'$notIn':_0x23af2d[_0xab01('0x57')][_0xab01('0x7d')]};}_0x445263=[[_0xab01('0x7e'),_0xab01('0x84')],[_0xab01('0x80'),_0x2bb770[0x0][_0xab01('0x76')]],db['sequelize'][_0xab01('0x82')](_0xab01('0x85')),['id',_0xab01('0x7f')]];}return db[_0xab01('0x4d')][_0xab01('0x86')]({'attributes':['id',_0xab01('0x87')],'where':_0x36f0a0,'order':_0x445263,'transaction':_0x4a7a96,'lock':_0x4a7a96[_0xab01('0x88')][_0xab01('0x89')],'include':[{'model':db[_0xab01('0x74')],'as':'Contact','attributes':_0x5ae48e,'include':[{'model':db[_0xab01('0x8a')],'as':_0xab01('0x8b'),'attributes':['id',_0xab01('0x26')]}]},{'model':db['CmList'],'as':_0xab01('0x8c'),'attributes':['id','name']},{'model':db[_0xab01('0x5b')],'as':'Queue','attributes':['id',_0xab01('0x26'),_0xab01('0x8d')]}]})[_0xab01('0x22')](function(_0x50cc4e){if(_0x50cc4e){return _0x50cc4e[_0xab01('0x21')]({'UserId':_0x23af2d[_0xab01('0x64')]['id']},{'transaction':_0x4a7a96});}});});}})[_0xab01('0x22')](handleEntityNotFound(_0x3fc0d1,null))[_0xab01('0x22')](respondWithResult(_0x3fc0d1,null))['catch'](handleError(_0x3fc0d1,null));};exports[_0xab01('0x8e')]=function(_0x178f5e,_0x82d64c,_0x389b29){return _0x178f5e[_0xab01('0x64')][_0xab01('0x75')]({'where':{'type':_0xab01('0x8f'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0xab01('0x22')](function(_0xab4c32){if(_0xab4c32&&_0xab4c32[_0xab01('0x77')]){return db[_0xab01('0x4d')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xab01('0x78')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xab01('0x29')](_0xab4c32,'id')},'$or':[{'UserId':null},{'UserId':_0x178f5e[_0xab01('0x64')]['id']}]}});}return 0x0;})['then'](function(_0x8cffc9){if(!_[_0xab01('0x6f')](_0x8cffc9)&&_[_0xab01('0x90')](_0x8cffc9)){return _0x82d64c[_0xab01('0x17')](0xc8)[_0xab01('0x1d')]({'contacts':_0x8cffc9});}else{logger[_0xab01('0x24')](_0xab01('0x91'),_0xab01('0x8e'),0x194,_0xab01('0x92'));_0x82d64c['sendStatus'](0x194);}})[_0xab01('0x55')](handleError(_0x82d64c,null));};