Built motion from commit (unavailable).|2.5.19
[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 _0x88c7=['limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','concat','$and','$gt','$lt','$ne','$between','$notBetween','$notIn','$like','$iLike','$overlap','$contains','$contained','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','include','catch','show','params','fields','find','create','body','describe','VoiceQueueId','CampaignId','VoiceQueue','omit','createdAt','updatedAt','state','statedesc','deleted','campaign','user','deletedat','format','calleridnum','phone','queue','ivr','CmContact','firstName','lastName','isNil','calleridname','finally','getPreview','dialOrderByScheduledAt','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','sequelize','scheduledAt','literal','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','CmList','Queue','dialActive','getOpenContacts','getVoiceQueues','preview','isNumber','entity\x20not\x20found','html-pdf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x88c7,0x6f));var _0x788c=function(_0x301e6d,_0x3b8ae9){_0x301e6d=_0x301e6d-0x0;var _0x568c4d=_0x88c7[_0x301e6d];return _0x568c4d;};'use strict';var pdf=require(_0x788c('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x788c('0x1'));var jsonpatch=require(_0x788c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x788c('0x3'));var Mustache=require(_0x788c('0x4'));var util=require('util');var path=require(_0x788c('0x5'));var sox=require(_0x788c('0x6'));var csv=require('to-csv');var ejs=require(_0x788c('0x7'));var fs=require('fs');var _=require(_0x788c('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x788c('0x9'));var deskjs=require(_0x788c('0xa'));var toCsv=require(_0x788c('0xb'));var querystring=require(_0x788c('0xc'));var Papa=require(_0x788c('0xd'));var Redis=require('ioredis');var authService=require(_0x788c('0xe'));var qs=require(_0x788c('0xf'));var as=require(_0x788c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x788c('0x11'))(_0x788c('0x12'));var utils=require(_0x788c('0x13'));var config=require(_0x788c('0x14'));var licenseUtil=require(_0x788c('0x15'));var db=require(_0x788c('0x16'))['db'];function respondWithStatusCode(_0x4bdf26,_0x1f899c){_0x1f899c=_0x1f899c||0xcc;return function(_0x579e54){if(_0x579e54){return _0x4bdf26[_0x788c('0x17')](_0x1f899c);}return _0x4bdf26['status'](_0x1f899c)[_0x788c('0x18')]();};}function respondWithResult(_0x42817b,_0x2eb90a){_0x2eb90a=_0x2eb90a||0xc8;return function(_0x22131a){if(_0x22131a){return _0x42817b[_0x788c('0x19')](_0x2eb90a)[_0x788c('0x1a')](_0x22131a);}};}function respondWithFilteredResult(_0x3d7971,_0x3d837d){return function(_0x2b6e32){if(_0x2b6e32){var _0x41d920=_0x2b6e32['count'],_0x67dc6c=_0x3d837d[_0x788c('0x1b')],_0xa118b5=_0x3d837d[_0x788c('0x1b')]+_0x3d837d[_0x788c('0x1c')],_0x2c57c3;if(_0xa118b5>=_0x41d920){_0xa118b5=_0x41d920;_0x2c57c3=0xc8;}else{_0x2c57c3=0xce;}_0x3d7971[_0x788c('0x19')](_0x2c57c3);return _0x3d7971[_0x788c('0x1d')](_0x788c('0x1e'),_0x67dc6c+'-'+_0xa118b5+'/'+_0x41d920)[_0x788c('0x1a')](_0x2b6e32);}return null;};}function patchUpdates(_0x360106){return function(_0x4726d6){try{jsonpatch[_0x788c('0x1f')](_0x4726d6,_0x360106,!![]);}catch(_0x4b003c){return BPromise[_0x788c('0x20')](_0x4b003c);}return _0x4726d6[_0x788c('0x21')]();};}function saveUpdates(_0x7ef5d5,_0x130eae){return function(_0xfa1344){if(_0xfa1344){return _0xfa1344[_0x788c('0x22')](_0x7ef5d5)[_0x788c('0x23')](function(_0x21be51){return _0x21be51;});}return null;};}function removeEntity(_0x5e93b5,_0x7b2ba0){return function(_0x2a4ef0){if(_0x2a4ef0){return _0x2a4ef0[_0x788c('0x24')]()[_0x788c('0x23')](function(){_0x5e93b5[_0x788c('0x19')](0xcc)[_0x788c('0x18')]();});}};}function handleEntityNotFound(_0x14deb4,_0x2a1235){return function(_0x5857f1){if(!_0x5857f1){_0x14deb4[_0x788c('0x17')](0x194);}return _0x5857f1;};}function handleError(_0x30ea17,_0x487ee2){_0x487ee2=_0x487ee2||0x1f4;return function(_0x14e2f1){logger[_0x788c('0x25')](_0x14e2f1[_0x788c('0x26')]);if(_0x14e2f1['name']){delete _0x14e2f1[_0x788c('0x27')];}_0x30ea17[_0x788c('0x19')](_0x487ee2)[_0x788c('0x28')](_0x14e2f1);};}exports[_0x788c('0x29')]=function(_0x200134,_0x2ea11c){var _0x271218={},_0x12fdbc={},_0x2dbf2d={'count':0x0,'rows':[]};var _0x4fa90a=_[_0x788c('0x2a')](db[_0x788c('0x2b')][_0x788c('0x2c')],function(_0x18b271){return{'name':_0x18b271[_0x788c('0x2d')],'type':_0x18b271[_0x788c('0x2e')][_0x788c('0x2f')]};});_0x12fdbc[_0x788c('0x30')]=_[_0x788c('0x2a')](_0x4fa90a,_0x788c('0x27'));_0x12fdbc['query']=_[_0x788c('0x31')](_0x200134['query']);_0x12fdbc[_0x788c('0x32')]=_[_0x788c('0x33')](_0x12fdbc[_0x788c('0x30')],_0x12fdbc[_0x788c('0x34')]);_0x12fdbc[_0x788c('0x32')]=_[_0x788c('0x35')](_0x12fdbc['filters'],[_0x788c('0x36'),'$or',_0x788c('0x37'),'$gte',_0x788c('0x38'),'$lte',_0x788c('0x39'),'$eq','$not',_0x788c('0x3a'),_0x788c('0x3b'),'$in',_0x788c('0x3c'),_0x788c('0x3d'),'$notLike',_0x788c('0x3e'),'$notILike','$like',_0x788c('0x3f'),_0x788c('0x40'),_0x788c('0x41'),'$any']);_0x271218['attributes']=_[_0x788c('0x33')](_0x12fdbc[_0x788c('0x30')],qs['fields'](_0x200134['query']['fields']));_0x271218[_0x788c('0x42')]=_0x271218['attributes'][_0x788c('0x43')]?_0x271218[_0x788c('0x42')]:_0x12fdbc[_0x788c('0x30')];if(!_0x200134[_0x788c('0x34')][_0x788c('0x44')](_0x788c('0x45'))){_0x271218['limit']=qs[_0x788c('0x1c')](_0x200134[_0x788c('0x34')][_0x788c('0x1c')]);_0x271218['offset']=qs['offset'](_0x200134[_0x788c('0x34')]['offset']);}_0x271218['order']=qs[_0x788c('0x46')](_0x200134[_0x788c('0x34')][_0x788c('0x46')]);_0x271218[_0x788c('0x47')]=qs[_0x788c('0x32')](_[_0x788c('0x48')](_0x200134[_0x788c('0x34')],_0x12fdbc['filters']),_0x4fa90a);if(_0x200134['query'][_0x788c('0x49')]){_0x271218[_0x788c('0x47')]=_['merge'](_0x271218[_0x788c('0x47')],{'$or':_[_0x788c('0x2a')](_0x4fa90a,function(_0x7e41e2){if(_0x7e41e2['type']!==_0x788c('0x4a')){var _0x1455bd={};_0x1455bd[_0x7e41e2[_0x788c('0x27')]]={'$like':'%'+_0x200134[_0x788c('0x34')][_0x788c('0x49')]+'%'};return _0x1455bd;}})});}_0x271218=_[_0x788c('0x4b')]({},_0x271218,_0x200134[_0x788c('0x4c')]);var _0x10585f={'where':_0x271218[_0x788c('0x47')]};return db[_0x788c('0x2b')][_0x788c('0x4d')](_0x10585f)[_0x788c('0x23')](function(_0x115873){_0x2dbf2d['count']=_0x115873;if(_0x200134[_0x788c('0x34')][_0x788c('0x4e')]){_0x271218[_0x788c('0x4f')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x271218);})[_0x788c('0x23')](function(_0x3d6500){_0x2dbf2d['rows']=_0x3d6500;return _0x2dbf2d;})[_0x788c('0x23')](respondWithFilteredResult(_0x2ea11c,_0x271218))[_0x788c('0x50')](handleError(_0x2ea11c,null));};exports[_0x788c('0x51')]=function(_0x139a68,_0x1a1961){var _0x5afe5f={'raw':!![],'where':{'id':_0x139a68[_0x788c('0x52')]['id']}},_0x4ed8ce={};_0x4ed8ce['model']=_[_0x788c('0x31')](db[_0x788c('0x2b')][_0x788c('0x2c')]);_0x4ed8ce[_0x788c('0x34')]=_['keys'](_0x139a68[_0x788c('0x34')]);_0x4ed8ce[_0x788c('0x32')]=_[_0x788c('0x33')](_0x4ed8ce['model'],_0x4ed8ce[_0x788c('0x34')]);_0x5afe5f[_0x788c('0x42')]=_[_0x788c('0x33')](_0x4ed8ce[_0x788c('0x30')],qs[_0x788c('0x53')](_0x139a68[_0x788c('0x34')][_0x788c('0x53')]));_0x5afe5f[_0x788c('0x42')]=_0x5afe5f['attributes']['length']?_0x5afe5f['attributes']:_0x4ed8ce['model'];if(_0x139a68['query'][_0x788c('0x4e')]){_0x5afe5f['include']=[{'all':!![]}];}_0x5afe5f=_[_0x788c('0x4b')]({},_0x5afe5f,_0x139a68[_0x788c('0x4c')]);return db[_0x788c('0x2b')][_0x788c('0x54')](_0x5afe5f)['then'](handleEntityNotFound(_0x1a1961,null))[_0x788c('0x23')](respondWithResult(_0x1a1961,null))[_0x788c('0x50')](handleError(_0x1a1961,null));};exports[_0x788c('0x55')]=function(_0x28cfb5,_0x36179d){return db[_0x788c('0x2b')][_0x788c('0x55')](_0x28cfb5[_0x788c('0x56')],{})[_0x788c('0x23')](respondWithResult(_0x36179d,0xc9))[_0x788c('0x50')](handleError(_0x36179d,null));};exports[_0x788c('0x22')]=function(_0x48e703,_0x5e82e3){if(_0x48e703[_0x788c('0x56')]['id']){delete _0x48e703[_0x788c('0x56')]['id'];}return db[_0x788c('0x2b')]['find']({'where':{'id':_0x48e703['params']['id']}})[_0x788c('0x23')](handleEntityNotFound(_0x5e82e3,null))[_0x788c('0x23')](saveUpdates(_0x48e703[_0x788c('0x56')],null))[_0x788c('0x23')](respondWithResult(_0x5e82e3,null))['catch'](handleError(_0x5e82e3,null));};exports['describe']=function(_0x4be956,_0x1bc851){return db[_0x788c('0x2b')][_0x788c('0x57')]()[_0x788c('0x23')](respondWithResult(_0x1bc851,null))[_0x788c('0x50')](handleError(_0x1bc851,null));};exports['destroy']=function(_0x134022,_0x1b63f5){var _0x17ed3e;return db[_0x788c('0x2b')][_0x788c('0x54')]({'where':{'id':_0x134022[_0x788c('0x52')]['id']}})[_0x788c('0x23')](handleEntityNotFound(_0x1b63f5,null))[_0x788c('0x23')](function(_0x206424){if(_0x206424){return _0x206424['destroy']()[_0x788c('0x23')](function(_0x214ab5){return _0x214ab5;});}})['then'](function(_0x149463){_0x17ed3e=_0x149463;if(_0x149463){if(_0x149463[_0x788c('0x58')]||_0x149463[_0x788c('0x59')]){return db[_0x149463['VoiceQueueId']?_0x788c('0x5a'):'Campaign'][_0x788c('0x54')]({'where':{'id':_0x149463[_0x788c('0x58')]?_0x149463[_0x788c('0x58')]:_0x149463[_0x788c('0x59')]},'attributes':['id',_0x788c('0x27')],'raw':!![]});}}})[_0x788c('0x23')](function(_0x323492){var _0x56288e={};if(_0x323492){_['merge'](_0x56288e,_[_0x788c('0x5b')](_0x17ed3e['dataValues'],[_0x788c('0x5c'),_0x788c('0x5d'),'id']));_0x56288e[_0x788c('0x5e')]=0x15;_0x56288e[_0x788c('0x5f')]=_0x788c('0x60');_0x56288e[_0x788c('0x61')]=_0x323492[_0x788c('0x27')];_0x56288e['membername']=_0x134022[_0x788c('0x62')][_0x788c('0x27')];_0x56288e['UserId']=_0x134022['user']['id'];_0x56288e[_0x788c('0x60')]=!![];_0x56288e[_0x788c('0x63')]=moment()[_0x788c('0x64')]('YYYY-MM-DD\x20HH:mm:ss');_0x56288e[_0x788c('0x65')]=_0x17ed3e[_0x788c('0x66')];_0x56288e['campaigntype']=_0x17ed3e[_0x788c('0x58')]?_0x788c('0x67'):_0x788c('0x68');return db[_0x788c('0x69')]['find']({'where':{'id':_0x56288e['ContactId']},'attributes':[_0x788c('0x6a'),_0x788c('0x6b')]})[_0x788c('0x23')](function(_0x1b49b2){if(!_['isNil'](_0x1b63f5)&&!_[_0x788c('0x6c')](_0x1b49b2[_0x788c('0x6a')])){_0x56288e[_0x788c('0x6d')]=_0x1b49b2[_0x788c('0x6a')];if(!_[_0x788c('0x6c')](_0x1b49b2[_0x788c('0x6b')])){_0x56288e[_0x788c('0x6d')]+='\x20'+_0x1b49b2[_0x788c('0x6b')];}}})[_0x788c('0x6e')](function(){return db['CmHopperFinal']['create'](_0x56288e);});}})[_0x788c('0x23')](function(){return _0x1b63f5[_0x788c('0x19')](0xcc)[_0x788c('0x18')]();})[_0x788c('0x50')](handleError(_0x1b63f5,null));};exports[_0x788c('0x6f')]=function(_0x5eef0a,_0x2ba609,_0x3db0b6){var _0x5308ec=[];return db['CmContact']['describe']()['then'](function(_0x36a31a){_0x5308ec=_['keys'](_0x36a31a);return _0x5eef0a[_0x788c('0x62')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0x788c('0x70')],'raw':!![]});})[_0x788c('0x23')](function(_0x1d62e7){if(_0x1d62e7&&_0x1d62e7[_0x788c('0x43')]){return db['sequelize'][_0x788c('0x71')](function(_0x3a3b01){var _0x18461f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x788c('0x72'))},'VoiceQueueId':{'$in':_[_0x788c('0x2a')](_0x1d62e7,'id')},'$or':[{'UserId':null},{'UserId':_0x5eef0a[_0x788c('0x62')]['id']}]};var _0x4a4347=[];if(_0x5eef0a[_0x788c('0x56')][_0x788c('0x73')]&&_0x5eef0a[_0x788c('0x56')]['direction']===_0x788c('0x74')){if(!_[_0x788c('0x75')](_0x5eef0a[_0x788c('0x56')]['hopperIds'])){_0x18461f['id']={'$in':_0x5eef0a[_0x788c('0x56')][_0x788c('0x76')]};}_0x4a4347=[[_0x788c('0x77'),_0x788c('0x78')],['scheduledAt',_0x1d62e7[0x0][_0x788c('0x70')]===_0x788c('0x78')?_0x788c('0x79'):'ASC'],db[_0x788c('0x7a')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0x788c('0x79')]];}else{if(!_[_0x788c('0x75')](_0x5eef0a['body'][_0x788c('0x76')])){_0x18461f['id']={'$notIn':_0x5eef0a[_0x788c('0x56')][_0x788c('0x76')]};}_0x4a4347=[['priority',_0x788c('0x79')],[_0x788c('0x7b'),_0x1d62e7[0x0]['dialOrderByScheduledAt']],db[_0x788c('0x7a')][_0x788c('0x7c')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x788c('0x78')]];}return db[_0x788c('0x2b')]['findOne']({'attributes':['id',_0x788c('0x7d')],'where':_0x18461f,'order':_0x4a4347,'transaction':_0x3a3b01,'lock':_0x3a3b01[_0x788c('0x7e')][_0x788c('0x7f')],'include':[{'model':db[_0x788c('0x69')],'as':_0x788c('0x80'),'attributes':_0x5308ec,'include':[{'model':db[_0x788c('0x81')],'as':_0x788c('0x82'),'attributes':['id',_0x788c('0x27')]}]},{'model':db[_0x788c('0x83')],'as':'List','attributes':['id','name']},{'model':db[_0x788c('0x5a')],'as':_0x788c('0x84'),'attributes':['id','name',_0x788c('0x85')]}]})[_0x788c('0x23')](function(_0x73cac9){if(_0x73cac9){return _0x73cac9['update']({'UserId':_0x5eef0a[_0x788c('0x62')]['id']},{'transaction':_0x3a3b01});}});});}})[_0x788c('0x23')](handleEntityNotFound(_0x2ba609,null))[_0x788c('0x23')](respondWithResult(_0x2ba609,null))[_0x788c('0x50')](handleError(_0x2ba609,null));};exports[_0x788c('0x86')]=function(_0x190c79,_0x3685cb,_0x38809e){return _0x190c79['user'][_0x788c('0x87')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x788c('0x88')},'attributes':['id'],'raw':!![]})[_0x788c('0x23')](function(_0x4e286a){if(_0x4e286a&&_0x4e286a[_0x788c('0x43')]){return db['CmHopper'][_0x788c('0x4d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x788c('0x64')](_0x788c('0x72'))},'VoiceQueueId':{'$in':_[_0x788c('0x2a')](_0x4e286a,'id')},'$or':[{'UserId':null},{'UserId':_0x190c79[_0x788c('0x62')]['id']}]}});}return 0x0;})[_0x788c('0x23')](function(_0x43e74a){if(!_[_0x788c('0x6c')](_0x43e74a)&&_[_0x788c('0x89')](_0x43e74a)){return _0x3685cb['status'](0xc8)['json']({'contacts':_0x43e74a});}else{logger['error']('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x788c('0x8a'));_0x3685cb[_0x788c('0x17')](0x194);}})[_0x788c('0x50')](handleError(_0x3685cb,null));};