e4d7672d94a24c9d3874506d3494b00e75ce0db8
[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 _0x4add=['eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','offset','set','Content-Range','apply','update','then','sendStatus','error','stack','name','send','CmHopper','rawAttributes','type','key','query','keys','model','filters','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','attributes','intersection','fields','length','hasOwnProperty','limit','sort','pick','filter','where','merge','map','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','create','body','find','describe','destroy','VoiceQueueId','VoiceQueue','Campaign','CampaignId','updatedAt','state','statedesc','campaign','membername','UserId','user','deleted','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','CmContact','isNil','calleridname','firstName','lastName','finally','getPreview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','scheduledAt','ASC','DESC','literal','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','Queue','dialActive','getOpenContacts','outbound','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf'];(function(_0x29abe1,_0x35036d){var _0x4d7044=function(_0x310313){while(--_0x310313){_0x29abe1['push'](_0x29abe1['shift']());}};_0x4d7044(++_0x35036d);}(_0x4add,0x8a));var _0xd4ad=function(_0x3beb05,_0x4bb1cd){_0x3beb05=_0x3beb05-0x0;var _0x576032=_0x4add[_0x3beb05];return _0x576032;};'use strict';var pdf=require(_0xd4ad('0x0'));var emlformat=require(_0xd4ad('0x1'));var rimraf=require(_0xd4ad('0x2'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd4ad('0x3'));var moment=require(_0xd4ad('0x4'));var BPromise=require(_0xd4ad('0x5'));var Mustache=require(_0xd4ad('0x6'));var util=require(_0xd4ad('0x7'));var path=require(_0xd4ad('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var _=require(_0xd4ad('0x9'));var squel=require(_0xd4ad('0xa'));var crypto=require('crypto');var jsforce=require(_0xd4ad('0xb'));var deskjs=require(_0xd4ad('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd4ad('0xd'));var Papa=require(_0xd4ad('0xe'));var Redis=require(_0xd4ad('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd4ad('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd4ad('0x11'));var logger=require('../../config/logger')(_0xd4ad('0x12'));var utils=require(_0xd4ad('0x13'));var config=require(_0xd4ad('0x14'));var db=require(_0xd4ad('0x15'))['db'];function respondWithStatusCode(_0x2d933a,_0x2afbce){_0x2afbce=_0x2afbce||0xcc;return function(_0x21144b){if(_0x21144b){return _0x2d933a['sendStatus'](_0x2afbce);}return _0x2d933a['status'](_0x2afbce)[_0xd4ad('0x16')]();};}function respondWithResult(_0x52a67a,_0x1c561e){_0x1c561e=_0x1c561e||0xc8;return function(_0x2fda99){if(_0x2fda99){return _0x52a67a[_0xd4ad('0x17')](_0x1c561e)['json'](_0x2fda99);}};}function respondWithFilteredResult(_0x298db1,_0x42911f){return function(_0x1d3fab){if(_0x1d3fab){var _0x273bff=_0x1d3fab['count'],_0x3465f7=_0x42911f[_0xd4ad('0x18')],_0x205b2e=_0x42911f[_0xd4ad('0x18')]+_0x42911f['limit'],_0x2e5cab;if(_0x205b2e>=_0x273bff){_0x205b2e=_0x273bff;_0x2e5cab=0xc8;}else{_0x2e5cab=0xce;}_0x298db1[_0xd4ad('0x17')](_0x2e5cab);return _0x298db1[_0xd4ad('0x19')](_0xd4ad('0x1a'),_0x3465f7+'-'+_0x205b2e+'/'+_0x273bff)['json'](_0x1d3fab);}return null;};}function patchUpdates(_0x5cc4bc){return function(_0x40bf75){try{jsonpatch[_0xd4ad('0x1b')](_0x40bf75,_0x5cc4bc,!![]);}catch(_0x11140f){return BPromise['reject'](_0x11140f);}return _0x40bf75['save']();};}function saveUpdates(_0x44d40a,_0x37a584){return function(_0x534e44){if(_0x534e44){return _0x534e44[_0xd4ad('0x1c')](_0x44d40a)[_0xd4ad('0x1d')](function(_0x35ebcb){return _0x35ebcb;});}return null;};}function removeEntity(_0x40b2fd,_0x20746f){return function(_0x413eed){if(_0x413eed){return _0x413eed['destroy']()[_0xd4ad('0x1d')](function(){_0x40b2fd[_0xd4ad('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d1bce,_0x33b386){return function(_0x30c333){if(!_0x30c333){_0x5d1bce[_0xd4ad('0x1e')](0x194);}return _0x30c333;};}function handleError(_0x470776,_0x3d3f1c){_0x3d3f1c=_0x3d3f1c||0x1f4;return function(_0xcc0fa5){logger[_0xd4ad('0x1f')](_0xcc0fa5[_0xd4ad('0x20')]);if(_0xcc0fa5[_0xd4ad('0x21')]){delete _0xcc0fa5[_0xd4ad('0x21')];}_0x470776[_0xd4ad('0x17')](_0x3d3f1c)[_0xd4ad('0x22')](_0xcc0fa5);};}exports['index']=function(_0x3d4ea3,_0x4245cd){var _0x22712f={},_0x1de4b5={},_0x261c6a={'count':0x0,'rows':[]};var _0x2152a7=_['map'](db[_0xd4ad('0x23')][_0xd4ad('0x24')],function(_0x266c3c){return{'name':_0x266c3c['fieldName'],'type':_0x266c3c[_0xd4ad('0x25')][_0xd4ad('0x26')]};});_0x1de4b5['model']=_['map'](_0x2152a7,'name');_0x1de4b5[_0xd4ad('0x27')]=_[_0xd4ad('0x28')](_0x3d4ea3[_0xd4ad('0x27')]);_0x1de4b5['filters']=_['intersection'](_0x1de4b5[_0xd4ad('0x29')],_0x1de4b5[_0xd4ad('0x27')]);_0x1de4b5[_0xd4ad('0x2a')]=_[_0xd4ad('0x2b')](_0x1de4b5[_0xd4ad('0x2a')],[_0xd4ad('0x2c'),_0xd4ad('0x2d'),_0xd4ad('0x2e'),_0xd4ad('0x2f'),_0xd4ad('0x30'),_0xd4ad('0x31'),_0xd4ad('0x32'),_0xd4ad('0x33'),_0xd4ad('0x34'),_0xd4ad('0x35'),_0xd4ad('0x36'),'$in',_0xd4ad('0x37'),_0xd4ad('0x38'),_0xd4ad('0x39'),'$iLike',_0xd4ad('0x3a'),_0xd4ad('0x38'),_0xd4ad('0x3b'),_0xd4ad('0x3c'),_0xd4ad('0x3d'),'$any']);_0x22712f[_0xd4ad('0x3e')]=_[_0xd4ad('0x3f')](_0x1de4b5[_0xd4ad('0x29')],qs[_0xd4ad('0x40')](_0x3d4ea3[_0xd4ad('0x27')][_0xd4ad('0x40')]));_0x22712f[_0xd4ad('0x3e')]=_0x22712f[_0xd4ad('0x3e')][_0xd4ad('0x41')]?_0x22712f[_0xd4ad('0x3e')]:_0x1de4b5[_0xd4ad('0x29')];if(!_0x3d4ea3['query'][_0xd4ad('0x42')]('nolimit')){_0x22712f['limit']=qs[_0xd4ad('0x43')](_0x3d4ea3['query'][_0xd4ad('0x43')]);_0x22712f[_0xd4ad('0x18')]=qs[_0xd4ad('0x18')](_0x3d4ea3['query'][_0xd4ad('0x18')]);}_0x22712f['order']=qs['sort'](_0x3d4ea3[_0xd4ad('0x27')][_0xd4ad('0x44')]);_0x22712f['where']=qs['filters'](_[_0xd4ad('0x45')](_0x3d4ea3[_0xd4ad('0x27')],_0x1de4b5[_0xd4ad('0x2a')]));if(_0x3d4ea3[_0xd4ad('0x27')][_0xd4ad('0x46')]){_0x22712f[_0xd4ad('0x47')]=_[_0xd4ad('0x48')](_0x22712f[_0xd4ad('0x47')],{'$or':_[_0xd4ad('0x49')](_0x2152a7,function(_0x1f88fe){if(_0x1f88fe[_0xd4ad('0x25')]!==_0xd4ad('0x4a')){var _0x33d3e2={};_0x33d3e2[_0x1f88fe[_0xd4ad('0x21')]]={'$like':'%'+_0x3d4ea3[_0xd4ad('0x27')][_0xd4ad('0x46')]+'%'};return _0x33d3e2;}})});}_0x22712f=_[_0xd4ad('0x48')]({},_0x22712f,_0x3d4ea3[_0xd4ad('0x4b')]);var _0x5ac031={'where':_0x22712f[_0xd4ad('0x47')]};return db[_0xd4ad('0x23')][_0xd4ad('0x4c')](_0x5ac031)['then'](function(_0x28f650){_0x261c6a[_0xd4ad('0x4c')]=_0x28f650;if(_0x3d4ea3['query'][_0xd4ad('0x4d')]){_0x22712f[_0xd4ad('0x4e')]=[{'all':!![]}];}return db[_0xd4ad('0x23')][_0xd4ad('0x4f')](_0x22712f);})[_0xd4ad('0x1d')](function(_0x3e51ef){_0x261c6a['rows']=_0x3e51ef;return _0x261c6a;})['then'](respondWithFilteredResult(_0x4245cd,_0x22712f))[_0xd4ad('0x50')](handleError(_0x4245cd,null));};exports[_0xd4ad('0x51')]=function(_0x460698,_0x3adbc8){var _0x270b0b={'raw':!![],'where':{'id':_0x460698[_0xd4ad('0x52')]['id']}},_0xefeff5={};_0xefeff5[_0xd4ad('0x29')]=_[_0xd4ad('0x28')](db[_0xd4ad('0x23')]['rawAttributes']);_0xefeff5[_0xd4ad('0x27')]=_[_0xd4ad('0x28')](_0x460698['query']);_0xefeff5[_0xd4ad('0x2a')]=_[_0xd4ad('0x3f')](_0xefeff5[_0xd4ad('0x29')],_0xefeff5[_0xd4ad('0x27')]);_0x270b0b[_0xd4ad('0x3e')]=_[_0xd4ad('0x3f')](_0xefeff5['model'],qs[_0xd4ad('0x40')](_0x460698['query'][_0xd4ad('0x40')]));_0x270b0b[_0xd4ad('0x3e')]=_0x270b0b[_0xd4ad('0x3e')][_0xd4ad('0x41')]?_0x270b0b[_0xd4ad('0x3e')]:_0xefeff5['model'];if(_0x460698[_0xd4ad('0x27')][_0xd4ad('0x4d')]){_0x270b0b[_0xd4ad('0x4e')]=[{'all':!![]}];}_0x270b0b=_[_0xd4ad('0x48')]({},_0x270b0b,_0x460698[_0xd4ad('0x4b')]);return db[_0xd4ad('0x23')]['find'](_0x270b0b)[_0xd4ad('0x1d')](handleEntityNotFound(_0x3adbc8,null))[_0xd4ad('0x1d')](respondWithResult(_0x3adbc8,null))[_0xd4ad('0x50')](handleError(_0x3adbc8,null));};exports[_0xd4ad('0x53')]=function(_0x5cf5d7,_0x439f9b){return db[_0xd4ad('0x23')][_0xd4ad('0x53')](_0x5cf5d7[_0xd4ad('0x54')],{})['then'](respondWithResult(_0x439f9b,0xc9))[_0xd4ad('0x50')](handleError(_0x439f9b,null));};exports[_0xd4ad('0x1c')]=function(_0x1f431e,_0xf2a11c){if(_0x1f431e[_0xd4ad('0x54')]['id']){delete _0x1f431e[_0xd4ad('0x54')]['id'];}return db[_0xd4ad('0x23')][_0xd4ad('0x55')]({'where':{'id':_0x1f431e['params']['id']}})[_0xd4ad('0x1d')](handleEntityNotFound(_0xf2a11c,null))[_0xd4ad('0x1d')](saveUpdates(_0x1f431e['body'],null))[_0xd4ad('0x1d')](respondWithResult(_0xf2a11c,null))[_0xd4ad('0x50')](handleError(_0xf2a11c,null));};exports[_0xd4ad('0x56')]=function(_0x9553c3,_0xddf1df){return db[_0xd4ad('0x23')][_0xd4ad('0x56')]()['then'](respondWithResult(_0xddf1df,null))['catch'](handleError(_0xddf1df,null));};exports[_0xd4ad('0x57')]=function(_0x2ee6df,_0x4fa112){var _0x3c97f3;return db[_0xd4ad('0x23')]['find']({'where':{'id':_0x2ee6df['params']['id']}})[_0xd4ad('0x1d')](handleEntityNotFound(_0x4fa112,null))[_0xd4ad('0x1d')](function(_0x4f43c1){if(_0x4f43c1){return _0x4f43c1[_0xd4ad('0x57')]()[_0xd4ad('0x1d')](function(_0x2b3b04){return _0x2b3b04;});}})[_0xd4ad('0x1d')](function(_0x1432e2){_0x3c97f3=_0x1432e2;if(_0x1432e2){if(_0x1432e2[_0xd4ad('0x58')]||_0x1432e2['CampaignId']){return db[_0x1432e2[_0xd4ad('0x58')]?_0xd4ad('0x59'):_0xd4ad('0x5a')]['find']({'where':{'id':_0x1432e2[_0xd4ad('0x58')]?_0x1432e2['VoiceQueueId']:_0x1432e2[_0xd4ad('0x5b')]},'attributes':['id',_0xd4ad('0x21')],'raw':!![]});}}})[_0xd4ad('0x1d')](function(_0x2d8f1e){var _0x29969d={};if(_0x2d8f1e){_[_0xd4ad('0x48')](_0x29969d,_['omit'](_0x3c97f3['dataValues'],['createdAt',_0xd4ad('0x5c'),'id']));_0x29969d[_0xd4ad('0x5d')]=0x15;_0x29969d[_0xd4ad('0x5e')]='deleted';_0x29969d[_0xd4ad('0x5f')]=_0x2d8f1e['name'];_0x29969d[_0xd4ad('0x60')]=_0x2ee6df['user'][_0xd4ad('0x21')];_0x29969d[_0xd4ad('0x61')]=_0x2ee6df[_0xd4ad('0x62')]['id'];_0x29969d[_0xd4ad('0x63')]=!![];_0x29969d['deletedat']=moment()[_0xd4ad('0x64')](_0xd4ad('0x65'));_0x29969d[_0xd4ad('0x66')]=_0x3c97f3['phone'];_0x29969d['campaigntype']=_0x3c97f3[_0xd4ad('0x58')]?'queue':'ivr';return db[_0xd4ad('0x67')][_0xd4ad('0x55')]({'where':{'id':_0x29969d['ContactId']},'attributes':['firstName','lastName']})[_0xd4ad('0x1d')](function(_0x5b40c4){if(!_['isNil'](_0x4fa112)&&!_[_0xd4ad('0x68')](_0x5b40c4['firstName'])){_0x29969d[_0xd4ad('0x69')]=_0x5b40c4[_0xd4ad('0x6a')];if(!_[_0xd4ad('0x68')](_0x5b40c4[_0xd4ad('0x6b')])){_0x29969d[_0xd4ad('0x69')]+='\x20'+_0x5b40c4[_0xd4ad('0x6b')];}}})[_0xd4ad('0x6c')](function(){return db['CmHopperFinal']['create'](_0x29969d);});}})[_0xd4ad('0x1d')](function(){return _0x4fa112[_0xd4ad('0x17')](0xcc)[_0xd4ad('0x16')]();})[_0xd4ad('0x50')](handleError(_0x4fa112,null));};exports[_0xd4ad('0x6d')]=function(_0x524b51,_0x264abe,_0x455beb){var _0x58c352=[];return db[_0xd4ad('0x67')][_0xd4ad('0x56')]()[_0xd4ad('0x1d')](function(_0x77fdf0){_0x58c352=_[_0xd4ad('0x28')](_0x77fdf0);return _0x524b51[_0xd4ad('0x62')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xd4ad('0x6e')],'raw':!![]});})[_0xd4ad('0x1d')](function(_0x423b89){if(_0x423b89&&_0x423b89[_0xd4ad('0x41')]){return db[_0xd4ad('0x6f')][_0xd4ad('0x70')](function(_0x45050d){var _0x57087e={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd4ad('0x64')](_0xd4ad('0x65'))},'VoiceQueueId':{'$in':_[_0xd4ad('0x49')](_0x423b89,'id')},'$or':[{'UserId':null},{'UserId':_0x524b51['user']['id']}]};var _0x3cbf5d=[];if(_0x524b51['body'][_0xd4ad('0x71')]&&_0x524b51[_0xd4ad('0x54')][_0xd4ad('0x71')]===_0xd4ad('0x72')){if(!_[_0xd4ad('0x73')](_0x524b51['body'][_0xd4ad('0x74')])){_0x57087e['id']={'$in':_0x524b51[_0xd4ad('0x54')][_0xd4ad('0x74')]};}_0x3cbf5d=[['priority','ASC'],[_0xd4ad('0x75'),_0x423b89[0x0][_0xd4ad('0x6e')]===_0xd4ad('0x76')?_0xd4ad('0x77'):_0xd4ad('0x76')],db['sequelize'][_0xd4ad('0x78')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xd4ad('0x77')]];}else{if(!_[_0xd4ad('0x73')](_0x524b51[_0xd4ad('0x54')][_0xd4ad('0x74')])){_0x57087e['id']={'$notIn':_0x524b51[_0xd4ad('0x54')][_0xd4ad('0x74')]};}_0x3cbf5d=[[_0xd4ad('0x79'),_0xd4ad('0x77')],['scheduledAt',_0x423b89[0x0]['dialOrderByScheduledAt']],db[_0xd4ad('0x6f')][_0xd4ad('0x78')](_0xd4ad('0x7a')),['id',_0xd4ad('0x76')]];}return db['CmHopper'][_0xd4ad('0x7b')]({'attributes':['id',_0xd4ad('0x7c')],'where':_0x57087e,'order':_0x3cbf5d,'transaction':_0x45050d,'lock':_0x45050d[_0xd4ad('0x7d')][_0xd4ad('0x7e')],'include':[{'model':db['CmContact'],'as':_0xd4ad('0x7f'),'attributes':_0x58c352,'include':[{'model':db[_0xd4ad('0x80')],'as':_0xd4ad('0x81'),'attributes':['id','name']}]},{'model':db[_0xd4ad('0x82')],'as':'List','attributes':['id',_0xd4ad('0x21')]},{'model':db['VoiceQueue'],'as':_0xd4ad('0x83'),'attributes':['id',_0xd4ad('0x21'),_0xd4ad('0x84')]}]})[_0xd4ad('0x1d')](function(_0x4fb2d8){if(_0x4fb2d8){return _0x4fb2d8[_0xd4ad('0x1c')]({'UserId':_0x524b51[_0xd4ad('0x62')]['id']},{'transaction':_0x45050d});}});});}})[_0xd4ad('0x1d')](handleEntityNotFound(_0x264abe,null))[_0xd4ad('0x1d')](respondWithResult(_0x264abe,null))['catch'](handleError(_0x264abe,null));};exports[_0xd4ad('0x85')]=function(_0x8f0182,_0x30b0ec,_0x17d0be){return _0x8f0182[_0xd4ad('0x62')]['getVoiceQueues']({'where':{'type':_0xd4ad('0x86'),'dialActive':!![],'dialMethod':_0xd4ad('0x87')},'attributes':['id'],'raw':!![]})[_0xd4ad('0x1d')](function(_0x3852c4){if(_0x3852c4&&_0x3852c4['length']){return db[_0xd4ad('0x23')][_0xd4ad('0x4c')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xd4ad('0x64')](_0xd4ad('0x65'))},'VoiceQueueId':{'$in':_[_0xd4ad('0x49')](_0x3852c4,'id')},'$or':[{'UserId':null},{'UserId':_0x8f0182[_0xd4ad('0x62')]['id']}]}});}return 0x0;})[_0xd4ad('0x1d')](function(_0x5d943e){if(!_[_0xd4ad('0x68')](_0x5d943e)&&_[_0xd4ad('0x88')](_0x5d943e)){return _0x30b0ec[_0xd4ad('0x17')](0xc8)['json']({'contacts':_0x5d943e});}else{logger[_0xd4ad('0x1f')](_0xd4ad('0x89'),_0xd4ad('0x85'),0x194,_0xd4ad('0x8a'));_0x30b0ec['sendStatus'](0x194);}})[_0xd4ad('0x50')](handleError(_0x30b0ec,null));};