8599cc9aaddd9f8327a139c808256491cda628ae
[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 _0x6f6e=['DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','dialOrderByScheduledAt','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','Queue','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','html-pdf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','count','offset','limit','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','concat','$gt','$gte','$lt','$eq','$not','$between','$in','$notIn','$notLike','$iLike','$notILike','$like','$contains','$contained','attributes','fields','length','nolimit','sort','filter','merge','where','VIRTUAL','includeAll','findAll','catch','show','include','find','create','body','describe','CampaignId','VoiceQueueId','VoiceQueue','Campaign','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','campaigntype','queue','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','getVoiceQueues','outbound','sequelize','transaction','direction','isEmpty','hopperIds','priority','ASC'];(function(_0x537bcd,_0x13bae1){var _0x6cc881=function(_0x3d470f){while(--_0x3d470f){_0x537bcd['push'](_0x537bcd['shift']());}};_0x6cc881(++_0x13bae1);}(_0x6f6e,0x1b4));var _0xe6f6=function(_0x41d677,_0x17ad95){_0x41d677=_0x41d677-0x0;var _0x507986=_0x6f6e[_0x41d677];return _0x507986;};'use strict';var pdf=require(_0xe6f6('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe6f6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe6f6('0x2'));var moment=require('moment');var BPromise=require(_0xe6f6('0x3'));var Mustache=require(_0xe6f6('0x4'));var util=require(_0xe6f6('0x5'));var path=require(_0xe6f6('0x6'));var sox=require('sox');var csv=require(_0xe6f6('0x7'));var ejs=require(_0xe6f6('0x8'));var fs=require('fs');var _=require(_0xe6f6('0x9'));var squel=require(_0xe6f6('0xa'));var crypto=require(_0xe6f6('0xb'));var jsforce=require(_0xe6f6('0xc'));var deskjs=require(_0xe6f6('0xd'));var toCsv=require(_0xe6f6('0x7'));var querystring=require(_0xe6f6('0xe'));var Papa=require(_0xe6f6('0xf'));var Redis=require('ioredis');var authService=require(_0xe6f6('0x10'));var qs=require(_0xe6f6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe6f6('0x12'));var logger=require(_0xe6f6('0x13'))(_0xe6f6('0x14'));var utils=require(_0xe6f6('0x15'));var config=require(_0xe6f6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8a37b5,_0x4a8073){_0x4a8073=_0x4a8073||0xcc;return function(_0x116361){if(_0x116361){return _0x8a37b5['sendStatus'](_0x4a8073);}return _0x8a37b5[_0xe6f6('0x17')](_0x4a8073)[_0xe6f6('0x18')]();};}function respondWithResult(_0x3fe8a5,_0x239c75){_0x239c75=_0x239c75||0xc8;return function(_0x554f82){if(_0x554f82){return _0x3fe8a5['status'](_0x239c75)[_0xe6f6('0x19')](_0x554f82);}};}function respondWithFilteredResult(_0x5d891e,_0x3be6be){return function(_0x2300b8){if(_0x2300b8){var _0x252b8a=_0x2300b8[_0xe6f6('0x1a')],_0x441f76=_0x3be6be[_0xe6f6('0x1b')],_0x77d41c=_0x3be6be['offset']+_0x3be6be[_0xe6f6('0x1c')],_0x9d3d44;if(_0x77d41c>=_0x252b8a){_0x77d41c=_0x252b8a;_0x9d3d44=0xc8;}else{_0x9d3d44=0xce;}_0x5d891e[_0xe6f6('0x17')](_0x9d3d44);return _0x5d891e['set'](_0xe6f6('0x1d'),_0x441f76+'-'+_0x77d41c+'/'+_0x252b8a)[_0xe6f6('0x19')](_0x2300b8);}return null;};}function patchUpdates(_0x1fa792){return function(_0x18b573){try{jsonpatch[_0xe6f6('0x1e')](_0x18b573,_0x1fa792,!![]);}catch(_0x3eb527){return BPromise[_0xe6f6('0x1f')](_0x3eb527);}return _0x18b573[_0xe6f6('0x20')]();};}function saveUpdates(_0x4b5caa,_0x35e4f3){return function(_0x2761f1){if(_0x2761f1){return _0x2761f1[_0xe6f6('0x21')](_0x4b5caa)[_0xe6f6('0x22')](function(_0x3c2dbb){return _0x3c2dbb;});}return null;};}function removeEntity(_0x4c6b12,_0x36c9fb){return function(_0xfbfbf6){if(_0xfbfbf6){return _0xfbfbf6[_0xe6f6('0x23')]()[_0xe6f6('0x22')](function(){_0x4c6b12[_0xe6f6('0x17')](0xcc)[_0xe6f6('0x18')]();});}};}function handleEntityNotFound(_0x58130c,_0x251d9b){return function(_0xf33cf8){if(!_0xf33cf8){_0x58130c[_0xe6f6('0x24')](0x194);}return _0xf33cf8;};}function handleError(_0x159f37,_0x428db4){_0x428db4=_0x428db4||0x1f4;return function(_0x1d35cf){logger[_0xe6f6('0x25')](_0x1d35cf[_0xe6f6('0x26')]);if(_0x1d35cf[_0xe6f6('0x27')]){delete _0x1d35cf[_0xe6f6('0x27')];}_0x159f37[_0xe6f6('0x17')](_0x428db4)[_0xe6f6('0x28')](_0x1d35cf);};}exports[_0xe6f6('0x29')]=function(_0x496703,_0x5f47d1){var _0x3f759d={},_0xc910fd={},_0x5ae2af={'count':0x0,'rows':[]};var _0x42168b=_[_0xe6f6('0x2a')](db[_0xe6f6('0x2b')][_0xe6f6('0x2c')],function(_0x2ad6ad){return{'name':_0x2ad6ad[_0xe6f6('0x2d')],'type':_0x2ad6ad[_0xe6f6('0x2e')][_0xe6f6('0x2f')]};});_0xc910fd[_0xe6f6('0x30')]=_['map'](_0x42168b,'name');_0xc910fd['query']=_[_0xe6f6('0x31')](_0x496703[_0xe6f6('0x32')]);_0xc910fd[_0xe6f6('0x33')]=_[_0xe6f6('0x34')](_0xc910fd[_0xe6f6('0x30')],_0xc910fd[_0xe6f6('0x32')]);_0xc910fd[_0xe6f6('0x33')]=_[_0xe6f6('0x35')](_0xc910fd[_0xe6f6('0x33')],['$and','$or',_0xe6f6('0x36'),_0xe6f6('0x37'),_0xe6f6('0x38'),'$lte','$ne',_0xe6f6('0x39'),_0xe6f6('0x3a'),_0xe6f6('0x3b'),'$notBetween',_0xe6f6('0x3c'),_0xe6f6('0x3d'),'$like',_0xe6f6('0x3e'),_0xe6f6('0x3f'),_0xe6f6('0x40'),_0xe6f6('0x41'),'$overlap',_0xe6f6('0x42'),_0xe6f6('0x43'),'$any']);_0x3f759d[_0xe6f6('0x44')]=_['intersection'](_0xc910fd[_0xe6f6('0x30')],qs['fields'](_0x496703[_0xe6f6('0x32')][_0xe6f6('0x45')]));_0x3f759d['attributes']=_0x3f759d[_0xe6f6('0x44')][_0xe6f6('0x46')]?_0x3f759d[_0xe6f6('0x44')]:_0xc910fd['model'];if(!_0x496703[_0xe6f6('0x32')]['hasOwnProperty'](_0xe6f6('0x47'))){_0x3f759d[_0xe6f6('0x1c')]=qs[_0xe6f6('0x1c')](_0x496703[_0xe6f6('0x32')][_0xe6f6('0x1c')]);_0x3f759d['offset']=qs['offset'](_0x496703[_0xe6f6('0x32')][_0xe6f6('0x1b')]);}_0x3f759d['order']=qs[_0xe6f6('0x48')](_0x496703['query'][_0xe6f6('0x48')]);_0x3f759d['where']=qs[_0xe6f6('0x33')](_['pick'](_0x496703['query'],_0xc910fd[_0xe6f6('0x33')]));if(_0x496703[_0xe6f6('0x32')][_0xe6f6('0x49')]){_0x3f759d['where']=_[_0xe6f6('0x4a')](_0x3f759d[_0xe6f6('0x4b')],{'$or':_[_0xe6f6('0x2a')](_0x42168b,function(_0x102cef){if(_0x102cef[_0xe6f6('0x2e')]!==_0xe6f6('0x4c')){var _0x14e54a={};_0x14e54a[_0x102cef[_0xe6f6('0x27')]]={'$like':'%'+_0x496703[_0xe6f6('0x32')][_0xe6f6('0x49')]+'%'};return _0x14e54a;}})});}_0x3f759d=_[_0xe6f6('0x4a')]({},_0x3f759d,_0x496703['options']);var _0x255959={'where':_0x3f759d[_0xe6f6('0x4b')]};return db[_0xe6f6('0x2b')][_0xe6f6('0x1a')](_0x255959)[_0xe6f6('0x22')](function(_0x51ee5a){_0x5ae2af[_0xe6f6('0x1a')]=_0x51ee5a;if(_0x496703['query'][_0xe6f6('0x4d')]){_0x3f759d['include']=[{'all':!![]}];}return db[_0xe6f6('0x2b')][_0xe6f6('0x4e')](_0x3f759d);})[_0xe6f6('0x22')](function(_0x36ca4e){_0x5ae2af['rows']=_0x36ca4e;return _0x5ae2af;})[_0xe6f6('0x22')](respondWithFilteredResult(_0x5f47d1,_0x3f759d))[_0xe6f6('0x4f')](handleError(_0x5f47d1,null));};exports[_0xe6f6('0x50')]=function(_0x3311db,_0x27bca8){var _0x3dcf92={'raw':!![],'where':{'id':_0x3311db['params']['id']}},_0x47f8d3={};_0x47f8d3[_0xe6f6('0x30')]=_[_0xe6f6('0x31')](db['CmHopper'][_0xe6f6('0x2c')]);_0x47f8d3['query']=_[_0xe6f6('0x31')](_0x3311db[_0xe6f6('0x32')]);_0x47f8d3[_0xe6f6('0x33')]=_[_0xe6f6('0x34')](_0x47f8d3['model'],_0x47f8d3[_0xe6f6('0x32')]);_0x3dcf92['attributes']=_[_0xe6f6('0x34')](_0x47f8d3[_0xe6f6('0x30')],qs['fields'](_0x3311db[_0xe6f6('0x32')]['fields']));_0x3dcf92[_0xe6f6('0x44')]=_0x3dcf92[_0xe6f6('0x44')]['length']?_0x3dcf92['attributes']:_0x47f8d3[_0xe6f6('0x30')];if(_0x3311db[_0xe6f6('0x32')][_0xe6f6('0x4d')]){_0x3dcf92[_0xe6f6('0x51')]=[{'all':!![]}];}_0x3dcf92=_[_0xe6f6('0x4a')]({},_0x3dcf92,_0x3311db['options']);return db[_0xe6f6('0x2b')][_0xe6f6('0x52')](_0x3dcf92)['then'](handleEntityNotFound(_0x27bca8,null))['then'](respondWithResult(_0x27bca8,null))[_0xe6f6('0x4f')](handleError(_0x27bca8,null));};exports[_0xe6f6('0x53')]=function(_0xdeb9f5,_0x33facd){return db[_0xe6f6('0x2b')][_0xe6f6('0x53')](_0xdeb9f5[_0xe6f6('0x54')],{})[_0xe6f6('0x22')](respondWithResult(_0x33facd,0xc9))[_0xe6f6('0x4f')](handleError(_0x33facd,null));};exports['update']=function(_0x593f82,_0x35b356){if(_0x593f82[_0xe6f6('0x54')]['id']){delete _0x593f82[_0xe6f6('0x54')]['id'];}return db[_0xe6f6('0x2b')][_0xe6f6('0x52')]({'where':{'id':_0x593f82['params']['id']}})[_0xe6f6('0x22')](handleEntityNotFound(_0x35b356,null))[_0xe6f6('0x22')](saveUpdates(_0x593f82['body'],null))[_0xe6f6('0x22')](respondWithResult(_0x35b356,null))[_0xe6f6('0x4f')](handleError(_0x35b356,null));};exports[_0xe6f6('0x55')]=function(_0x32255d,_0x1b189e){return db[_0xe6f6('0x2b')][_0xe6f6('0x55')]()[_0xe6f6('0x22')](respondWithResult(_0x1b189e,null))[_0xe6f6('0x4f')](handleError(_0x1b189e,null));};exports[_0xe6f6('0x23')]=function(_0x47304d,_0x1f3592){var _0x228299;return db[_0xe6f6('0x2b')][_0xe6f6('0x52')]({'where':{'id':_0x47304d['params']['id']}})[_0xe6f6('0x22')](handleEntityNotFound(_0x1f3592,null))[_0xe6f6('0x22')](function(_0x13b457){if(_0x13b457){return _0x13b457[_0xe6f6('0x23')]()['then'](function(_0x5dc013){return _0x5dc013;});}})[_0xe6f6('0x22')](function(_0x216331){_0x228299=_0x216331;if(_0x216331){if(_0x216331['VoiceQueueId']||_0x216331[_0xe6f6('0x56')]){return db[_0x216331[_0xe6f6('0x57')]?_0xe6f6('0x58'):_0xe6f6('0x59')][_0xe6f6('0x52')]({'where':{'id':_0x216331[_0xe6f6('0x57')]?_0x216331['VoiceQueueId']:_0x216331[_0xe6f6('0x56')]},'attributes':['id',_0xe6f6('0x27')],'raw':!![]});}}})[_0xe6f6('0x22')](function(_0x177c14){var _0x510f2e={};if(_0x177c14){_[_0xe6f6('0x4a')](_0x510f2e,_['omit'](_0x228299[_0xe6f6('0x5a')],[_0xe6f6('0x5b'),_0xe6f6('0x5c'),'id']));_0x510f2e[_0xe6f6('0x5d')]=0x15;_0x510f2e[_0xe6f6('0x5e')]=_0xe6f6('0x5f');_0x510f2e[_0xe6f6('0x60')]=_0x177c14[_0xe6f6('0x27')];_0x510f2e[_0xe6f6('0x61')]=_0x47304d[_0xe6f6('0x62')][_0xe6f6('0x27')];_0x510f2e['UserId']=_0x47304d[_0xe6f6('0x62')]['id'];_0x510f2e[_0xe6f6('0x5f')]=!![];_0x510f2e[_0xe6f6('0x63')]=moment()[_0xe6f6('0x64')](_0xe6f6('0x65'));_0x510f2e['calleridnum']=_0x228299['phone'];_0x510f2e[_0xe6f6('0x66')]=_0x228299['VoiceQueueId']?_0xe6f6('0x67'):'ivr';return db[_0xe6f6('0x68')][_0xe6f6('0x52')]({'where':{'id':_0x510f2e[_0xe6f6('0x69')]},'attributes':[_0xe6f6('0x6a'),_0xe6f6('0x6b')]})['then'](function(_0xe17ef4){if(!_['isNil'](_0x1f3592)&&!_[_0xe6f6('0x6c')](_0xe17ef4[_0xe6f6('0x6a')])){_0x510f2e[_0xe6f6('0x6d')]=_0xe17ef4['firstName'];if(!_[_0xe6f6('0x6c')](_0xe17ef4['lastName'])){_0x510f2e[_0xe6f6('0x6d')]+='\x20'+_0xe17ef4[_0xe6f6('0x6b')];}}})[_0xe6f6('0x6e')](function(){return db['CmHopperFinal'][_0xe6f6('0x53')](_0x510f2e);});}})[_0xe6f6('0x22')](function(){return _0x1f3592[_0xe6f6('0x17')](0xcc)[_0xe6f6('0x18')]();})[_0xe6f6('0x4f')](handleError(_0x1f3592,null));};exports['getPreview']=function(_0x28b803,_0x4d05fb,_0x31e15c){var _0x3668d0=[];return db[_0xe6f6('0x68')]['describe']()[_0xe6f6('0x22')](function(_0x5c4d20){_0x3668d0=_[_0xe6f6('0x31')](_0x5c4d20);return _0x28b803['user'][_0xe6f6('0x6f')]({'where':{'type':_0xe6f6('0x70'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})['then'](function(_0x4342db){if(_0x4342db&&_0x4342db[_0xe6f6('0x46')]){return db[_0xe6f6('0x71')][_0xe6f6('0x72')](function(_0x350467){var _0x1a57aa={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xe6f6('0x65'))},'VoiceQueueId':{'$in':_[_0xe6f6('0x2a')](_0x4342db,'id')},'$or':[{'UserId':null},{'UserId':_0x28b803['user']['id']}]};var _0x22b830=[];if(_0x28b803['body'][_0xe6f6('0x73')]&&_0x28b803[_0xe6f6('0x54')][_0xe6f6('0x73')]==='prev'){if(!_[_0xe6f6('0x74')](_0x28b803[_0xe6f6('0x54')][_0xe6f6('0x75')])){_0x1a57aa['id']={'$in':_0x28b803[_0xe6f6('0x54')][_0xe6f6('0x75')]};}_0x22b830=[[_0xe6f6('0x76'),_0xe6f6('0x77')],['scheduledAt',_0x4342db[0x0]['dialOrderByScheduledAt']===_0xe6f6('0x77')?_0xe6f6('0x78'):_0xe6f6('0x77')],db[_0xe6f6('0x71')][_0xe6f6('0x79')](_0xe6f6('0x7a')),['id',_0xe6f6('0x78')]];}else{if(!_[_0xe6f6('0x74')](_0x28b803[_0xe6f6('0x54')]['hopperIds'])){_0x1a57aa['id']={'$notIn':_0x28b803['body']['hopperIds']};}_0x22b830=[[_0xe6f6('0x76'),'DESC'],[_0xe6f6('0x7b'),_0x4342db[0x0][_0xe6f6('0x7c')]],db['sequelize'][_0xe6f6('0x79')](_0xe6f6('0x7d')),['id',_0xe6f6('0x77')]];}return db[_0xe6f6('0x2b')][_0xe6f6('0x7e')]({'attributes':['id',_0xe6f6('0x7f')],'where':_0x1a57aa,'order':_0x22b830,'transaction':_0x350467,'lock':_0x350467[_0xe6f6('0x80')][_0xe6f6('0x81')],'include':[{'model':db['CmContact'],'as':_0xe6f6('0x82'),'attributes':_0x3668d0,'include':[{'model':db['CmCompany'],'as':_0xe6f6('0x83'),'attributes':['id',_0xe6f6('0x27')]}]},{'model':db[_0xe6f6('0x84')],'as':'List','attributes':['id',_0xe6f6('0x27')]},{'model':db[_0xe6f6('0x58')],'as':_0xe6f6('0x85'),'attributes':['id',_0xe6f6('0x27'),'dialActive']}]})[_0xe6f6('0x22')](function(_0x1d3f2b){if(_0x1d3f2b){return _0x1d3f2b[_0xe6f6('0x21')]({'UserId':_0x28b803['user']['id']},{'transaction':_0x350467});}});});}})[_0xe6f6('0x22')](handleEntityNotFound(_0x4d05fb,null))['then'](respondWithResult(_0x4d05fb,null))[_0xe6f6('0x4f')](handleError(_0x4d05fb,null));};exports['getOpenContacts']=function(_0x14ec38,_0x6ec47f,_0xf240bb){return _0x14ec38[_0xe6f6('0x62')][_0xe6f6('0x6f')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xe6f6('0x86')},'attributes':['id'],'raw':!![]})[_0xe6f6('0x22')](function(_0x352f76){if(_0x352f76&&_0x352f76[_0xe6f6('0x46')]){return db['CmHopper'][_0xe6f6('0x1a')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0xe6f6('0x2a')](_0x352f76,'id')},'$or':[{'UserId':null},{'UserId':_0x14ec38[_0xe6f6('0x62')]['id']}]}});}return 0x0;})['then'](function(_0x466c37){if(!_[_0xe6f6('0x6c')](_0x466c37)&&_[_0xe6f6('0x87')](_0x466c37)){return _0x6ec47f[_0xe6f6('0x17')](0xc8)['json']({'contacts':_0x466c37});}else{logger[_0xe6f6('0x25')](_0xe6f6('0x88'),_0xe6f6('0x89'),0x194,_0xe6f6('0x8a'));_0x6ec47f[_0xe6f6('0x24')](0x194);}})[_0xe6f6('0x4f')](handleError(_0x6ec47f,null));};