742c07c8ecfa88947a10753db70a1429cedbca2f
[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 _0xd633=['end','json','offset','undefined','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$and','$or','$gte','$lt','$ne','$notBetween','$in','$notIn','$notLike','$iLike','$notILike','$like','$overlap','$contains','$any','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find','create','body','update','describe','VoiceQueueId','CampaignId','Campaign','dataValues','createdAt','state','deleted','campaign','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','ivr','ContactId','lastName','firstName','calleridname','isNil','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','sequelize','transaction','format','direction','prev','isEmpty','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','CmContact','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','preview','rimraf','request-promise','to-csv','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x57a697,_0xe2f0f6){var _0x4c2383=function(_0x45e2cb){while(--_0x45e2cb){_0x57a697['push'](_0x57a697['shift']());}};_0x4c2383(++_0xe2f0f6);}(_0xd633,0x18e));var _0x3d63=function(_0x22e907,_0x858e57){_0x22e907=_0x22e907-0x0;var _0x44d8ad=_0xd633[_0x22e907];return _0x44d8ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d63('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3d63('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x3d63('0x2'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3d63('0x3'));var jsforce=require(_0x3d63('0x4'));var deskjs=require(_0x3d63('0x5'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3d63('0x6'));var Redis=require(_0x3d63('0x7'));var authService=require(_0x3d63('0x8'));var qs=require(_0x3d63('0x9'));var as=require(_0x3d63('0xa'));var hardwareService=require(_0x3d63('0xb'));var logger=require(_0x3d63('0xc'))(_0x3d63('0xd'));var utils=require(_0x3d63('0xe'));var config=require('../../config/environment');var licenseUtil=require(_0x3d63('0xf'));var db=require(_0x3d63('0x10'))['db'];function respondWithStatusCode(_0x2fb57f,_0x5e4743){_0x5e4743=_0x5e4743||0xcc;return function(_0x4220e8){if(_0x4220e8){return _0x2fb57f[_0x3d63('0x11')](_0x5e4743);}return _0x2fb57f[_0x3d63('0x12')](_0x5e4743)[_0x3d63('0x13')]();};}function respondWithResult(_0x128bfb,_0x2a30a0){_0x2a30a0=_0x2a30a0||0xc8;return function(_0x455a40){if(_0x455a40){return _0x128bfb['status'](_0x2a30a0)[_0x3d63('0x14')](_0x455a40);}};}function respondWithFilteredResult(_0x58bbde,_0x55aebc){return function(_0xc9f968){if(_0xc9f968){var _0x122f5a=typeof _0x55aebc[_0x3d63('0x15')]===_0x3d63('0x16')&&typeof _0x55aebc['limit']==='undefined';var _0x2097a7=_0xc9f968[_0x3d63('0x17')];var _0x5d21d3=_0x122f5a?0x0:_0x55aebc[_0x3d63('0x15')];var _0x4da1f6=_0x122f5a?_0xc9f968['count']:_0x55aebc[_0x3d63('0x15')]+_0x55aebc['limit'];var _0x3e2cd8;if(_0x4da1f6>=_0x2097a7){_0x4da1f6=_0x2097a7;_0x3e2cd8=0xc8;}else{_0x3e2cd8=0xce;}_0x58bbde[_0x3d63('0x12')](_0x3e2cd8);return _0x58bbde[_0x3d63('0x18')](_0x3d63('0x19'),_0x5d21d3+'-'+_0x4da1f6+'/'+_0x2097a7)['json'](_0xc9f968);}return null;};}function patchUpdates(_0x2c1b32){return function(_0x1cc25b){try{jsonpatch['apply'](_0x1cc25b,_0x2c1b32,!![]);}catch(_0x5d25b9){return BPromise[_0x3d63('0x1a')](_0x5d25b9);}return _0x1cc25b[_0x3d63('0x1b')]();};}function saveUpdates(_0xdc9a06,_0x4c4ed4){return function(_0x119bb2){if(_0x119bb2){return _0x119bb2['update'](_0xdc9a06)[_0x3d63('0x1c')](function(_0x53b219){return _0x53b219;});}return null;};}function removeEntity(_0x28e006,_0x3a0a0c){return function(_0x546c91){if(_0x546c91){return _0x546c91[_0x3d63('0x1d')]()[_0x3d63('0x1c')](function(){_0x28e006['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x172e78,_0x105c5e){return function(_0x1d98d1){if(!_0x1d98d1){_0x172e78[_0x3d63('0x11')](0x194);}return _0x1d98d1;};}function handleError(_0xa61b98,_0x2d96e4){_0x2d96e4=_0x2d96e4||0x1f4;return function(_0x1b8c0b){logger[_0x3d63('0x1e')](_0x1b8c0b[_0x3d63('0x1f')]);if(_0x1b8c0b[_0x3d63('0x20')]){delete _0x1b8c0b['name'];}_0xa61b98[_0x3d63('0x12')](_0x2d96e4)[_0x3d63('0x21')](_0x1b8c0b);};}exports[_0x3d63('0x22')]=function(_0x15eed2,_0x11fe8c){var _0x500074={},_0x2d36c1={},_0x10a1d3={'count':0x0,'rows':[]};var _0x225ca9=_[_0x3d63('0x23')](db[_0x3d63('0x24')][_0x3d63('0x25')],function(_0x59bb35){return{'name':_0x59bb35[_0x3d63('0x26')],'type':_0x59bb35[_0x3d63('0x27')][_0x3d63('0x28')]};});_0x2d36c1[_0x3d63('0x29')]=_['map'](_0x225ca9,'name');_0x2d36c1[_0x3d63('0x2a')]=_[_0x3d63('0x2b')](_0x15eed2[_0x3d63('0x2a')]);_0x2d36c1[_0x3d63('0x2c')]=_[_0x3d63('0x2d')](_0x2d36c1[_0x3d63('0x29')],_0x2d36c1[_0x3d63('0x2a')]);_0x2d36c1[_0x3d63('0x2c')]=_[_0x3d63('0x2e')](_0x2d36c1['filters'],[_0x3d63('0x2f'),_0x3d63('0x30'),'$gt',_0x3d63('0x31'),_0x3d63('0x32'),'$lte',_0x3d63('0x33'),'$eq','$not','$between',_0x3d63('0x34'),_0x3d63('0x35'),_0x3d63('0x36'),'$like',_0x3d63('0x37'),_0x3d63('0x38'),_0x3d63('0x39'),_0x3d63('0x3a'),_0x3d63('0x3b'),_0x3d63('0x3c'),'$contained',_0x3d63('0x3d')]);_0x500074['attributes']=_['intersection'](_0x2d36c1[_0x3d63('0x29')],qs[_0x3d63('0x3e')](_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x3e')]));_0x500074[_0x3d63('0x3f')]=_0x500074[_0x3d63('0x3f')]['length']?_0x500074[_0x3d63('0x3f')]:_0x2d36c1[_0x3d63('0x29')];if(!_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x40')](_0x3d63('0x41'))){_0x500074[_0x3d63('0x42')]=qs[_0x3d63('0x42')](_0x15eed2['query'][_0x3d63('0x42')]);_0x500074['offset']=qs[_0x3d63('0x15')](_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x15')]);}_0x500074[_0x3d63('0x43')]=qs[_0x3d63('0x44')](_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x44')]);_0x500074[_0x3d63('0x45')]=qs[_0x3d63('0x2c')](_[_0x3d63('0x46')](_0x15eed2[_0x3d63('0x2a')],_0x2d36c1[_0x3d63('0x2c')]),_0x225ca9);if(_0x15eed2['query'][_0x3d63('0x47')]){_0x500074['where']=_['merge'](_0x500074['where'],{'$or':_['map'](_0x225ca9,function(_0x27630f){if(_0x27630f[_0x3d63('0x27')]!==_0x3d63('0x48')){var _0x4ac08a={};_0x4ac08a[_0x27630f[_0x3d63('0x20')]]={'$like':'%'+_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x47')]+'%'};return _0x4ac08a;}})});}_0x500074=_[_0x3d63('0x49')]({},_0x500074,_0x15eed2[_0x3d63('0x4a')]);var _0x7ee1ff={'where':_0x500074[_0x3d63('0x45')]};return db['CmHopper'][_0x3d63('0x17')](_0x7ee1ff)[_0x3d63('0x1c')](function(_0x20269b){_0x10a1d3[_0x3d63('0x17')]=_0x20269b;if(_0x15eed2[_0x3d63('0x2a')][_0x3d63('0x4b')]){_0x500074[_0x3d63('0x4c')]=[{'all':!![]}];}return db[_0x3d63('0x24')]['findAll'](_0x500074);})['then'](function(_0x534548){_0x10a1d3[_0x3d63('0x4d')]=_0x534548;return _0x10a1d3;})['then'](respondWithFilteredResult(_0x11fe8c,_0x500074))[_0x3d63('0x4e')](handleError(_0x11fe8c,null));};exports[_0x3d63('0x4f')]=function(_0x32f38a,_0x58c88f){var _0x51db6b={'raw':!![],'where':{'id':_0x32f38a[_0x3d63('0x50')]['id']}},_0x53736b={};_0x53736b['model']=_[_0x3d63('0x2b')](db[_0x3d63('0x24')][_0x3d63('0x25')]);_0x53736b[_0x3d63('0x2a')]=_[_0x3d63('0x2b')](_0x32f38a[_0x3d63('0x2a')]);_0x53736b['filters']=_[_0x3d63('0x2d')](_0x53736b[_0x3d63('0x29')],_0x53736b[_0x3d63('0x2a')]);_0x51db6b[_0x3d63('0x3f')]=_[_0x3d63('0x2d')](_0x53736b['model'],qs[_0x3d63('0x3e')](_0x32f38a[_0x3d63('0x2a')]['fields']));_0x51db6b[_0x3d63('0x3f')]=_0x51db6b[_0x3d63('0x3f')][_0x3d63('0x51')]?_0x51db6b[_0x3d63('0x3f')]:_0x53736b[_0x3d63('0x29')];if(_0x32f38a[_0x3d63('0x2a')]['includeAll']){_0x51db6b[_0x3d63('0x4c')]=[{'all':!![]}];}_0x51db6b=_[_0x3d63('0x49')]({},_0x51db6b,_0x32f38a['options']);return db[_0x3d63('0x24')][_0x3d63('0x52')](_0x51db6b)[_0x3d63('0x1c')](handleEntityNotFound(_0x58c88f,null))[_0x3d63('0x1c')](respondWithResult(_0x58c88f,null))[_0x3d63('0x4e')](handleError(_0x58c88f,null));};exports[_0x3d63('0x53')]=function(_0xe22a4c,_0x3b38f4){return db['CmHopper'][_0x3d63('0x53')](_0xe22a4c[_0x3d63('0x54')],{})[_0x3d63('0x1c')](respondWithResult(_0x3b38f4,0xc9))['catch'](handleError(_0x3b38f4,null));};exports[_0x3d63('0x55')]=function(_0x236315,_0xd882c6){if(_0x236315['body']['id']){delete _0x236315['body']['id'];}return db[_0x3d63('0x24')][_0x3d63('0x52')]({'where':{'id':_0x236315[_0x3d63('0x50')]['id']}})[_0x3d63('0x1c')](handleEntityNotFound(_0xd882c6,null))[_0x3d63('0x1c')](saveUpdates(_0x236315[_0x3d63('0x54')],null))[_0x3d63('0x1c')](respondWithResult(_0xd882c6,null))[_0x3d63('0x4e')](handleError(_0xd882c6,null));};exports[_0x3d63('0x56')]=function(_0x5c2d07,_0x582239){return db[_0x3d63('0x24')][_0x3d63('0x56')]()[_0x3d63('0x1c')](respondWithResult(_0x582239,null))[_0x3d63('0x4e')](handleError(_0x582239,null));};exports['destroy']=function(_0x373840,_0x443929){var _0x24762e;return db[_0x3d63('0x24')][_0x3d63('0x52')]({'where':{'id':_0x373840['params']['id']}})['then'](handleEntityNotFound(_0x443929,null))['then'](function(_0xf48fa9){if(_0xf48fa9){return _0xf48fa9[_0x3d63('0x1d')]()[_0x3d63('0x1c')](function(_0x9c0a9c){return _0x9c0a9c;});}})[_0x3d63('0x1c')](function(_0xe79e44){_0x24762e=_0xe79e44;if(_0xe79e44){if(_0xe79e44[_0x3d63('0x57')]||_0xe79e44[_0x3d63('0x58')]){return db[_0xe79e44['VoiceQueueId']?'VoiceQueue':_0x3d63('0x59')][_0x3d63('0x52')]({'where':{'id':_0xe79e44[_0x3d63('0x57')]?_0xe79e44['VoiceQueueId']:_0xe79e44[_0x3d63('0x58')]},'attributes':['id',_0x3d63('0x20')],'raw':!![]});}}})['then'](function(_0x53286e){var _0x4b0f24={};if(_0x53286e){_[_0x3d63('0x49')](_0x4b0f24,_['omit'](_0x24762e[_0x3d63('0x5a')],[_0x3d63('0x5b'),'updatedAt','id']));_0x4b0f24[_0x3d63('0x5c')]=0x15;_0x4b0f24['statedesc']=_0x3d63('0x5d');_0x4b0f24[_0x3d63('0x5e')]=_0x53286e[_0x3d63('0x20')];_0x4b0f24[_0x3d63('0x5f')]=_0x373840[_0x3d63('0x60')][_0x3d63('0x20')];_0x4b0f24[_0x3d63('0x61')]=_0x373840['user']['id'];_0x4b0f24['deleted']=!![];_0x4b0f24[_0x3d63('0x62')]=moment()['format'](_0x3d63('0x63'));_0x4b0f24['calleridnum']=_0x24762e[_0x3d63('0x64')];_0x4b0f24[_0x3d63('0x65')]=_0x24762e['VoiceQueueId']?'queue':_0x3d63('0x66');return db['CmContact']['find']({'where':{'id':_0x4b0f24[_0x3d63('0x67')]},'attributes':['firstName',_0x3d63('0x68')]})[_0x3d63('0x1c')](function(_0x46e50d){if(!_['isNil'](_0x443929)&&!_['isNil'](_0x46e50d[_0x3d63('0x69')])){_0x4b0f24[_0x3d63('0x6a')]=_0x46e50d[_0x3d63('0x69')];if(!_[_0x3d63('0x6b')](_0x46e50d[_0x3d63('0x68')])){_0x4b0f24[_0x3d63('0x6a')]+='\x20'+_0x46e50d[_0x3d63('0x68')];}}})[_0x3d63('0x6c')](function(){return db[_0x3d63('0x6d')][_0x3d63('0x53')](_0x4b0f24);});}})[_0x3d63('0x1c')](function(){return _0x443929[_0x3d63('0x12')](0xcc)[_0x3d63('0x13')]();})[_0x3d63('0x4e')](handleError(_0x443929,null));};exports[_0x3d63('0x6e')]=function(_0x4ce965,_0x1b617e,_0x399ba3){var _0x579089=[];return db['CmContact'][_0x3d63('0x56')]()[_0x3d63('0x1c')](function(_0x5d1b74){_0x579089=_[_0x3d63('0x2b')](_0x5d1b74);return _0x4ce965['user'][_0x3d63('0x6f')]({'where':{'type':_0x3d63('0x70'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x36dfbb){if(_0x36dfbb&&_0x36dfbb[_0x3d63('0x51')]){return db[_0x3d63('0x71')][_0x3d63('0x72')](function(_0x44af93){var _0xb0fdb7={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3d63('0x73')](_0x3d63('0x63'))},'VoiceQueueId':{'$in':_[_0x3d63('0x23')](_0x36dfbb,'id')},'$or':[{'UserId':null},{'UserId':_0x4ce965[_0x3d63('0x60')]['id']}]};var _0xde586e=[];if(_0x4ce965['body']['direction']&&_0x4ce965[_0x3d63('0x54')][_0x3d63('0x74')]===_0x3d63('0x75')){if(!_[_0x3d63('0x76')](_0x4ce965[_0x3d63('0x54')][_0x3d63('0x77')])){_0xb0fdb7['id']={'$in':_0x4ce965['body'][_0x3d63('0x77')]};}_0xde586e=[[_0x3d63('0x78'),'ASC'],[_0x3d63('0x79'),_0x36dfbb[0x0][_0x3d63('0x7a')]===_0x3d63('0x7b')?_0x3d63('0x7c'):_0x3d63('0x7b')],db[_0x3d63('0x71')]['literal'](_0x3d63('0x7d')),['id',_0x3d63('0x7c')]];}else{if(!_[_0x3d63('0x76')](_0x4ce965[_0x3d63('0x54')][_0x3d63('0x77')])){_0xb0fdb7['id']={'$notIn':_0x4ce965[_0x3d63('0x54')][_0x3d63('0x77')]};}_0xde586e=[[_0x3d63('0x78'),_0x3d63('0x7c')],['scheduledAt',_0x36dfbb[0x0][_0x3d63('0x7a')]],db[_0x3d63('0x71')][_0x3d63('0x7e')](_0x3d63('0x7f')),['id',_0x3d63('0x7b')]];}return db[_0x3d63('0x24')][_0x3d63('0x80')]({'attributes':['id','scheduledat'],'where':_0xb0fdb7,'order':_0xde586e,'transaction':_0x44af93,'lock':_0x44af93['LOCK']['UPDATE'],'include':[{'model':db[_0x3d63('0x81')],'as':_0x3d63('0x82'),'attributes':_0x579089,'include':[{'model':db['CmCompany'],'as':_0x3d63('0x83'),'attributes':['id',_0x3d63('0x20')]}]},{'model':db[_0x3d63('0x84')],'as':_0x3d63('0x85'),'attributes':['id',_0x3d63('0x20')]},{'model':db[_0x3d63('0x86')],'as':_0x3d63('0x87'),'attributes':['id',_0x3d63('0x20'),_0x3d63('0x88')]}]})['then'](function(_0x1e8e31){if(_0x1e8e31){return _0x1e8e31[_0x3d63('0x55')]({'UserId':_0x4ce965[_0x3d63('0x60')]['id']},{'transaction':_0x44af93});}});});}})[_0x3d63('0x1c')](handleEntityNotFound(_0x1b617e,null))[_0x3d63('0x1c')](respondWithResult(_0x1b617e,null))['catch'](handleError(_0x1b617e,null));};exports[_0x3d63('0x89')]=function(_0x1c8afd,_0x3fca85,_0x348193){return _0x1c8afd[_0x3d63('0x60')][_0x3d63('0x6f')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x3d63('0x8a')},'attributes':['id'],'raw':!![]})[_0x3d63('0x1c')](function(_0x20d6b7){if(_0x20d6b7&&_0x20d6b7['length']){return db[_0x3d63('0x24')][_0x3d63('0x17')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3d63('0x73')](_0x3d63('0x63'))},'VoiceQueueId':{'$in':_[_0x3d63('0x23')](_0x20d6b7,'id')},'$or':[{'UserId':null},{'UserId':_0x1c8afd[_0x3d63('0x60')]['id']}]}});}return 0x0;})['then'](function(_0x5366f6){if(!_['isNil'](_0x5366f6)&&_['isNumber'](_0x5366f6)){return _0x3fca85['status'](0xc8)['json']({'contacts':_0x5366f6});}else{logger[_0x3d63('0x1e')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x3d63('0x89'),0x194,'entity\x20not\x20found');_0x3fca85[_0x3d63('0x11')](0x194);}})[_0x3d63('0x4e')](handleError(_0x3fca85,null));};