46a81bfeb571593ee2223438f3824ed1462ec696
[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 _0x2413=['api','../../config/utils','../../config/environment','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','$and','$gt','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$iLike','$notILike','$like','$overlap','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','findAll','rows','catch','params','find','create','body','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','statedesc','deleted','campaign','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','firstName','isNil','calleridname','lastName','finally','CmHopperFinal','end','getPreview','getVoiceQueues','preview','dialPreviewAutoRecallMe','sequelize','transaction','user','direction','isEmpty','hopperIds','ASC','scheduledAt','dialOrderByScheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','VoiceQueue','Queue','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x5478b8,_0x36a078){var _0x565592=function(_0x105b05){while(--_0x105b05){_0x5478b8['push'](_0x5478b8['shift']());}};_0x565592(++_0x36a078);}(_0x2413,0x1a1));var _0x3241=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2413[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x3241('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3241('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3241('0x2'));var moment=require(_0x3241('0x3'));var BPromise=require(_0x3241('0x4'));var Mustache=require(_0x3241('0x5'));var util=require(_0x3241('0x6'));var path=require('path');var sox=require(_0x3241('0x7'));var csv=require('to-csv');var ejs=require(_0x3241('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3241('0x9'));var squel=require(_0x3241('0xa'));var crypto=require(_0x3241('0xb'));var jsforce=require(_0x3241('0xc'));var deskjs=require(_0x3241('0xd'));var toCsv=require(_0x3241('0xe'));var querystring=require(_0x3241('0xf'));var Papa=require(_0x3241('0x10'));var Redis=require(_0x3241('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3241('0x12'));var hardwareService=require(_0x3241('0x13'));var logger=require(_0x3241('0x14'))(_0x3241('0x15'));var utils=require(_0x3241('0x16'));var config=require(_0x3241('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1aae34,_0x51907b){_0x51907b=_0x51907b||0xcc;return function(_0x1c17b5){if(_0x1c17b5){return _0x1aae34[_0x3241('0x18')](_0x51907b);}return _0x1aae34[_0x3241('0x19')](_0x51907b)['end']();};}function respondWithResult(_0x4f097d,_0x229889){_0x229889=_0x229889||0xc8;return function(_0x8c1736){if(_0x8c1736){return _0x4f097d[_0x3241('0x19')](_0x229889)[_0x3241('0x1a')](_0x8c1736);}};}function respondWithFilteredResult(_0x2bd4a1,_0x259e64){return function(_0x987749){if(_0x987749){var _0x227702=typeof _0x259e64['offset']===_0x3241('0x1b')&&typeof _0x259e64[_0x3241('0x1c')]==='undefined';var _0x41e765=_0x987749[_0x3241('0x1d')];var _0x4cdd14=_0x227702?0x0:_0x259e64[_0x3241('0x1e')];var _0x5879eb=_0x227702?_0x987749[_0x3241('0x1d')]:_0x259e64[_0x3241('0x1e')]+_0x259e64[_0x3241('0x1c')];var _0x20c01a;if(_0x5879eb>=_0x41e765){_0x5879eb=_0x41e765;_0x20c01a=0xc8;}else{_0x20c01a=0xce;}_0x2bd4a1[_0x3241('0x19')](_0x20c01a);return _0x2bd4a1[_0x3241('0x1f')]('Content-Range',_0x4cdd14+'-'+_0x5879eb+'/'+_0x41e765)['json'](_0x987749);}return null;};}function patchUpdates(_0x1fa162){return function(_0x487018){try{jsonpatch[_0x3241('0x20')](_0x487018,_0x1fa162,!![]);}catch(_0x524735){return BPromise[_0x3241('0x21')](_0x524735);}return _0x487018[_0x3241('0x22')]();};}function saveUpdates(_0x83f6d3,_0x2153d4){return function(_0x560c53){if(_0x560c53){return _0x560c53[_0x3241('0x23')](_0x83f6d3)[_0x3241('0x24')](function(_0x810289){return _0x810289;});}return null;};}function removeEntity(_0x57f6d4,_0x1edaa8){return function(_0x36f8c5){if(_0x36f8c5){return _0x36f8c5[_0x3241('0x25')]()[_0x3241('0x24')](function(){_0x57f6d4[_0x3241('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x586e9d,_0x2afbf9){return function(_0x39e2c0){if(!_0x39e2c0){_0x586e9d['sendStatus'](0x194);}return _0x39e2c0;};}function handleError(_0x20a468,_0x6fb158){_0x6fb158=_0x6fb158||0x1f4;return function(_0x2947e6){logger[_0x3241('0x26')](_0x2947e6[_0x3241('0x27')]);if(_0x2947e6[_0x3241('0x28')]){delete _0x2947e6[_0x3241('0x28')];}_0x20a468[_0x3241('0x19')](_0x6fb158)['send'](_0x2947e6);};}exports[_0x3241('0x29')]=function(_0x2eee0b,_0x4294ea){var _0x509b30={},_0x37a529={},_0x1ff11e={'count':0x0,'rows':[]};var _0x8a423f=_[_0x3241('0x2a')](db[_0x3241('0x2b')][_0x3241('0x2c')],function(_0x548cc3){return{'name':_0x548cc3[_0x3241('0x2d')],'type':_0x548cc3[_0x3241('0x2e')][_0x3241('0x2f')]};});_0x37a529[_0x3241('0x30')]=_[_0x3241('0x2a')](_0x8a423f,_0x3241('0x28'));_0x37a529['query']=_[_0x3241('0x31')](_0x2eee0b[_0x3241('0x32')]);_0x37a529[_0x3241('0x33')]=_[_0x3241('0x34')](_0x37a529[_0x3241('0x30')],_0x37a529['query']);_0x37a529[_0x3241('0x33')]=_['concat'](_0x37a529[_0x3241('0x33')],[_0x3241('0x35'),'$or',_0x3241('0x36'),_0x3241('0x37'),_0x3241('0x38'),_0x3241('0x39'),_0x3241('0x3a'),'$eq',_0x3241('0x3b'),_0x3241('0x3c'),_0x3241('0x3d'),'$in','$notIn','$like','$notLike',_0x3241('0x3e'),_0x3241('0x3f'),_0x3241('0x40'),_0x3241('0x41'),_0x3241('0x42'),_0x3241('0x43'),_0x3241('0x44')]);_0x509b30[_0x3241('0x45')]=_[_0x3241('0x34')](_0x37a529[_0x3241('0x30')],qs[_0x3241('0x46')](_0x2eee0b[_0x3241('0x32')][_0x3241('0x46')]));_0x509b30[_0x3241('0x45')]=_0x509b30[_0x3241('0x45')][_0x3241('0x47')]?_0x509b30[_0x3241('0x45')]:_0x37a529[_0x3241('0x30')];if(!_0x2eee0b[_0x3241('0x32')][_0x3241('0x48')](_0x3241('0x49'))){_0x509b30[_0x3241('0x1c')]=qs['limit'](_0x2eee0b[_0x3241('0x32')][_0x3241('0x1c')]);_0x509b30[_0x3241('0x1e')]=qs['offset'](_0x2eee0b[_0x3241('0x32')][_0x3241('0x1e')]);}_0x509b30[_0x3241('0x4a')]=qs[_0x3241('0x4b')](_0x2eee0b[_0x3241('0x32')][_0x3241('0x4b')]);_0x509b30[_0x3241('0x4c')]=qs['filters'](_['pick'](_0x2eee0b[_0x3241('0x32')],_0x37a529['filters']),_0x8a423f);if(_0x2eee0b['query'][_0x3241('0x4d')]){_0x509b30[_0x3241('0x4c')]=_[_0x3241('0x4e')](_0x509b30['where'],{'$or':_[_0x3241('0x2a')](_0x8a423f,function(_0x492611){if(_0x492611[_0x3241('0x2e')]!=='VIRTUAL'){var _0x2c50d6={};_0x2c50d6[_0x492611[_0x3241('0x28')]]={'$like':'%'+_0x2eee0b[_0x3241('0x32')][_0x3241('0x4d')]+'%'};return _0x2c50d6;}})});}_0x509b30=_[_0x3241('0x4e')]({},_0x509b30,_0x2eee0b[_0x3241('0x4f')]);var _0x3c44a3={'where':_0x509b30[_0x3241('0x4c')]};return db['CmHopper'][_0x3241('0x1d')](_0x3c44a3)[_0x3241('0x24')](function(_0x49844f){_0x1ff11e[_0x3241('0x1d')]=_0x49844f;if(_0x2eee0b['query'][_0x3241('0x50')]){_0x509b30['include']=[{'all':!![]}];}return db['CmHopper'][_0x3241('0x51')](_0x509b30);})[_0x3241('0x24')](function(_0x55e30e){_0x1ff11e[_0x3241('0x52')]=_0x55e30e;return _0x1ff11e;})[_0x3241('0x24')](respondWithFilteredResult(_0x4294ea,_0x509b30))[_0x3241('0x53')](handleError(_0x4294ea,null));};exports['show']=function(_0x20e9d1,_0x42ab4a){var _0x2907c6={'raw':!![],'where':{'id':_0x20e9d1[_0x3241('0x54')]['id']}},_0x30a512={};_0x30a512[_0x3241('0x30')]=_[_0x3241('0x31')](db['CmHopper'][_0x3241('0x2c')]);_0x30a512[_0x3241('0x32')]=_['keys'](_0x20e9d1[_0x3241('0x32')]);_0x30a512[_0x3241('0x33')]=_[_0x3241('0x34')](_0x30a512['model'],_0x30a512[_0x3241('0x32')]);_0x2907c6[_0x3241('0x45')]=_['intersection'](_0x30a512['model'],qs[_0x3241('0x46')](_0x20e9d1[_0x3241('0x32')]['fields']));_0x2907c6[_0x3241('0x45')]=_0x2907c6[_0x3241('0x45')][_0x3241('0x47')]?_0x2907c6[_0x3241('0x45')]:_0x30a512['model'];if(_0x20e9d1[_0x3241('0x32')][_0x3241('0x50')]){_0x2907c6['include']=[{'all':!![]}];}_0x2907c6=_[_0x3241('0x4e')]({},_0x2907c6,_0x20e9d1[_0x3241('0x4f')]);return db['CmHopper'][_0x3241('0x55')](_0x2907c6)[_0x3241('0x24')](handleEntityNotFound(_0x42ab4a,null))[_0x3241('0x24')](respondWithResult(_0x42ab4a,null))[_0x3241('0x53')](handleError(_0x42ab4a,null));};exports[_0x3241('0x56')]=function(_0x45252a,_0x293ef8){return db[_0x3241('0x2b')][_0x3241('0x56')](_0x45252a['body'],{})[_0x3241('0x24')](respondWithResult(_0x293ef8,0xc9))['catch'](handleError(_0x293ef8,null));};exports[_0x3241('0x23')]=function(_0x10ebeb,_0xd0594e){if(_0x10ebeb['body']['id']){delete _0x10ebeb[_0x3241('0x57')]['id'];}return db[_0x3241('0x2b')][_0x3241('0x55')]({'where':{'id':_0x10ebeb['params']['id']}})[_0x3241('0x24')](handleEntityNotFound(_0xd0594e,null))[_0x3241('0x24')](saveUpdates(_0x10ebeb[_0x3241('0x57')],null))[_0x3241('0x24')](respondWithResult(_0xd0594e,null))['catch'](handleError(_0xd0594e,null));};exports[_0x3241('0x58')]=function(_0x180ad7,_0x2e87c0){return db['CmHopper'][_0x3241('0x58')]()['then'](respondWithResult(_0x2e87c0,null))['catch'](handleError(_0x2e87c0,null));};exports['destroy']=function(_0x2d615d,_0x3aa49f){var _0x504777;return db[_0x3241('0x2b')]['find']({'where':{'id':_0x2d615d[_0x3241('0x54')]['id']}})[_0x3241('0x24')](handleEntityNotFound(_0x3aa49f,null))[_0x3241('0x24')](function(_0x130527){if(_0x130527){return _0x130527[_0x3241('0x25')]()[_0x3241('0x24')](function(_0x3593dc){return _0x3593dc;});}})[_0x3241('0x24')](function(_0x14b52b){_0x504777=_0x14b52b;if(_0x14b52b){if(_0x14b52b[_0x3241('0x59')]||_0x14b52b[_0x3241('0x5a')]){return db[_0x14b52b['VoiceQueueId']?'VoiceQueue':_0x3241('0x5b')]['find']({'where':{'id':_0x14b52b[_0x3241('0x59')]?_0x14b52b['VoiceQueueId']:_0x14b52b[_0x3241('0x5a')]},'attributes':['id',_0x3241('0x28')],'raw':!![]});}}})[_0x3241('0x24')](function(_0x16831f){var _0x1b1079={};if(_0x16831f){_[_0x3241('0x4e')](_0x1b1079,_[_0x3241('0x5c')](_0x504777[_0x3241('0x5d')],[_0x3241('0x5e'),'updatedAt','id']));_0x1b1079['state']=0x15;_0x1b1079[_0x3241('0x5f')]=_0x3241('0x60');_0x1b1079[_0x3241('0x61')]=_0x16831f['name'];_0x1b1079['membername']=_0x2d615d['user'][_0x3241('0x28')];_0x1b1079[_0x3241('0x62')]=_0x2d615d['user']['id'];_0x1b1079[_0x3241('0x60')]=!![];_0x1b1079[_0x3241('0x63')]=moment()[_0x3241('0x64')](_0x3241('0x65'));_0x1b1079[_0x3241('0x66')]=_0x504777[_0x3241('0x67')];_0x1b1079[_0x3241('0x68')]=_0x504777['VoiceQueueId']?_0x3241('0x69'):_0x3241('0x6a');return db[_0x3241('0x6b')][_0x3241('0x55')]({'where':{'id':_0x1b1079['ContactId']},'attributes':[_0x3241('0x6c'),'lastName']})['then'](function(_0x4c5d8b){if(!_[_0x3241('0x6d')](_0x3aa49f)&&!_[_0x3241('0x6d')](_0x4c5d8b[_0x3241('0x6c')])){_0x1b1079[_0x3241('0x6e')]=_0x4c5d8b['firstName'];if(!_[_0x3241('0x6d')](_0x4c5d8b[_0x3241('0x6f')])){_0x1b1079[_0x3241('0x6e')]+='\x20'+_0x4c5d8b[_0x3241('0x6f')];}}})[_0x3241('0x70')](function(){return db[_0x3241('0x71')][_0x3241('0x56')](_0x1b1079);});}})[_0x3241('0x24')](function(){return _0x3aa49f['status'](0xcc)[_0x3241('0x72')]();})['catch'](handleError(_0x3aa49f,null));};exports[_0x3241('0x73')]=function(_0x584e8b,_0x2c34d7,_0x5ea4ad){var _0x2835ef=[];return db[_0x3241('0x6b')][_0x3241('0x58')]()[_0x3241('0x24')](function(_0x4338db){_0x2835ef=_[_0x3241('0x31')](_0x4338db);return _0x584e8b['user'][_0x3241('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x3241('0x75')},'attributes':['id','dialOrderByScheduledAt',_0x3241('0x76')],'raw':!![]});})['then'](function(_0x311e27){if(_0x311e27&&_0x311e27[_0x3241('0x47')]){return db[_0x3241('0x77')][_0x3241('0x78')](function(_0x42ba34){var _0x4d117={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x3241('0x65'))},'VoiceQueueId':{'$in':_[_0x3241('0x2a')](_0x311e27,'id')},'$or':[{'UserId':null},{'UserId':_0x584e8b[_0x3241('0x79')]['id']}]};var _0x284fb4={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x311e27)[_0x3241('0x4d')](['dialPreviewAutoRecallMe',0x0])[_0x3241('0x2a')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x584e8b['user']['id']}]};var _0x51cef1={'$or':[_0x4d117,_0x284fb4]};var _0x10621a=[];if(_0x584e8b['body'][_0x3241('0x7a')]&&_0x584e8b['body'][_0x3241('0x7a')]==='prev'){if(!_[_0x3241('0x7b')](_0x584e8b[_0x3241('0x57')][_0x3241('0x7c')])){_0x51cef1['id']={'$in':_0x584e8b[_0x3241('0x57')][_0x3241('0x7c')]};}_0x10621a=[['priority',_0x3241('0x7d')],[_0x3241('0x7e'),_0x311e27[0x0][_0x3241('0x7f')]===_0x3241('0x7d')?'DESC':'ASC'],db[_0x3241('0x77')][_0x3241('0x80')](_0x3241('0x81')),['id',_0x3241('0x82')]];}else{if(!_[_0x3241('0x7b')](_0x584e8b[_0x3241('0x57')]['hopperIds'])){_0x51cef1['id']={'$notIn':_0x584e8b[_0x3241('0x57')][_0x3241('0x7c')]};}_0x10621a=[['priority',_0x3241('0x82')],[_0x3241('0x7e'),_0x311e27[0x0][_0x3241('0x7f')]],db['sequelize']['literal'](_0x3241('0x83')),['id',_0x3241('0x7d')]];}return db[_0x3241('0x2b')][_0x3241('0x84')]({'attributes':['id',_0x3241('0x85'),_0x3241('0x86')],'where':_0x51cef1,'order':_0x10621a,'transaction':_0x42ba34,'lock':_0x42ba34[_0x3241('0x87')][_0x3241('0x88')],'include':[{'model':db[_0x3241('0x6b')],'as':'Contact','attributes':_0x2835ef,'include':[{'model':db[_0x3241('0x89')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id','name']},{'model':db[_0x3241('0x8a')],'as':_0x3241('0x8b'),'attributes':['id',_0x3241('0x28'),_0x3241('0x8c')]}]})[_0x3241('0x24')](function(_0x239278){if(_0x239278){return _0x239278[_0x3241('0x23')]({'UserId':_0x584e8b['user']['id']},{'transaction':_0x42ba34});}});});}})[_0x3241('0x24')](handleEntityNotFound(_0x2c34d7,null))[_0x3241('0x24')](respondWithResult(_0x2c34d7,null))['catch'](handleError(_0x2c34d7,null));};exports[_0x3241('0x8d')]=function(_0x8899b,_0x33f1cf,_0x30b8ba){return _0x8899b['user']['getVoiceQueues']({'where':{'type':_0x3241('0x8e'),'dialActive':!![],'dialMethod':_0x3241('0x75')},'attributes':['id'],'raw':!![]})[_0x3241('0x24')](function(_0x595a94){if(_0x595a94&&_0x595a94[_0x3241('0x47')]){return db[_0x3241('0x2b')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x3241('0x64')](_0x3241('0x65'))},'VoiceQueueId':{'$in':_['map'](_0x595a94,'id')},'$or':[{'UserId':null},{'UserId':_0x8899b[_0x3241('0x79')]['id']}]}});}return 0x0;})[_0x3241('0x24')](function(_0x370f69){if(!_['isNil'](_0x370f69)&&_[_0x3241('0x8f')](_0x370f69)){return _0x33f1cf[_0x3241('0x19')](0xc8)[_0x3241('0x1a')]({'contacts':_0x370f69});}else{logger['error'](_0x3241('0x90'),_0x3241('0x8d'),0x194,_0x3241('0x91'));_0x33f1cf[_0x3241('0x18')](0x194);}})['catch'](handleError(_0x33f1cf,null));};