0116c440753fdc4a901d147af3d80e01ed2011c3
[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 _0x8d42=['finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','format','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','LOCK','UPDATE','Contact','Company','List','Queue','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','error','name','send','index','map','CmHopper','type','query','keys','intersection','filters','concat','$and','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','model','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','createdAt','state','deleted','membername','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','campaigntype','ivr','CmContact','firstName','calleridname','isNil','lastName'];(function(_0x5e9a34,_0x465516){var _0x1851b4=function(_0x34fe16){while(--_0x34fe16){_0x5e9a34['push'](_0x5e9a34['shift']());}};_0x1851b4(++_0x465516);}(_0x8d42,0x146));var _0x28d4=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x8d42[_0x5447fd];return _0x15b28a;};'use strict';var emlformat=require(_0x28d4('0x0'));var rimraf=require(_0x28d4('0x1'));var zipdir=require(_0x28d4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x28d4('0x3'));var Mustache=require(_0x28d4('0x4'));var util=require(_0x28d4('0x5'));var path=require(_0x28d4('0x6'));var sox=require(_0x28d4('0x7'));var csv=require(_0x28d4('0x8'));var ejs=require(_0x28d4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x28d4('0xa'));var squel=require(_0x28d4('0xb'));var crypto=require(_0x28d4('0xc'));var jsforce=require(_0x28d4('0xd'));var deskjs=require(_0x28d4('0xe'));var toCsv=require(_0x28d4('0x8'));var querystring=require(_0x28d4('0xf'));var Papa=require(_0x28d4('0x10'));var Redis=require(_0x28d4('0x11'));var authService=require(_0x28d4('0x12'));var qs=require(_0x28d4('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x28d4('0x14'));var logger=require('../../config/logger')(_0x28d4('0x15'));var utils=require(_0x28d4('0x16'));var config=require(_0x28d4('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5823a3,_0x27b826){_0x27b826=_0x27b826||0xcc;return function(_0xaa4140){if(_0xaa4140){return _0x5823a3[_0x28d4('0x18')](_0x27b826);}return _0x5823a3[_0x28d4('0x19')](_0x27b826)[_0x28d4('0x1a')]();};}function respondWithResult(_0x17d623,_0xa56708){_0xa56708=_0xa56708||0xc8;return function(_0x18f1be){if(_0x18f1be){return _0x17d623[_0x28d4('0x19')](_0xa56708)['json'](_0x18f1be);}};}function respondWithFilteredResult(_0xc60be8,_0x2653a2){return function(_0x3656a1){if(_0x3656a1){var _0x1f4f4a=typeof _0x2653a2['offset']===_0x28d4('0x1b')&&typeof _0x2653a2[_0x28d4('0x1c')]===_0x28d4('0x1b');var _0x4062db=_0x3656a1[_0x28d4('0x1d')];var _0x13c310=_0x1f4f4a?0x0:_0x2653a2[_0x28d4('0x1e')];var _0x18ce45=_0x1f4f4a?_0x3656a1['count']:_0x2653a2[_0x28d4('0x1e')]+_0x2653a2[_0x28d4('0x1c')];var _0xb3b648;if(_0x18ce45>=_0x4062db){_0x18ce45=_0x4062db;_0xb3b648=0xc8;}else{_0xb3b648=0xce;}_0xc60be8[_0x28d4('0x19')](_0xb3b648);return _0xc60be8['set'](_0x28d4('0x1f'),_0x13c310+'-'+_0x18ce45+'/'+_0x4062db)[_0x28d4('0x20')](_0x3656a1);}return null;};}function patchUpdates(_0x35129d){return function(_0x1fdbfe){try{jsonpatch[_0x28d4('0x21')](_0x1fdbfe,_0x35129d,!![]);}catch(_0x2cfcb5){return BPromise[_0x28d4('0x22')](_0x2cfcb5);}return _0x1fdbfe[_0x28d4('0x23')]();};}function saveUpdates(_0x5008a9,_0x15ba74){return function(_0x6b59d){if(_0x6b59d){return _0x6b59d[_0x28d4('0x24')](_0x5008a9)[_0x28d4('0x25')](function(_0x47b264){return _0x47b264;});}return null;};}function removeEntity(_0x5959ee,_0x589031){return function(_0x43ad58){if(_0x43ad58){return _0x43ad58['destroy']()['then'](function(){_0x5959ee[_0x28d4('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x484351,_0x4bb56e){return function(_0x4b0ed5){if(!_0x4b0ed5){_0x484351[_0x28d4('0x18')](0x194);}return _0x4b0ed5;};}function handleError(_0x24e2c5,_0x2dd106){_0x2dd106=_0x2dd106||0x1f4;return function(_0x2a07b8){logger[_0x28d4('0x26')](_0x2a07b8['stack']);if(_0x2a07b8['name']){delete _0x2a07b8[_0x28d4('0x27')];}_0x24e2c5['status'](_0x2dd106)[_0x28d4('0x28')](_0x2a07b8);};}exports[_0x28d4('0x29')]=function(_0x936e64,_0x5101fa){var _0x5e9081={},_0x362863={},_0x58e745={'count':0x0,'rows':[]};var _0x38caef=_[_0x28d4('0x2a')](db[_0x28d4('0x2b')]['rawAttributes'],function(_0x51f084){return{'name':_0x51f084['fieldName'],'type':_0x51f084[_0x28d4('0x2c')]['key']};});_0x362863['model']=_[_0x28d4('0x2a')](_0x38caef,_0x28d4('0x27'));_0x362863[_0x28d4('0x2d')]=_[_0x28d4('0x2e')](_0x936e64[_0x28d4('0x2d')]);_0x362863['filters']=_[_0x28d4('0x2f')](_0x362863['model'],_0x362863[_0x28d4('0x2d')]);_0x362863[_0x28d4('0x30')]=_[_0x28d4('0x31')](_0x362863[_0x28d4('0x30')],[_0x28d4('0x32'),'$or',_0x28d4('0x33'),_0x28d4('0x34'),_0x28d4('0x35'),_0x28d4('0x36'),_0x28d4('0x37'),_0x28d4('0x38'),_0x28d4('0x39'),_0x28d4('0x3a'),_0x28d4('0x3b'),_0x28d4('0x3c'),_0x28d4('0x3d'),_0x28d4('0x3e'),_0x28d4('0x3f'),_0x28d4('0x40'),_0x28d4('0x41'),_0x28d4('0x3e'),_0x28d4('0x42'),_0x28d4('0x43'),_0x28d4('0x44'),_0x28d4('0x45')]);_0x5e9081[_0x28d4('0x46')]=_[_0x28d4('0x2f')](_0x362863[_0x28d4('0x47')],qs['fields'](_0x936e64[_0x28d4('0x2d')][_0x28d4('0x48')]));_0x5e9081[_0x28d4('0x46')]=_0x5e9081[_0x28d4('0x46')][_0x28d4('0x49')]?_0x5e9081[_0x28d4('0x46')]:_0x362863[_0x28d4('0x47')];if(!_0x936e64[_0x28d4('0x2d')][_0x28d4('0x4a')](_0x28d4('0x4b'))){_0x5e9081[_0x28d4('0x1c')]=qs[_0x28d4('0x1c')](_0x936e64[_0x28d4('0x2d')][_0x28d4('0x1c')]);_0x5e9081[_0x28d4('0x1e')]=qs[_0x28d4('0x1e')](_0x936e64[_0x28d4('0x2d')]['offset']);}_0x5e9081['order']=qs['sort'](_0x936e64[_0x28d4('0x2d')][_0x28d4('0x4c')]);_0x5e9081[_0x28d4('0x4d')]=qs[_0x28d4('0x30')](_[_0x28d4('0x4e')](_0x936e64[_0x28d4('0x2d')],_0x362863['filters']),_0x38caef);if(_0x936e64[_0x28d4('0x2d')][_0x28d4('0x4f')]){_0x5e9081['where']=_['merge'](_0x5e9081[_0x28d4('0x4d')],{'$or':_[_0x28d4('0x2a')](_0x38caef,function(_0x42d86f){if(_0x42d86f[_0x28d4('0x2c')]!==_0x28d4('0x50')){var _0x3904a4={};_0x3904a4[_0x42d86f[_0x28d4('0x27')]]={'$like':'%'+_0x936e64[_0x28d4('0x2d')][_0x28d4('0x4f')]+'%'};return _0x3904a4;}})});}_0x5e9081=_[_0x28d4('0x51')]({},_0x5e9081,_0x936e64[_0x28d4('0x52')]);var _0x1f4737={'where':_0x5e9081[_0x28d4('0x4d')]};return db[_0x28d4('0x2b')][_0x28d4('0x1d')](_0x1f4737)[_0x28d4('0x25')](function(_0x398d43){_0x58e745['count']=_0x398d43;if(_0x936e64['query'][_0x28d4('0x53')]){_0x5e9081[_0x28d4('0x54')]=[{'all':!![]}];}return db['CmHopper'][_0x28d4('0x55')](_0x5e9081);})['then'](function(_0x4a4e87){_0x58e745[_0x28d4('0x56')]=_0x4a4e87;return _0x58e745;})[_0x28d4('0x25')](respondWithFilteredResult(_0x5101fa,_0x5e9081))[_0x28d4('0x57')](handleError(_0x5101fa,null));};exports[_0x28d4('0x58')]=function(_0x3a8f6e,_0x51f705){var _0x2d9e1f={'raw':!![],'where':{'id':_0x3a8f6e[_0x28d4('0x59')]['id']}},_0x417542={};_0x417542[_0x28d4('0x47')]=_[_0x28d4('0x2e')](db[_0x28d4('0x2b')][_0x28d4('0x5a')]);_0x417542[_0x28d4('0x2d')]=_[_0x28d4('0x2e')](_0x3a8f6e[_0x28d4('0x2d')]);_0x417542[_0x28d4('0x30')]=_[_0x28d4('0x2f')](_0x417542[_0x28d4('0x47')],_0x417542[_0x28d4('0x2d')]);_0x2d9e1f['attributes']=_[_0x28d4('0x2f')](_0x417542[_0x28d4('0x47')],qs[_0x28d4('0x48')](_0x3a8f6e['query']['fields']));_0x2d9e1f[_0x28d4('0x46')]=_0x2d9e1f[_0x28d4('0x46')][_0x28d4('0x49')]?_0x2d9e1f[_0x28d4('0x46')]:_0x417542[_0x28d4('0x47')];if(_0x3a8f6e['query'][_0x28d4('0x53')]){_0x2d9e1f['include']=[{'all':!![]}];}_0x2d9e1f=_[_0x28d4('0x51')]({},_0x2d9e1f,_0x3a8f6e[_0x28d4('0x52')]);return db[_0x28d4('0x2b')][_0x28d4('0x5b')](_0x2d9e1f)[_0x28d4('0x25')](handleEntityNotFound(_0x51f705,null))[_0x28d4('0x25')](respondWithResult(_0x51f705,null))['catch'](handleError(_0x51f705,null));};exports[_0x28d4('0x5c')]=function(_0x5c1aa9,_0x3362ce){return db[_0x28d4('0x2b')][_0x28d4('0x5c')](_0x5c1aa9[_0x28d4('0x5d')],{})[_0x28d4('0x25')](respondWithResult(_0x3362ce,0xc9))[_0x28d4('0x57')](handleError(_0x3362ce,null));};exports[_0x28d4('0x24')]=function(_0x1dd59e,_0xcde951){if(_0x1dd59e['body']['id']){delete _0x1dd59e[_0x28d4('0x5d')]['id'];}return db[_0x28d4('0x2b')][_0x28d4('0x5b')]({'where':{'id':_0x1dd59e['params']['id']}})[_0x28d4('0x25')](handleEntityNotFound(_0xcde951,null))[_0x28d4('0x25')](saveUpdates(_0x1dd59e[_0x28d4('0x5d')],null))[_0x28d4('0x25')](respondWithResult(_0xcde951,null))[_0x28d4('0x57')](handleError(_0xcde951,null));};exports[_0x28d4('0x5e')]=function(_0x42d4a9,_0x1e129f){return db[_0x28d4('0x2b')][_0x28d4('0x5e')]()[_0x28d4('0x25')](respondWithResult(_0x1e129f,null))['catch'](handleError(_0x1e129f,null));};exports[_0x28d4('0x5f')]=function(_0x4313a4,_0x583f6c){var _0x430ce2;return db['CmHopper'][_0x28d4('0x5b')]({'where':{'id':_0x4313a4[_0x28d4('0x59')]['id']}})['then'](handleEntityNotFound(_0x583f6c,null))['then'](function(_0x593e59){if(_0x593e59){return _0x593e59[_0x28d4('0x5f')]()[_0x28d4('0x25')](function(_0x101ab3){return _0x101ab3;});}})['then'](function(_0x4a7ac1){_0x430ce2=_0x4a7ac1;if(_0x4a7ac1){if(_0x4a7ac1[_0x28d4('0x60')]||_0x4a7ac1[_0x28d4('0x61')]){return db[_0x4a7ac1['VoiceQueueId']?_0x28d4('0x62'):'Campaign']['find']({'where':{'id':_0x4a7ac1['VoiceQueueId']?_0x4a7ac1[_0x28d4('0x60')]:_0x4a7ac1[_0x28d4('0x61')]},'attributes':['id',_0x28d4('0x27')],'raw':!![]});}}})[_0x28d4('0x25')](function(_0x343b9f){var _0x2c907f={};if(_0x343b9f){_[_0x28d4('0x51')](_0x2c907f,_[_0x28d4('0x63')](_0x430ce2['dataValues'],[_0x28d4('0x64'),'updatedAt','id']));_0x2c907f[_0x28d4('0x65')]=0x15;_0x2c907f['statedesc']=_0x28d4('0x66');_0x2c907f['campaign']=_0x343b9f[_0x28d4('0x27')];_0x2c907f[_0x28d4('0x67')]=_0x4313a4[_0x28d4('0x68')]['name'];_0x2c907f[_0x28d4('0x69')]=_0x4313a4[_0x28d4('0x68')]['id'];_0x2c907f['deleted']=!![];_0x2c907f[_0x28d4('0x6a')]=moment()['format'](_0x28d4('0x6b'));_0x2c907f['calleridnum']=_0x430ce2['phone'];_0x2c907f[_0x28d4('0x6c')]=_0x430ce2[_0x28d4('0x60')]?'queue':_0x28d4('0x6d');return db[_0x28d4('0x6e')]['find']({'where':{'id':_0x2c907f['ContactId']},'attributes':[_0x28d4('0x6f'),'lastName']})['then'](function(_0x22b787){if(!_['isNil'](_0x583f6c)&&!_['isNil'](_0x22b787[_0x28d4('0x6f')])){_0x2c907f[_0x28d4('0x70')]=_0x22b787[_0x28d4('0x6f')];if(!_[_0x28d4('0x71')](_0x22b787['lastName'])){_0x2c907f[_0x28d4('0x70')]+='\x20'+_0x22b787[_0x28d4('0x72')];}}})[_0x28d4('0x73')](function(){return db[_0x28d4('0x74')][_0x28d4('0x5c')](_0x2c907f);});}})[_0x28d4('0x25')](function(){return _0x583f6c[_0x28d4('0x19')](0xcc)[_0x28d4('0x1a')]();})[_0x28d4('0x57')](handleError(_0x583f6c,null));};exports[_0x28d4('0x75')]=function(_0x23c463,_0x2078bd,_0x237a9e){var _0x19f2fb=[];return db[_0x28d4('0x6e')][_0x28d4('0x5e')]()[_0x28d4('0x25')](function(_0x1b0bff){_0x19f2fb=_[_0x28d4('0x2e')](_0x1b0bff);return _0x23c463[_0x28d4('0x68')][_0x28d4('0x76')]({'where':{'type':_0x28d4('0x77'),'dialActive':!![],'dialMethod':_0x28d4('0x78')},'attributes':['id',_0x28d4('0x79')],'raw':!![]});})['then'](function(_0x39ab78){if(_0x39ab78&&_0x39ab78[_0x28d4('0x49')]){return db['sequelize']['transaction'](function(_0x5f3db0){var _0x19de50={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x28d4('0x7a')](_0x28d4('0x6b'))},'VoiceQueueId':{'$in':_[_0x28d4('0x2a')](_0x39ab78,'id')},'$or':[{'UserId':null},{'UserId':_0x23c463[_0x28d4('0x68')]['id']}]};var _0xc6a005=[];if(_0x23c463[_0x28d4('0x5d')][_0x28d4('0x7b')]&&_0x23c463[_0x28d4('0x5d')][_0x28d4('0x7b')]===_0x28d4('0x7c')){if(!_[_0x28d4('0x7d')](_0x23c463[_0x28d4('0x5d')][_0x28d4('0x7e')])){_0x19de50['id']={'$in':_0x23c463[_0x28d4('0x5d')]['hopperIds']};}_0xc6a005=[[_0x28d4('0x7f'),_0x28d4('0x80')],[_0x28d4('0x81'),_0x39ab78[0x0][_0x28d4('0x79')]===_0x28d4('0x80')?'DESC':_0x28d4('0x80')],db[_0x28d4('0x82')][_0x28d4('0x83')](_0x28d4('0x84')),['id',_0x28d4('0x85')]];}else{if(!_[_0x28d4('0x7d')](_0x23c463[_0x28d4('0x5d')][_0x28d4('0x7e')])){_0x19de50['id']={'$notIn':_0x23c463[_0x28d4('0x5d')]['hopperIds']};}_0xc6a005=[[_0x28d4('0x7f'),_0x28d4('0x85')],[_0x28d4('0x81'),_0x39ab78[0x0][_0x28d4('0x79')]],db[_0x28d4('0x82')][_0x28d4('0x83')](_0x28d4('0x86')),['id','ASC']];}return db[_0x28d4('0x2b')][_0x28d4('0x87')]({'attributes':['id','scheduledat'],'where':_0x19de50,'order':_0xc6a005,'transaction':_0x5f3db0,'lock':_0x5f3db0[_0x28d4('0x88')][_0x28d4('0x89')],'include':[{'model':db[_0x28d4('0x6e')],'as':_0x28d4('0x8a'),'attributes':_0x19f2fb,'include':[{'model':db['CmCompany'],'as':_0x28d4('0x8b'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0x28d4('0x8c'),'attributes':['id',_0x28d4('0x27')]},{'model':db[_0x28d4('0x62')],'as':_0x28d4('0x8d'),'attributes':['id',_0x28d4('0x27'),_0x28d4('0x8e')]}]})[_0x28d4('0x25')](function(_0x1a39b4){if(_0x1a39b4){return _0x1a39b4['update']({'UserId':_0x23c463[_0x28d4('0x68')]['id']},{'transaction':_0x5f3db0});}});});}})[_0x28d4('0x25')](handleEntityNotFound(_0x2078bd,null))['then'](respondWithResult(_0x2078bd,null))['catch'](handleError(_0x2078bd,null));};exports[_0x28d4('0x8f')]=function(_0x402e3d,_0x43417f,_0x31e8c6){return _0x402e3d[_0x28d4('0x68')]['getVoiceQueues']({'where':{'type':_0x28d4('0x77'),'dialActive':!![],'dialMethod':_0x28d4('0x78')},'attributes':['id'],'raw':!![]})[_0x28d4('0x25')](function(_0x25af80){if(_0x25af80&&_0x25af80[_0x28d4('0x49')]){return db['CmHopper'][_0x28d4('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x28d4('0x6b'))},'VoiceQueueId':{'$in':_[_0x28d4('0x2a')](_0x25af80,'id')},'$or':[{'UserId':null},{'UserId':_0x402e3d['user']['id']}]}});}return 0x0;})['then'](function(_0x48458f){if(!_[_0x28d4('0x71')](_0x48458f)&&_[_0x28d4('0x90')](_0x48458f)){return _0x43417f[_0x28d4('0x19')](0xc8)['json']({'contacts':_0x48458f});}else{logger[_0x28d4('0x26')](_0x28d4('0x91'),'getOpenContacts',0x194,_0x28d4('0x92'));_0x43417f[_0x28d4('0x18')](0x194);}})[_0x28d4('0x57')](handleError(_0x43417f,null));};