5420196beaabfb4557a607c9cb63cb48c2668e91
[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 _0x0df3=['calleridname','finally','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','scheduledAt','DESC','ASC','COALESCE(CmHopper.UserId,\x200)\x20ASC','priority','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','CmContact','Contact','CmCompany','Company','List','Queue','dialActive','getOpenContacts','isNumber','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','Content-Range','apply','reject','then','destroy','error','name','index','map','CmHopper','rawAttributes','key','model','query','keys','intersection','concat','filters','$and','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$any','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','merge','options','find','create','body','update','describe','CampaignId','VoiceQueueId','VoiceQueue','Campaign','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','firstName','isNil','lastName'];(function(_0x3d07be,_0x46360f){var _0x20ff90=function(_0x53d13a){while(--_0x53d13a){_0x3d07be['push'](_0x3d07be['shift']());}};_0x20ff90(++_0x46360f);}(_0x0df3,0xb2));var _0x30df=function(_0x592e40,_0x2ed011){_0x592e40=_0x592e40-0x0;var _0x5d4288=_0x0df3[_0x592e40];return _0x5d4288;};'use strict';var emlformat=require(_0x30df('0x0'));var rimraf=require(_0x30df('0x1'));var zipdir=require(_0x30df('0x2'));var jsonpatch=require(_0x30df('0x3'));var rp=require(_0x30df('0x4'));var moment=require(_0x30df('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x30df('0x6'));var util=require('util');var path=require(_0x30df('0x7'));var sox=require('sox');var csv=require(_0x30df('0x8'));var ejs=require(_0x30df('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x30df('0xa'));var crypto=require(_0x30df('0xb'));var jsforce=require(_0x30df('0xc'));var deskjs=require(_0x30df('0xd'));var toCsv=require('to-csv');var querystring=require(_0x30df('0xe'));var Papa=require('papaparse');var Redis=require(_0x30df('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x30df('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x30df('0x11'));var logger=require(_0x30df('0x12'))('api');var utils=require(_0x30df('0x13'));var config=require(_0x30df('0x14'));var licenseUtil=require(_0x30df('0x15'));var db=require(_0x30df('0x16'))['db'];function respondWithStatusCode(_0x592e30,_0x24f5a1){_0x24f5a1=_0x24f5a1||0xcc;return function(_0x5ec3e9){if(_0x5ec3e9){return _0x592e30[_0x30df('0x17')](_0x24f5a1);}return _0x592e30[_0x30df('0x18')](_0x24f5a1)[_0x30df('0x19')]();};}function respondWithResult(_0x11abc8,_0x4cfa49){_0x4cfa49=_0x4cfa49||0xc8;return function(_0x3067f7){if(_0x3067f7){return _0x11abc8[_0x30df('0x18')](_0x4cfa49)[_0x30df('0x1a')](_0x3067f7);}};}function respondWithFilteredResult(_0x1f5e84,_0x204a22){return function(_0x2effbe){if(_0x2effbe){var _0x22dcda=_0x2effbe[_0x30df('0x1b')],_0x22b92e=_0x204a22[_0x30df('0x1c')],_0x2bd82a=_0x204a22[_0x30df('0x1c')]+_0x204a22[_0x30df('0x1d')],_0x21cf8e;if(_0x2bd82a>=_0x22dcda){_0x2bd82a=_0x22dcda;_0x21cf8e=0xc8;}else{_0x21cf8e=0xce;}_0x1f5e84['status'](_0x21cf8e);return _0x1f5e84['set'](_0x30df('0x1e'),_0x22b92e+'-'+_0x2bd82a+'/'+_0x22dcda)[_0x30df('0x1a')](_0x2effbe);}return null;};}function patchUpdates(_0x30a277){return function(_0x31eea6){try{jsonpatch[_0x30df('0x1f')](_0x31eea6,_0x30a277,!![]);}catch(_0x30988e){return BPromise[_0x30df('0x20')](_0x30988e);}return _0x31eea6['save']();};}function saveUpdates(_0x5c9fe5,_0x9066d5){return function(_0x216c66){if(_0x216c66){return _0x216c66['update'](_0x5c9fe5)[_0x30df('0x21')](function(_0x18fbce){return _0x18fbce;});}return null;};}function removeEntity(_0x32a675,_0x8915d){return function(_0x3b5888){if(_0x3b5888){return _0x3b5888[_0x30df('0x22')]()[_0x30df('0x21')](function(){_0x32a675[_0x30df('0x18')](0xcc)[_0x30df('0x19')]();});}};}function handleEntityNotFound(_0x5db941,_0x5e60b4){return function(_0x5f0ce9){if(!_0x5f0ce9){_0x5db941['sendStatus'](0x194);}return _0x5f0ce9;};}function handleError(_0x17182f,_0x4e3a9a){_0x4e3a9a=_0x4e3a9a||0x1f4;return function(_0x54d314){logger[_0x30df('0x23')](_0x54d314['stack']);if(_0x54d314[_0x30df('0x24')]){delete _0x54d314[_0x30df('0x24')];}_0x17182f['status'](_0x4e3a9a)['send'](_0x54d314);};}exports[_0x30df('0x25')]=function(_0x5411d4,_0x5dfacc){var _0x5968e0={},_0x91544={},_0x380a12={'count':0x0,'rows':[]};var _0xbb8566=_[_0x30df('0x26')](db[_0x30df('0x27')][_0x30df('0x28')],function(_0x359e86){return{'name':_0x359e86['fieldName'],'type':_0x359e86['type'][_0x30df('0x29')]};});_0x91544[_0x30df('0x2a')]=_[_0x30df('0x26')](_0xbb8566,_0x30df('0x24'));_0x91544[_0x30df('0x2b')]=_[_0x30df('0x2c')](_0x5411d4[_0x30df('0x2b')]);_0x91544['filters']=_[_0x30df('0x2d')](_0x91544[_0x30df('0x2a')],_0x91544[_0x30df('0x2b')]);_0x91544['filters']=_[_0x30df('0x2e')](_0x91544[_0x30df('0x2f')],[_0x30df('0x30'),'$or',_0x30df('0x31'),_0x30df('0x32'),_0x30df('0x33'),_0x30df('0x34'),_0x30df('0x35'),_0x30df('0x36'),'$not',_0x30df('0x37'),_0x30df('0x38'),_0x30df('0x39'),_0x30df('0x3a'),_0x30df('0x3b'),_0x30df('0x3c'),_0x30df('0x3d'),_0x30df('0x3e'),'$like','$overlap',_0x30df('0x3f'),'$contained',_0x30df('0x40')]);_0x5968e0[_0x30df('0x41')]=_[_0x30df('0x2d')](_0x91544['model'],qs['fields'](_0x5411d4[_0x30df('0x2b')]['fields']));_0x5968e0['attributes']=_0x5968e0[_0x30df('0x41')][_0x30df('0x42')]?_0x5968e0[_0x30df('0x41')]:_0x91544['model'];if(!_0x5411d4['query'][_0x30df('0x43')](_0x30df('0x44'))){_0x5968e0[_0x30df('0x1d')]=qs[_0x30df('0x1d')](_0x5411d4[_0x30df('0x2b')][_0x30df('0x1d')]);_0x5968e0[_0x30df('0x1c')]=qs[_0x30df('0x1c')](_0x5411d4[_0x30df('0x2b')]['offset']);}_0x5968e0[_0x30df('0x45')]=qs['sort'](_0x5411d4[_0x30df('0x2b')]['sort']);_0x5968e0[_0x30df('0x46')]=qs[_0x30df('0x2f')](_[_0x30df('0x47')](_0x5411d4[_0x30df('0x2b')],_0x91544[_0x30df('0x2f')]),_0xbb8566);if(_0x5411d4['query'][_0x30df('0x48')]){_0x5968e0[_0x30df('0x46')]=_['merge'](_0x5968e0['where'],{'$or':_[_0x30df('0x26')](_0xbb8566,function(_0x5cd52d){if(_0x5cd52d[_0x30df('0x49')]!==_0x30df('0x4a')){var _0x455c97={};_0x455c97[_0x5cd52d[_0x30df('0x24')]]={'$like':'%'+_0x5411d4[_0x30df('0x2b')][_0x30df('0x48')]+'%'};return _0x455c97;}})});}_0x5968e0=_['merge']({},_0x5968e0,_0x5411d4['options']);var _0x346c38={'where':_0x5968e0['where']};return db['CmHopper'][_0x30df('0x1b')](_0x346c38)[_0x30df('0x21')](function(_0x104a90){_0x380a12[_0x30df('0x1b')]=_0x104a90;if(_0x5411d4[_0x30df('0x2b')][_0x30df('0x4b')]){_0x5968e0[_0x30df('0x4c')]=[{'all':!![]}];}return db[_0x30df('0x27')][_0x30df('0x4d')](_0x5968e0);})[_0x30df('0x21')](function(_0x1cd807){_0x380a12[_0x30df('0x4e')]=_0x1cd807;return _0x380a12;})[_0x30df('0x21')](respondWithFilteredResult(_0x5dfacc,_0x5968e0))[_0x30df('0x4f')](handleError(_0x5dfacc,null));};exports[_0x30df('0x50')]=function(_0x174f80,_0x1417c2){var _0x1b4619={'raw':!![],'where':{'id':_0x174f80[_0x30df('0x51')]['id']}},_0x3bc48c={};_0x3bc48c[_0x30df('0x2a')]=_[_0x30df('0x2c')](db[_0x30df('0x27')][_0x30df('0x28')]);_0x3bc48c[_0x30df('0x2b')]=_[_0x30df('0x2c')](_0x174f80['query']);_0x3bc48c['filters']=_['intersection'](_0x3bc48c['model'],_0x3bc48c[_0x30df('0x2b')]);_0x1b4619[_0x30df('0x41')]=_[_0x30df('0x2d')](_0x3bc48c[_0x30df('0x2a')],qs['fields'](_0x174f80['query'][_0x30df('0x52')]));_0x1b4619[_0x30df('0x41')]=_0x1b4619[_0x30df('0x41')][_0x30df('0x42')]?_0x1b4619[_0x30df('0x41')]:_0x3bc48c[_0x30df('0x2a')];if(_0x174f80['query'][_0x30df('0x4b')]){_0x1b4619[_0x30df('0x4c')]=[{'all':!![]}];}_0x1b4619=_[_0x30df('0x53')]({},_0x1b4619,_0x174f80[_0x30df('0x54')]);return db[_0x30df('0x27')][_0x30df('0x55')](_0x1b4619)[_0x30df('0x21')](handleEntityNotFound(_0x1417c2,null))[_0x30df('0x21')](respondWithResult(_0x1417c2,null))[_0x30df('0x4f')](handleError(_0x1417c2,null));};exports[_0x30df('0x56')]=function(_0x3db7fe,_0x4ec5a0){return db[_0x30df('0x27')][_0x30df('0x56')](_0x3db7fe[_0x30df('0x57')],{})[_0x30df('0x21')](respondWithResult(_0x4ec5a0,0xc9))[_0x30df('0x4f')](handleError(_0x4ec5a0,null));};exports[_0x30df('0x58')]=function(_0xf385f1,_0x1312c5){if(_0xf385f1[_0x30df('0x57')]['id']){delete _0xf385f1[_0x30df('0x57')]['id'];}return db[_0x30df('0x27')]['find']({'where':{'id':_0xf385f1[_0x30df('0x51')]['id']}})[_0x30df('0x21')](handleEntityNotFound(_0x1312c5,null))[_0x30df('0x21')](saveUpdates(_0xf385f1[_0x30df('0x57')],null))['then'](respondWithResult(_0x1312c5,null))[_0x30df('0x4f')](handleError(_0x1312c5,null));};exports['describe']=function(_0x4d488f,_0x38ca41){return db[_0x30df('0x27')][_0x30df('0x59')]()['then'](respondWithResult(_0x38ca41,null))['catch'](handleError(_0x38ca41,null));};exports[_0x30df('0x22')]=function(_0x7759fe,_0x39254e){var _0x139362;return db[_0x30df('0x27')][_0x30df('0x55')]({'where':{'id':_0x7759fe[_0x30df('0x51')]['id']}})[_0x30df('0x21')](handleEntityNotFound(_0x39254e,null))[_0x30df('0x21')](function(_0x558665){if(_0x558665){return _0x558665[_0x30df('0x22')]()[_0x30df('0x21')](function(_0x12bb3c){return _0x12bb3c;});}})[_0x30df('0x21')](function(_0x3daf95){_0x139362=_0x3daf95;if(_0x3daf95){if(_0x3daf95['VoiceQueueId']||_0x3daf95[_0x30df('0x5a')]){return db[_0x3daf95[_0x30df('0x5b')]?_0x30df('0x5c'):_0x30df('0x5d')][_0x30df('0x55')]({'where':{'id':_0x3daf95[_0x30df('0x5b')]?_0x3daf95[_0x30df('0x5b')]:_0x3daf95[_0x30df('0x5a')]},'attributes':['id',_0x30df('0x24')],'raw':!![]});}}})['then'](function(_0x1843eb){var _0x8faab6={};if(_0x1843eb){_[_0x30df('0x53')](_0x8faab6,_['omit'](_0x139362['dataValues'],[_0x30df('0x5e'),_0x30df('0x5f'),'id']));_0x8faab6[_0x30df('0x60')]=0x15;_0x8faab6[_0x30df('0x61')]=_0x30df('0x62');_0x8faab6[_0x30df('0x63')]=_0x1843eb[_0x30df('0x24')];_0x8faab6[_0x30df('0x64')]=_0x7759fe[_0x30df('0x65')][_0x30df('0x24')];_0x8faab6['UserId']=_0x7759fe['user']['id'];_0x8faab6['deleted']=!![];_0x8faab6[_0x30df('0x66')]=moment()[_0x30df('0x67')](_0x30df('0x68'));_0x8faab6[_0x30df('0x69')]=_0x139362[_0x30df('0x6a')];_0x8faab6['campaigntype']=_0x139362[_0x30df('0x5b')]?_0x30df('0x6b'):_0x30df('0x6c');return db['CmContact'][_0x30df('0x55')]({'where':{'id':_0x8faab6['ContactId']},'attributes':[_0x30df('0x6d'),'lastName']})['then'](function(_0x36a04e){if(!_[_0x30df('0x6e')](_0x39254e)&&!_[_0x30df('0x6e')](_0x36a04e[_0x30df('0x6d')])){_0x8faab6['calleridname']=_0x36a04e[_0x30df('0x6d')];if(!_['isNil'](_0x36a04e[_0x30df('0x6f')])){_0x8faab6[_0x30df('0x70')]+='\x20'+_0x36a04e['lastName'];}}})[_0x30df('0x71')](function(){return db['CmHopperFinal'][_0x30df('0x56')](_0x8faab6);});}})[_0x30df('0x21')](function(){return _0x39254e['status'](0xcc)['end']();})[_0x30df('0x4f')](handleError(_0x39254e,null));};exports['getPreview']=function(_0x2385ba,_0x38f4ab,_0x5a85c6){var _0x43520b=[];return db['CmContact'][_0x30df('0x59')]()[_0x30df('0x21')](function(_0x40b2bf){_0x43520b=_[_0x30df('0x2c')](_0x40b2bf);return _0x2385ba[_0x30df('0x65')][_0x30df('0x72')]({'where':{'type':_0x30df('0x73'),'dialActive':!![],'dialMethod':_0x30df('0x74')},'attributes':['id',_0x30df('0x75')],'raw':!![]});})[_0x30df('0x21')](function(_0x153296){if(_0x153296&&_0x153296[_0x30df('0x42')]){return db[_0x30df('0x76')][_0x30df('0x77')](function(_0x393408){var _0x3e9eff={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30df('0x67')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x30df('0x26')](_0x153296,'id')},'$or':[{'UserId':null},{'UserId':_0x2385ba['user']['id']}]};var _0x16ded0=[];if(_0x2385ba[_0x30df('0x57')]['direction']&&_0x2385ba[_0x30df('0x57')][_0x30df('0x78')]===_0x30df('0x79')){if(!_[_0x30df('0x7a')](_0x2385ba[_0x30df('0x57')][_0x30df('0x7b')])){_0x3e9eff['id']={'$in':_0x2385ba[_0x30df('0x57')][_0x30df('0x7b')]};}_0x16ded0=[['priority','ASC'],[_0x30df('0x7c'),_0x153296[0x0]['dialOrderByScheduledAt']==='ASC'?_0x30df('0x7d'):_0x30df('0x7e')],db[_0x30df('0x76')]['literal'](_0x30df('0x7f')),['id','DESC']];}else{if(!_[_0x30df('0x7a')](_0x2385ba[_0x30df('0x57')]['hopperIds'])){_0x3e9eff['id']={'$notIn':_0x2385ba[_0x30df('0x57')][_0x30df('0x7b')]};}_0x16ded0=[[_0x30df('0x80'),_0x30df('0x7d')],[_0x30df('0x7c'),_0x153296[0x0][_0x30df('0x75')]],db['sequelize'][_0x30df('0x81')](_0x30df('0x82')),['id','ASC']];}return db[_0x30df('0x27')][_0x30df('0x83')]({'attributes':['id',_0x30df('0x84')],'where':_0x3e9eff,'order':_0x16ded0,'transaction':_0x393408,'lock':_0x393408[_0x30df('0x85')][_0x30df('0x86')],'include':[{'model':db[_0x30df('0x87')],'as':_0x30df('0x88'),'attributes':_0x43520b,'include':[{'model':db[_0x30df('0x89')],'as':_0x30df('0x8a'),'attributes':['id',_0x30df('0x24')]}]},{'model':db['CmList'],'as':_0x30df('0x8b'),'attributes':['id',_0x30df('0x24')]},{'model':db[_0x30df('0x5c')],'as':_0x30df('0x8c'),'attributes':['id',_0x30df('0x24'),_0x30df('0x8d')]}]})[_0x30df('0x21')](function(_0x4b26d9){if(_0x4b26d9){return _0x4b26d9['update']({'UserId':_0x2385ba[_0x30df('0x65')]['id']},{'transaction':_0x393408});}});});}})[_0x30df('0x21')](handleEntityNotFound(_0x38f4ab,null))[_0x30df('0x21')](respondWithResult(_0x38f4ab,null))[_0x30df('0x4f')](handleError(_0x38f4ab,null));};exports[_0x30df('0x8e')]=function(_0x5b60bf,_0x174f3a,_0x4c223f){return _0x5b60bf['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x30df('0x74')},'attributes':['id'],'raw':!![]})[_0x30df('0x21')](function(_0xb31d5a){if(_0xb31d5a&&_0xb31d5a[_0x30df('0x42')]){return db[_0x30df('0x27')][_0x30df('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30df('0x67')](_0x30df('0x68'))},'VoiceQueueId':{'$in':_[_0x30df('0x26')](_0xb31d5a,'id')},'$or':[{'UserId':null},{'UserId':_0x5b60bf[_0x30df('0x65')]['id']}]}});}return 0x0;})['then'](function(_0x3697fd){if(!_[_0x30df('0x6e')](_0x3697fd)&&_[_0x30df('0x8f')](_0x3697fd)){return _0x174f3a[_0x30df('0x18')](0xc8)[_0x30df('0x1a')]({'contacts':_0x3697fd});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x30df('0x90'));_0x174f3a['sendStatus'](0x194);}})[_0x30df('0x4f')](handleError(_0x174f3a,null));};