Built motion from commit (unavailable).|2.5.9
[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 _0x3149=['$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$contains','$contained','$any','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','CmHopper','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','updatedAt','state','statedesc','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','queue','ivr','CmContact','ContactId','firstName','isNil','lastName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','preview','dialOrderByScheduledAt','transaction','direction','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','scheduledat','LOCK','Contact','Queue','dialActive','getOpenContacts','outbound','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','html-pdf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','count','offset','set','json','apply','reject','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','filters','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq'];(function(_0x130f3a,_0x433b89){var _0x21feb5=function(_0x3813d0){while(--_0x3813d0){_0x130f3a['push'](_0x130f3a['shift']());}};_0x21feb5(++_0x433b89);}(_0x3149,0x181));var _0x9314=function(_0x58b983,_0x426a5c){_0x58b983=_0x58b983-0x0;var _0x83da04=_0x3149[_0x58b983];return _0x83da04;};'use strict';var pdf=require(_0x9314('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x9314('0x1'));var zipdir=require(_0x9314('0x2'));var jsonpatch=require(_0x9314('0x3'));var rp=require(_0x9314('0x4'));var moment=require('moment');var BPromise=require(_0x9314('0x5'));var Mustache=require(_0x9314('0x6'));var util=require(_0x9314('0x7'));var path=require(_0x9314('0x8'));var sox=require(_0x9314('0x9'));var csv=require('to-csv');var ejs=require(_0x9314('0xa'));var fs=require('fs');var _=require(_0x9314('0xb'));var squel=require(_0x9314('0xc'));var crypto=require(_0x9314('0xd'));var jsforce=require(_0x9314('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9314('0xf'));var querystring=require('querystring');var Papa=require(_0x9314('0x10'));var Redis=require('ioredis');var authService=require(_0x9314('0x11'));var qs=require(_0x9314('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9314('0x13'));var logger=require('../../config/logger')(_0x9314('0x14'));var utils=require(_0x9314('0x15'));var config=require(_0x9314('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x9314('0x17'))['db'];function respondWithStatusCode(_0x23fa9b,_0x4363a0){_0x4363a0=_0x4363a0||0xcc;return function(_0x172b9a){if(_0x172b9a){return _0x23fa9b[_0x9314('0x18')](_0x4363a0);}return _0x23fa9b[_0x9314('0x19')](_0x4363a0)[_0x9314('0x1a')]();};}function respondWithResult(_0x577d5e,_0x227027){_0x227027=_0x227027||0xc8;return function(_0x397f13){if(_0x397f13){return _0x577d5e[_0x9314('0x19')](_0x227027)['json'](_0x397f13);}};}function respondWithFilteredResult(_0x3bdd1b,_0x2728db){return function(_0x3cc9bf){if(_0x3cc9bf){var _0x5c3ad0=_0x3cc9bf[_0x9314('0x1b')],_0x1fec52=_0x2728db[_0x9314('0x1c')],_0x2d8bf3=_0x2728db[_0x9314('0x1c')]+_0x2728db['limit'],_0x5b7e6a;if(_0x2d8bf3>=_0x5c3ad0){_0x2d8bf3=_0x5c3ad0;_0x5b7e6a=0xc8;}else{_0x5b7e6a=0xce;}_0x3bdd1b['status'](_0x5b7e6a);return _0x3bdd1b[_0x9314('0x1d')]('Content-Range',_0x1fec52+'-'+_0x2d8bf3+'/'+_0x5c3ad0)[_0x9314('0x1e')](_0x3cc9bf);}return null;};}function patchUpdates(_0x19129e){return function(_0x16b36f){try{jsonpatch[_0x9314('0x1f')](_0x16b36f,_0x19129e,!![]);}catch(_0x262aab){return BPromise[_0x9314('0x20')](_0x262aab);}return _0x16b36f['save']();};}function saveUpdates(_0x1046ae,_0x3250ae){return function(_0x125b0a){if(_0x125b0a){return _0x125b0a['update'](_0x1046ae)[_0x9314('0x21')](function(_0x81376){return _0x81376;});}return null;};}function removeEntity(_0x345dda,_0x1dfba0){return function(_0x5881e6){if(_0x5881e6){return _0x5881e6[_0x9314('0x22')]()[_0x9314('0x21')](function(){_0x345dda[_0x9314('0x19')](0xcc)[_0x9314('0x1a')]();});}};}function handleEntityNotFound(_0x535e05,_0x2b5047){return function(_0x36a05f){if(!_0x36a05f){_0x535e05[_0x9314('0x18')](0x194);}return _0x36a05f;};}function handleError(_0x4cb57d,_0x4be653){_0x4be653=_0x4be653||0x1f4;return function(_0x430144){logger[_0x9314('0x23')](_0x430144[_0x9314('0x24')]);if(_0x430144[_0x9314('0x25')]){delete _0x430144[_0x9314('0x25')];}_0x4cb57d['status'](_0x4be653)['send'](_0x430144);};}exports[_0x9314('0x26')]=function(_0x460a46,_0x4d3521){var _0xe0b898={},_0x178783={},_0x1848db={'count':0x0,'rows':[]};var _0x2a511f=_[_0x9314('0x27')](db['CmHopper'][_0x9314('0x28')],function(_0x282929){return{'name':_0x282929[_0x9314('0x29')],'type':_0x282929['type'][_0x9314('0x2a')]};});_0x178783[_0x9314('0x2b')]=_[_0x9314('0x27')](_0x2a511f,_0x9314('0x25'));_0x178783[_0x9314('0x2c')]=_[_0x9314('0x2d')](_0x460a46['query']);_0x178783['filters']=_[_0x9314('0x2e')](_0x178783[_0x9314('0x2b')],_0x178783['query']);_0x178783[_0x9314('0x2f')]=_['concat'](_0x178783[_0x9314('0x2f')],[_0x9314('0x30'),_0x9314('0x31'),_0x9314('0x32'),_0x9314('0x33'),_0x9314('0x34'),_0x9314('0x35'),_0x9314('0x36'),_0x9314('0x37'),_0x9314('0x38'),'$between',_0x9314('0x39'),_0x9314('0x3a'),_0x9314('0x3b'),_0x9314('0x3c'),_0x9314('0x3d'),_0x9314('0x3e'),_0x9314('0x3f'),_0x9314('0x3c'),'$overlap',_0x9314('0x40'),_0x9314('0x41'),_0x9314('0x42')]);_0xe0b898[_0x9314('0x43')]=_[_0x9314('0x2e')](_0x178783['model'],qs[_0x9314('0x44')](_0x460a46[_0x9314('0x2c')]['fields']));_0xe0b898[_0x9314('0x43')]=_0xe0b898[_0x9314('0x43')][_0x9314('0x45')]?_0xe0b898['attributes']:_0x178783[_0x9314('0x2b')];if(!_0x460a46[_0x9314('0x2c')][_0x9314('0x46')](_0x9314('0x47'))){_0xe0b898[_0x9314('0x48')]=qs[_0x9314('0x48')](_0x460a46[_0x9314('0x2c')][_0x9314('0x48')]);_0xe0b898['offset']=qs[_0x9314('0x1c')](_0x460a46[_0x9314('0x2c')][_0x9314('0x1c')]);}_0xe0b898[_0x9314('0x49')]=qs[_0x9314('0x4a')](_0x460a46[_0x9314('0x2c')][_0x9314('0x4a')]);_0xe0b898[_0x9314('0x4b')]=qs[_0x9314('0x2f')](_[_0x9314('0x4c')](_0x460a46[_0x9314('0x2c')],_0x178783[_0x9314('0x2f')]),_0x2a511f);if(_0x460a46[_0x9314('0x2c')][_0x9314('0x4d')]){_0xe0b898[_0x9314('0x4b')]=_[_0x9314('0x4e')](_0xe0b898[_0x9314('0x4b')],{'$or':_[_0x9314('0x27')](_0x2a511f,function(_0x5c7ac5){if(_0x5c7ac5[_0x9314('0x4f')]!=='VIRTUAL'){var _0x598807={};_0x598807[_0x5c7ac5[_0x9314('0x25')]]={'$like':'%'+_0x460a46[_0x9314('0x2c')][_0x9314('0x4d')]+'%'};return _0x598807;}})});}_0xe0b898=_[_0x9314('0x4e')]({},_0xe0b898,_0x460a46['options']);var _0x4d38ff={'where':_0xe0b898[_0x9314('0x4b')]};return db[_0x9314('0x50')][_0x9314('0x1b')](_0x4d38ff)[_0x9314('0x21')](function(_0x157165){_0x1848db[_0x9314('0x1b')]=_0x157165;if(_0x460a46[_0x9314('0x2c')][_0x9314('0x51')]){_0xe0b898[_0x9314('0x52')]=[{'all':!![]}];}return db[_0x9314('0x50')][_0x9314('0x53')](_0xe0b898);})[_0x9314('0x21')](function(_0xd1d8ea){_0x1848db[_0x9314('0x54')]=_0xd1d8ea;return _0x1848db;})[_0x9314('0x21')](respondWithFilteredResult(_0x4d3521,_0xe0b898))[_0x9314('0x55')](handleError(_0x4d3521,null));};exports[_0x9314('0x56')]=function(_0x462181,_0xab2b96){var _0x55b45d={'raw':!![],'where':{'id':_0x462181[_0x9314('0x57')]['id']}},_0x373afe={};_0x373afe['model']=_['keys'](db['CmHopper'][_0x9314('0x28')]);_0x373afe['query']=_[_0x9314('0x2d')](_0x462181['query']);_0x373afe[_0x9314('0x2f')]=_[_0x9314('0x2e')](_0x373afe[_0x9314('0x2b')],_0x373afe[_0x9314('0x2c')]);_0x55b45d['attributes']=_['intersection'](_0x373afe[_0x9314('0x2b')],qs[_0x9314('0x44')](_0x462181[_0x9314('0x2c')][_0x9314('0x44')]));_0x55b45d[_0x9314('0x43')]=_0x55b45d['attributes'][_0x9314('0x45')]?_0x55b45d[_0x9314('0x43')]:_0x373afe[_0x9314('0x2b')];if(_0x462181['query'][_0x9314('0x51')]){_0x55b45d[_0x9314('0x52')]=[{'all':!![]}];}_0x55b45d=_['merge']({},_0x55b45d,_0x462181['options']);return db[_0x9314('0x50')][_0x9314('0x58')](_0x55b45d)[_0x9314('0x21')](handleEntityNotFound(_0xab2b96,null))[_0x9314('0x21')](respondWithResult(_0xab2b96,null))['catch'](handleError(_0xab2b96,null));};exports[_0x9314('0x59')]=function(_0xaecb2f,_0x2d8625){return db[_0x9314('0x50')][_0x9314('0x59')](_0xaecb2f[_0x9314('0x5a')],{})[_0x9314('0x21')](respondWithResult(_0x2d8625,0xc9))[_0x9314('0x55')](handleError(_0x2d8625,null));};exports[_0x9314('0x5b')]=function(_0x34d163,_0x107695){if(_0x34d163['body']['id']){delete _0x34d163['body']['id'];}return db[_0x9314('0x50')][_0x9314('0x58')]({'where':{'id':_0x34d163[_0x9314('0x57')]['id']}})['then'](handleEntityNotFound(_0x107695,null))['then'](saveUpdates(_0x34d163[_0x9314('0x5a')],null))[_0x9314('0x21')](respondWithResult(_0x107695,null))[_0x9314('0x55')](handleError(_0x107695,null));};exports[_0x9314('0x5c')]=function(_0x51962a,_0x27db31){return db[_0x9314('0x50')][_0x9314('0x5c')]()[_0x9314('0x21')](respondWithResult(_0x27db31,null))['catch'](handleError(_0x27db31,null));};exports[_0x9314('0x22')]=function(_0xce47b3,_0x3c1449){var _0x39c465;return db[_0x9314('0x50')][_0x9314('0x58')]({'where':{'id':_0xce47b3[_0x9314('0x57')]['id']}})['then'](handleEntityNotFound(_0x3c1449,null))['then'](function(_0x53e421){if(_0x53e421){return _0x53e421[_0x9314('0x22')]()[_0x9314('0x21')](function(_0xfd129f){return _0xfd129f;});}})[_0x9314('0x21')](function(_0x527c7c){_0x39c465=_0x527c7c;if(_0x527c7c){if(_0x527c7c[_0x9314('0x5d')]||_0x527c7c['CampaignId']){return db[_0x527c7c['VoiceQueueId']?_0x9314('0x5e'):_0x9314('0x5f')][_0x9314('0x58')]({'where':{'id':_0x527c7c['VoiceQueueId']?_0x527c7c['VoiceQueueId']:_0x527c7c[_0x9314('0x60')]},'attributes':['id',_0x9314('0x25')],'raw':!![]});}}})['then'](function(_0x127ec5){var _0x8de5fe={};if(_0x127ec5){_[_0x9314('0x4e')](_0x8de5fe,_[_0x9314('0x61')](_0x39c465[_0x9314('0x62')],[_0x9314('0x63'),_0x9314('0x64'),'id']));_0x8de5fe[_0x9314('0x65')]=0x15;_0x8de5fe[_0x9314('0x66')]='deleted';_0x8de5fe['campaign']=_0x127ec5['name'];_0x8de5fe[_0x9314('0x67')]=_0xce47b3[_0x9314('0x68')][_0x9314('0x25')];_0x8de5fe[_0x9314('0x69')]=_0xce47b3[_0x9314('0x68')]['id'];_0x8de5fe['deleted']=!![];_0x8de5fe[_0x9314('0x6a')]=moment()[_0x9314('0x6b')](_0x9314('0x6c'));_0x8de5fe[_0x9314('0x6d')]=_0x39c465[_0x9314('0x6e')];_0x8de5fe['campaigntype']=_0x39c465[_0x9314('0x5d')]?_0x9314('0x6f'):_0x9314('0x70');return db[_0x9314('0x71')][_0x9314('0x58')]({'where':{'id':_0x8de5fe[_0x9314('0x72')]},'attributes':[_0x9314('0x73'),'lastName']})[_0x9314('0x21')](function(_0x14e3a9){if(!_[_0x9314('0x74')](_0x3c1449)&&!_[_0x9314('0x74')](_0x14e3a9[_0x9314('0x73')])){_0x8de5fe['calleridname']=_0x14e3a9['firstName'];if(!_[_0x9314('0x74')](_0x14e3a9[_0x9314('0x75')])){_0x8de5fe[_0x9314('0x76')]+='\x20'+_0x14e3a9['lastName'];}}})[_0x9314('0x77')](function(){return db[_0x9314('0x78')][_0x9314('0x59')](_0x8de5fe);});}})['then'](function(){return _0x3c1449[_0x9314('0x19')](0xcc)[_0x9314('0x1a')]();})[_0x9314('0x55')](handleError(_0x3c1449,null));};exports[_0x9314('0x79')]=function(_0x3e3ebd,_0x215a37,_0x53982f){var _0x39db19=[];return db[_0x9314('0x71')][_0x9314('0x5c')]()['then'](function(_0x3abcdb){_0x39db19=_[_0x9314('0x2d')](_0x3abcdb);return _0x3e3ebd['user'][_0x9314('0x7a')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x9314('0x7b')},'attributes':['id',_0x9314('0x7c')],'raw':!![]});})['then'](function(_0x118eff){if(_0x118eff&&_0x118eff['length']){return db['sequelize'][_0x9314('0x7d')](function(_0x53324f){var _0x5d9c96={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x9314('0x6c'))},'VoiceQueueId':{'$in':_[_0x9314('0x27')](_0x118eff,'id')},'$or':[{'UserId':null},{'UserId':_0x3e3ebd[_0x9314('0x68')]['id']}]};var _0x3b2a19=[];if(_0x3e3ebd[_0x9314('0x5a')][_0x9314('0x7e')]&&_0x3e3ebd[_0x9314('0x5a')]['direction']===_0x9314('0x7f')){if(!_[_0x9314('0x80')](_0x3e3ebd[_0x9314('0x5a')]['hopperIds'])){_0x5d9c96['id']={'$in':_0x3e3ebd['body'][_0x9314('0x81')]};}_0x3b2a19=[[_0x9314('0x82'),_0x9314('0x83')],[_0x9314('0x84'),_0x118eff[0x0][_0x9314('0x7c')]===_0x9314('0x83')?_0x9314('0x85'):_0x9314('0x83')],db['sequelize'][_0x9314('0x86')](_0x9314('0x87')),['id',_0x9314('0x85')]];}else{if(!_[_0x9314('0x80')](_0x3e3ebd[_0x9314('0x5a')]['hopperIds'])){_0x5d9c96['id']={'$notIn':_0x3e3ebd[_0x9314('0x5a')][_0x9314('0x81')]};}_0x3b2a19=[['priority',_0x9314('0x85')],[_0x9314('0x84'),_0x118eff[0x0][_0x9314('0x7c')]],db['sequelize']['literal'](_0x9314('0x88')),['id',_0x9314('0x83')]];}return db[_0x9314('0x50')]['findOne']({'attributes':['id',_0x9314('0x89')],'where':_0x5d9c96,'order':_0x3b2a19,'transaction':_0x53324f,'lock':_0x53324f[_0x9314('0x8a')]['UPDATE'],'include':[{'model':db[_0x9314('0x71')],'as':_0x9314('0x8b'),'attributes':_0x39db19,'include':[{'model':db['CmCompany'],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id',_0x9314('0x25')]},{'model':db['VoiceQueue'],'as':_0x9314('0x8c'),'attributes':['id',_0x9314('0x25'),_0x9314('0x8d')]}]})[_0x9314('0x21')](function(_0x465aaf){if(_0x465aaf){return _0x465aaf[_0x9314('0x5b')]({'UserId':_0x3e3ebd[_0x9314('0x68')]['id']},{'transaction':_0x53324f});}});});}})[_0x9314('0x21')](handleEntityNotFound(_0x215a37,null))['then'](respondWithResult(_0x215a37,null))[_0x9314('0x55')](handleError(_0x215a37,null));};exports[_0x9314('0x8e')]=function(_0x4a622d,_0x533299,_0x5eca01){return _0x4a622d[_0x9314('0x68')]['getVoiceQueues']({'where':{'type':_0x9314('0x8f'),'dialActive':!![],'dialMethod':_0x9314('0x7b')},'attributes':['id'],'raw':!![]})[_0x9314('0x21')](function(_0x2f72b9){if(_0x2f72b9&&_0x2f72b9[_0x9314('0x45')]){return db[_0x9314('0x50')][_0x9314('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x9314('0x6c'))},'VoiceQueueId':{'$in':_[_0x9314('0x27')](_0x2f72b9,'id')},'$or':[{'UserId':null},{'UserId':_0x4a622d[_0x9314('0x68')]['id']}]}});}return 0x0;})['then'](function(_0x5b71a9){if(!_['isNil'](_0x5b71a9)&&_[_0x9314('0x90')](_0x5b71a9)){return _0x533299[_0x9314('0x19')](0xc8)[_0x9314('0x1e')]({'contacts':_0x5b71a9});}else{logger[_0x9314('0x23')](_0x9314('0x91'),_0x9314('0x8e'),0x194,_0x9314('0x92'));_0x533299['sendStatus'](0x194);}})['catch'](handleError(_0x533299,null));};