ec345f902820d4259e963f0055b95f2b3d53a45f
[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 _0xde6f=['jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','index','CmHopper','rawAttributes','fieldName','type','model','filters','intersection','query','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','omit','updatedAt','statedesc','campaign','membername','user','UserId','deleted','deletedat','format','calleridnum','campaigntype','queue','ivr','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','CmContact','preview','sequelize','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','dialOrderByScheduledAt','DESC','literal','scheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','LOCK','UPDATE','CmCompany','Company','CmList','List','dialActive','getOpenContacts','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto'];(function(_0x840fbb,_0x4410b5){var _0x5f3229=function(_0x10e600){while(--_0x10e600){_0x840fbb['push'](_0x840fbb['shift']());}};_0x5f3229(++_0x4410b5);}(_0xde6f,0x84));var _0xfde6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde6f[_0x20a584];return _0x4b41a8;};'use strict';var pdf=require('html-pdf');var emlformat=require('eml-format');var rimraf=require(_0xfde6('0x0'));var zipdir=require(_0xfde6('0x1'));var jsonpatch=require(_0xfde6('0x2'));var rp=require('request-promise');var moment=require(_0xfde6('0x3'));var BPromise=require(_0xfde6('0x4'));var Mustache=require(_0xfde6('0x5'));var util=require(_0xfde6('0x6'));var path=require(_0xfde6('0x7'));var sox=require(_0xfde6('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xfde6('0x9'));var squel=require(_0xfde6('0xa'));var crypto=require(_0xfde6('0xb'));var jsforce=require(_0xfde6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfde6('0xd'));var querystring=require(_0xfde6('0xe'));var Papa=require(_0xfde6('0xf'));var Redis=require('ioredis');var authService=require(_0xfde6('0x10'));var qs=require(_0xfde6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfde6('0x12'))(_0xfde6('0x13'));var utils=require(_0xfde6('0x14'));var config=require(_0xfde6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfde6('0x16'))['db'];function respondWithStatusCode(_0x9a96cf,_0x3a3776){_0x3a3776=_0x3a3776||0xcc;return function(_0x1c5ade){if(_0x1c5ade){return _0x9a96cf[_0xfde6('0x17')](_0x3a3776);}return _0x9a96cf['status'](_0x3a3776)[_0xfde6('0x18')]();};}function respondWithResult(_0x18de07,_0x5d129c){_0x5d129c=_0x5d129c||0xc8;return function(_0x8237f4){if(_0x8237f4){return _0x18de07[_0xfde6('0x19')](_0x5d129c)[_0xfde6('0x1a')](_0x8237f4);}};}function respondWithFilteredResult(_0x506b96,_0x159254){return function(_0xcd2776){if(_0xcd2776){var _0x101ea8=_0xcd2776[_0xfde6('0x1b')],_0x17d5e6=_0x159254['offset'],_0x5204ae=_0x159254[_0xfde6('0x1c')]+_0x159254[_0xfde6('0x1d')],_0x4c1ea0;if(_0x5204ae>=_0x101ea8){_0x5204ae=_0x101ea8;_0x4c1ea0=0xc8;}else{_0x4c1ea0=0xce;}_0x506b96['status'](_0x4c1ea0);return _0x506b96[_0xfde6('0x1e')]('Content-Range',_0x17d5e6+'-'+_0x5204ae+'/'+_0x101ea8)[_0xfde6('0x1a')](_0xcd2776);}return null;};}function patchUpdates(_0x398d76){return function(_0x44756d){try{jsonpatch[_0xfde6('0x1f')](_0x44756d,_0x398d76,!![]);}catch(_0x1ec215){return BPromise[_0xfde6('0x20')](_0x1ec215);}return _0x44756d[_0xfde6('0x21')]();};}function saveUpdates(_0x1841d8,_0x1a4076){return function(_0x599c33){if(_0x599c33){return _0x599c33[_0xfde6('0x22')](_0x1841d8)[_0xfde6('0x23')](function(_0x58a222){return _0x58a222;});}return null;};}function removeEntity(_0x2577a1,_0x458cfc){return function(_0x4ff8e2){if(_0x4ff8e2){return _0x4ff8e2[_0xfde6('0x24')]()[_0xfde6('0x23')](function(){_0x2577a1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c3c4d,_0xc18655){return function(_0x4bc2c2){if(!_0x4bc2c2){_0x2c3c4d[_0xfde6('0x17')](0x194);}return _0x4bc2c2;};}function handleError(_0x492219,_0x51ca17){_0x51ca17=_0x51ca17||0x1f4;return function(_0x2cac84){logger[_0xfde6('0x25')](_0x2cac84[_0xfde6('0x26')]);if(_0x2cac84[_0xfde6('0x27')]){delete _0x2cac84[_0xfde6('0x27')];}_0x492219[_0xfde6('0x19')](_0x51ca17)['send'](_0x2cac84);};}exports[_0xfde6('0x28')]=function(_0x262373,_0x5f2171){var _0x26b355={},_0x58457d={},_0x2e9b86={'count':0x0,'rows':[]};var _0x2eb564=_['map'](db[_0xfde6('0x29')][_0xfde6('0x2a')],function(_0x54e872){return{'name':_0x54e872[_0xfde6('0x2b')],'type':_0x54e872[_0xfde6('0x2c')]['key']};});_0x58457d[_0xfde6('0x2d')]=_['map'](_0x2eb564,_0xfde6('0x27'));_0x58457d['query']=_['keys'](_0x262373['query']);_0x58457d[_0xfde6('0x2e')]=_[_0xfde6('0x2f')](_0x58457d[_0xfde6('0x2d')],_0x58457d[_0xfde6('0x30')]);_0x58457d[_0xfde6('0x2e')]=_['concat'](_0x58457d['filters'],['$and',_0xfde6('0x31'),_0xfde6('0x32'),_0xfde6('0x33'),_0xfde6('0x34'),_0xfde6('0x35'),_0xfde6('0x36'),_0xfde6('0x37'),_0xfde6('0x38'),_0xfde6('0x39'),'$notBetween',_0xfde6('0x3a'),_0xfde6('0x3b'),_0xfde6('0x3c'),_0xfde6('0x3d'),'$iLike',_0xfde6('0x3e'),'$like',_0xfde6('0x3f'),_0xfde6('0x40'),_0xfde6('0x41'),_0xfde6('0x42')]);_0x26b355['attributes']=_[_0xfde6('0x2f')](_0x58457d['model'],qs[_0xfde6('0x43')](_0x262373[_0xfde6('0x30')]['fields']));_0x26b355[_0xfde6('0x44')]=_0x26b355[_0xfde6('0x44')][_0xfde6('0x45')]?_0x26b355[_0xfde6('0x44')]:_0x58457d['model'];if(!_0x262373[_0xfde6('0x30')][_0xfde6('0x46')](_0xfde6('0x47'))){_0x26b355[_0xfde6('0x1d')]=qs[_0xfde6('0x1d')](_0x262373[_0xfde6('0x30')][_0xfde6('0x1d')]);_0x26b355[_0xfde6('0x1c')]=qs[_0xfde6('0x1c')](_0x262373[_0xfde6('0x30')][_0xfde6('0x1c')]);}_0x26b355[_0xfde6('0x48')]=qs[_0xfde6('0x49')](_0x262373[_0xfde6('0x30')][_0xfde6('0x49')]);_0x26b355[_0xfde6('0x4a')]=qs[_0xfde6('0x2e')](_['pick'](_0x262373['query'],_0x58457d['filters']),_0x2eb564);if(_0x262373[_0xfde6('0x30')][_0xfde6('0x4b')]){_0x26b355['where']=_[_0xfde6('0x4c')](_0x26b355[_0xfde6('0x4a')],{'$or':_[_0xfde6('0x4d')](_0x2eb564,function(_0x25a567){if(_0x25a567[_0xfde6('0x2c')]!==_0xfde6('0x4e')){var _0x2b7a24={};_0x2b7a24[_0x25a567[_0xfde6('0x27')]]={'$like':'%'+_0x262373[_0xfde6('0x30')][_0xfde6('0x4b')]+'%'};return _0x2b7a24;}})});}_0x26b355=_[_0xfde6('0x4c')]({},_0x26b355,_0x262373[_0xfde6('0x4f')]);var _0x399213={'where':_0x26b355['where']};return db[_0xfde6('0x29')][_0xfde6('0x1b')](_0x399213)['then'](function(_0xdad23f){_0x2e9b86[_0xfde6('0x1b')]=_0xdad23f;if(_0x262373[_0xfde6('0x30')][_0xfde6('0x50')]){_0x26b355[_0xfde6('0x51')]=[{'all':!![]}];}return db[_0xfde6('0x29')][_0xfde6('0x52')](_0x26b355);})[_0xfde6('0x23')](function(_0x239761){_0x2e9b86[_0xfde6('0x53')]=_0x239761;return _0x2e9b86;})[_0xfde6('0x23')](respondWithFilteredResult(_0x5f2171,_0x26b355))[_0xfde6('0x54')](handleError(_0x5f2171,null));};exports[_0xfde6('0x55')]=function(_0x188797,_0x34ba90){var _0xff02c1={'raw':!![],'where':{'id':_0x188797[_0xfde6('0x56')]['id']}},_0x4f1c9f={};_0x4f1c9f[_0xfde6('0x2d')]=_[_0xfde6('0x57')](db[_0xfde6('0x29')][_0xfde6('0x2a')]);_0x4f1c9f['query']=_[_0xfde6('0x57')](_0x188797[_0xfde6('0x30')]);_0x4f1c9f[_0xfde6('0x2e')]=_['intersection'](_0x4f1c9f['model'],_0x4f1c9f[_0xfde6('0x30')]);_0xff02c1[_0xfde6('0x44')]=_[_0xfde6('0x2f')](_0x4f1c9f[_0xfde6('0x2d')],qs[_0xfde6('0x43')](_0x188797['query'][_0xfde6('0x43')]));_0xff02c1[_0xfde6('0x44')]=_0xff02c1[_0xfde6('0x44')][_0xfde6('0x45')]?_0xff02c1['attributes']:_0x4f1c9f[_0xfde6('0x2d')];if(_0x188797['query'][_0xfde6('0x50')]){_0xff02c1[_0xfde6('0x51')]=[{'all':!![]}];}_0xff02c1=_[_0xfde6('0x4c')]({},_0xff02c1,_0x188797[_0xfde6('0x4f')]);return db[_0xfde6('0x29')][_0xfde6('0x58')](_0xff02c1)[_0xfde6('0x23')](handleEntityNotFound(_0x34ba90,null))[_0xfde6('0x23')](respondWithResult(_0x34ba90,null))[_0xfde6('0x54')](handleError(_0x34ba90,null));};exports[_0xfde6('0x59')]=function(_0x555058,_0x1b39bc){return db[_0xfde6('0x29')]['create'](_0x555058[_0xfde6('0x5a')],{})[_0xfde6('0x23')](respondWithResult(_0x1b39bc,0xc9))['catch'](handleError(_0x1b39bc,null));};exports[_0xfde6('0x22')]=function(_0x340dec,_0x178ff5){if(_0x340dec[_0xfde6('0x5a')]['id']){delete _0x340dec[_0xfde6('0x5a')]['id'];}return db[_0xfde6('0x29')][_0xfde6('0x58')]({'where':{'id':_0x340dec[_0xfde6('0x56')]['id']}})[_0xfde6('0x23')](handleEntityNotFound(_0x178ff5,null))[_0xfde6('0x23')](saveUpdates(_0x340dec[_0xfde6('0x5a')],null))['then'](respondWithResult(_0x178ff5,null))['catch'](handleError(_0x178ff5,null));};exports[_0xfde6('0x5b')]=function(_0x2e027e,_0x196266){return db[_0xfde6('0x29')][_0xfde6('0x5b')]()[_0xfde6('0x23')](respondWithResult(_0x196266,null))[_0xfde6('0x54')](handleError(_0x196266,null));};exports[_0xfde6('0x24')]=function(_0x5d699b,_0x13ab70){var _0x281980;return db[_0xfde6('0x29')][_0xfde6('0x58')]({'where':{'id':_0x5d699b[_0xfde6('0x56')]['id']}})[_0xfde6('0x23')](handleEntityNotFound(_0x13ab70,null))[_0xfde6('0x23')](function(_0x1929f7){if(_0x1929f7){return _0x1929f7['destroy']()['then'](function(_0x523916){return _0x523916;});}})[_0xfde6('0x23')](function(_0x1b6964){_0x281980=_0x1b6964;if(_0x1b6964){if(_0x1b6964[_0xfde6('0x5c')]||_0x1b6964[_0xfde6('0x5d')]){return db[_0x1b6964[_0xfde6('0x5c')]?_0xfde6('0x5e'):'Campaign']['find']({'where':{'id':_0x1b6964[_0xfde6('0x5c')]?_0x1b6964['VoiceQueueId']:_0x1b6964['CampaignId']},'attributes':['id',_0xfde6('0x27')],'raw':!![]});}}})[_0xfde6('0x23')](function(_0x43587f){var _0x1de127={};if(_0x43587f){_[_0xfde6('0x4c')](_0x1de127,_[_0xfde6('0x5f')](_0x281980['dataValues'],['createdAt',_0xfde6('0x60'),'id']));_0x1de127['state']=0x15;_0x1de127[_0xfde6('0x61')]='deleted';_0x1de127[_0xfde6('0x62')]=_0x43587f[_0xfde6('0x27')];_0x1de127[_0xfde6('0x63')]=_0x5d699b[_0xfde6('0x64')][_0xfde6('0x27')];_0x1de127[_0xfde6('0x65')]=_0x5d699b[_0xfde6('0x64')]['id'];_0x1de127[_0xfde6('0x66')]=!![];_0x1de127[_0xfde6('0x67')]=moment()[_0xfde6('0x68')]('YYYY-MM-DD\x20HH:mm:ss');_0x1de127[_0xfde6('0x69')]=_0x281980['phone'];_0x1de127[_0xfde6('0x6a')]=_0x281980[_0xfde6('0x5c')]?_0xfde6('0x6b'):_0xfde6('0x6c');return db['CmContact'][_0xfde6('0x58')]({'where':{'id':_0x1de127['ContactId']},'attributes':[_0xfde6('0x6d'),_0xfde6('0x6e')]})[_0xfde6('0x23')](function(_0x5aa2d6){if(!_[_0xfde6('0x6f')](_0x13ab70)&&!_[_0xfde6('0x6f')](_0x5aa2d6[_0xfde6('0x6d')])){_0x1de127[_0xfde6('0x70')]=_0x5aa2d6[_0xfde6('0x6d')];if(!_[_0xfde6('0x6f')](_0x5aa2d6[_0xfde6('0x6e')])){_0x1de127['calleridname']+='\x20'+_0x5aa2d6[_0xfde6('0x6e')];}}})[_0xfde6('0x71')](function(){return db[_0xfde6('0x72')][_0xfde6('0x59')](_0x1de127);});}})[_0xfde6('0x23')](function(){return _0x13ab70[_0xfde6('0x19')](0xcc)[_0xfde6('0x18')]();})[_0xfde6('0x54')](handleError(_0x13ab70,null));};exports[_0xfde6('0x73')]=function(_0x22565c,_0xfb2181,_0x45b9b1){var _0xa9c471=[];return db[_0xfde6('0x74')][_0xfde6('0x5b')]()['then'](function(_0x3b25f5){_0xa9c471=_['keys'](_0x3b25f5);return _0x22565c['user']['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xfde6('0x75')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x5d0c3f){if(_0x5d0c3f&&_0x5d0c3f[_0xfde6('0x45')]){return db[_0xfde6('0x76')]['transaction'](function(_0x6396de){var _0x3bc7de={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xfde6('0x68')](_0xfde6('0x77'))},'VoiceQueueId':{'$in':_['map'](_0x5d0c3f,'id')},'$or':[{'UserId':null},{'UserId':_0x22565c[_0xfde6('0x64')]['id']}]};var _0x42453a=[];if(_0x22565c[_0xfde6('0x5a')][_0xfde6('0x78')]&&_0x22565c[_0xfde6('0x5a')][_0xfde6('0x78')]===_0xfde6('0x79')){if(!_[_0xfde6('0x7a')](_0x22565c[_0xfde6('0x5a')][_0xfde6('0x7b')])){_0x3bc7de['id']={'$in':_0x22565c[_0xfde6('0x5a')][_0xfde6('0x7b')]};}_0x42453a=[[_0xfde6('0x7c'),_0xfde6('0x7d')],['scheduledAt',_0x5d0c3f[0x0][_0xfde6('0x7e')]===_0xfde6('0x7d')?_0xfde6('0x7f'):'ASC'],db['sequelize'][_0xfde6('0x80')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xfde6('0x7f')]];}else{if(!_[_0xfde6('0x7a')](_0x22565c[_0xfde6('0x5a')][_0xfde6('0x7b')])){_0x3bc7de['id']={'$notIn':_0x22565c[_0xfde6('0x5a')][_0xfde6('0x7b')]};}_0x42453a=[[_0xfde6('0x7c'),_0xfde6('0x7f')],[_0xfde6('0x81'),_0x5d0c3f[0x0][_0xfde6('0x7e')]],db[_0xfde6('0x76')][_0xfde6('0x80')](_0xfde6('0x82')),['id',_0xfde6('0x7d')]];}return db[_0xfde6('0x29')][_0xfde6('0x83')]({'attributes':['id','scheduledat'],'where':_0x3bc7de,'order':_0x42453a,'transaction':_0x6396de,'lock':_0x6396de[_0xfde6('0x84')][_0xfde6('0x85')],'include':[{'model':db[_0xfde6('0x74')],'as':'Contact','attributes':_0xa9c471,'include':[{'model':db[_0xfde6('0x86')],'as':_0xfde6('0x87'),'attributes':['id','name']}]},{'model':db[_0xfde6('0x88')],'as':_0xfde6('0x89'),'attributes':['id',_0xfde6('0x27')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0xfde6('0x27'),_0xfde6('0x8a')]}]})['then'](function(_0x296098){if(_0x296098){return _0x296098[_0xfde6('0x22')]({'UserId':_0x22565c['user']['id']},{'transaction':_0x6396de});}});});}})['then'](handleEntityNotFound(_0xfb2181,null))['then'](respondWithResult(_0xfb2181,null))['catch'](handleError(_0xfb2181,null));};exports[_0xfde6('0x8b')]=function(_0x351950,_0x1e4d9a,_0x24e9bf){return _0x351950[_0xfde6('0x64')][_0xfde6('0x8c')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})['then'](function(_0x2f993d){if(_0x2f993d&&_0x2f993d[_0xfde6('0x45')]){return db[_0xfde6('0x29')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xfde6('0x68')](_0xfde6('0x77'))},'VoiceQueueId':{'$in':_[_0xfde6('0x4d')](_0x2f993d,'id')},'$or':[{'UserId':null},{'UserId':_0x351950[_0xfde6('0x64')]['id']}]}});}return 0x0;})[_0xfde6('0x23')](function(_0x44ecb3){if(!_[_0xfde6('0x6f')](_0x44ecb3)&&_[_0xfde6('0x8d')](_0x44ecb3)){return _0x1e4d9a[_0xfde6('0x19')](0xc8)['json']({'contacts':_0x44ecb3});}else{logger[_0xfde6('0x25')](_0xfde6('0x8e'),'getOpenContacts',0x194,_0xfde6('0x8f'));_0x1e4d9a['sendStatus'](0x194);}})[_0xfde6('0x54')](handleError(_0x1e4d9a,null));};