Built motion from commit 3c2ce842.|2.6.31
[motion2.git] / server / config / schedule / index.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 _0x3421=['subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','intersection','length','exists','deleteJob','delete\x20cron','toRun','run\x20job','cron','active','startAt','add','add\x20cron','stop\x20cron','isBetween','endAt','update','update\x20cron','run','start','util','path','moment','cron-job-manager','bluebird','../../mysqldb','retry','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','AnalyticExtractedReport','findOne','then','catch','info','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','join','../../files/reports','savename','basename','zip','existsSync','status','message','attachments','stringify','Sent','Empty','text','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','Loading','Report\x20still\x20running\x20after\x20timeout.\x0aYou\x20can\x20find\x20the\x20report\x20when\x20it\x20will\x20be\x20completed\x20in\x20Analytics\x20->\x20Extracted\x20Reports.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','Completed','Report\x20file\x20creation\x20still\x20running\x20after\x20timeout.\x0aYou\x20can\x20find\x20the\x20report\x20when\x20it\x20will\x20be\x20completed\x20in\x20Analytics\x20->\x20Extracted\x20Reports.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','Failed','Report\x20extraction\x20procedure\x20has\x20run\x20into\x20an\x20unexpected\x20error.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','error','[handleSendEmail]\x20Unrecognized\x20status:','request','SendMail','error\x20mail','email\x20sent','case\x20loading','currentAttempt','retryOptions','retries','job','operation','stop','still\x20loading','case\x20completed','case\x20empty','data','case\x20failed','Unrecognized\x20status:','entity','dataValues','attempt','Job\x20ID\x20','\x20Attempt\x20#:','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit'];(function(_0x22b68a,_0x2bffc3){var _0x1ac67a=function(_0x25f9d5){while(--_0x25f9d5){_0x22b68a['push'](_0x22b68a['shift']());}};_0x1ac67a(++_0x2bffc3);}(_0x3421,0x100));var _0x1342=function(_0x2ce098,_0x228fa8){_0x2ce098=_0x2ce098-0x0;var _0x54ad56=_0x3421[_0x2ce098];return _0x54ad56;};'use strict';var fs=require('fs');var util=require(_0x1342('0x0'));var path=require(_0x1342('0x1'));var _=require('lodash');var moment=require(_0x1342('0x2'));var CronJobManager=require(_0x1342('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0x1342('0x4'));var logger=require('../logger')('schedule');var db=require(_0x1342('0x5'))['db'];const retry=require(_0x1342('0x6'));var analyticCustomReportController=require(_0x1342('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x1342('0x8')][_0x1342('0x9')]({'port':0x232b});var manager=new CronJobManager();function getReportData(_0x80eb2b){const _0x42f890={};if(typeof _0x80eb2b==='number'){_0x42f890['id']=_0x80eb2b;}return db[_0x1342('0xa')][_0x1342('0xb')]({'where':_0x42f890})[_0x1342('0xc')](function(_0x22b3e8){return _0x22b3e8;})[_0x1342('0xd')](function(_0x18d728){logger['error'](_0x18d728);});}function handleSendEmail(_0x590ff3,_0x12a0d3){logger[_0x1342('0xe')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x590ff3[_0x1342('0xf')]);var _0x5aa9de=!![];var _0x48b103=_0x590ff3[_0x1342('0x10')][_0x1342('0x11')]();var _0x54751e={'account':_0x48b103,'message':{'from':util[_0x1342('0x12')](_0x1342('0x13'),_0x590ff3[_0x1342('0x10')]['name'],_0x590ff3['MailAccount']['email']||_0x590ff3[_0x1342('0x10')][_0x1342('0x14')][_0x1342('0x15')]),'to':_0x590ff3[_0x1342('0xf')],'cc':_0x590ff3['cc'],'bcc':_0x590ff3[_0x1342('0x16')],'subject':util[_0x1342('0x12')](_0x1342('0x17'),_0x12a0d3[_0x1342('0x18')],_0x590ff3[_0x1342('0x19')],_0x590ff3['subtractUnit'])}};var _0x32eb19=path[_0x1342('0x1a')](__dirname,_0x1342('0x1b'));var _0x4cb7f7=_0x12a0d3[_0x1342('0x1c')];var _0x26170d=util['format']('%s.%s',path[_0x1342('0x1d')](_0x12a0d3['savename'],path['extname'](_0x12a0d3['savename'])),_0x1342('0x1e'));var _0x12b980=path[_0x1342('0x1a')](_0x32eb19,_0x4cb7f7);var _0x4a819d=path[_0x1342('0x1a')](_0x32eb19,_0x26170d);if(fs[_0x1342('0x1f')](_0x12b980)){_0x12a0d3[_0x1342('0x20')]='Sent';_0x54751e[_0x1342('0x21')][_0x1342('0x22')]=[{'filename':_0x4cb7f7,'path':_0x12b980}];_0x54751e[_0x1342('0x21')]['text']=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x1342('0x23')](_0x12a0d3,null,0x2));}else if(fs['existsSync'](_0x4a819d)){_0x12a0d3[_0x1342('0x20')]=_0x1342('0x24');_0x54751e['message'][_0x1342('0x22')]=[{'filename':_0x26170d,'path':_0x4a819d}];}else{if(_0x12a0d3[_0x1342('0x20')]===_0x1342('0x25')){_0x54751e['message'][_0x1342('0x26')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x590ff3[_0x1342('0x27')]){_0x5aa9de=![];logger['info'](_0x1342('0x28'));}}else if(_0x12a0d3['status']===_0x1342('0x29')){_0x54751e[_0x1342('0x21')][_0x1342('0x26')]=_0x1342('0x2a');}else if(_0x12a0d3['status']===_0x1342('0x2b')){_0x54751e[_0x1342('0x21')][_0x1342('0x26')]=_0x1342('0x2c');}else if(_0x12a0d3['status']===_0x1342('0x2d')){_0x54751e[_0x1342('0x21')][_0x1342('0x26')]=_0x1342('0x2e');}else{logger[_0x1342('0x2f')](_0x1342('0x30'),_0x12a0d3[_0x1342('0x20')]);}}if(_0x5aa9de){return client[_0x1342('0x31')](_0x1342('0x32'),_0x54751e)[_0x1342('0xc')](function(_0x4ab223){if(_0x4ab223[_0x1342('0x2f')]){return logger[_0x1342('0x2f')](_0x1342('0x33'),JSON[_0x1342('0x23')](_0x4ab223));}return logger['info'](_0x1342('0x34'));})['catch'](function(_0x44477a){return logger['error']('error\x20mail',JSON[_0x1342('0x23')](_0x44477a));});}}function handleError(){return function(_0x231cf8){return logger['error'](JSON[_0x1342('0x23')](_0x231cf8));};}function loading(_0x1558b7){logger[_0x1342('0xe')](_0x1342('0x35'));if(_0x1558b7[_0x1342('0x36')]===_0x1558b7[_0x1342('0x37')][_0x1342('0x38')]){handleSendEmail(_0x1558b7[_0x1342('0x39')],_0x1558b7['data']);_0x1558b7[_0x1342('0x3a')][_0x1342('0x3b')]();}else{_0x1558b7[_0x1342('0x3a')][_0x1342('0x6')](_0x1342('0x3c'));}}function completed(_0x94be){logger[_0x1342('0xe')](_0x1342('0x3d'));handleSendEmail(_0x94be['job'],_0x94be['data']);_0x94be[_0x1342('0x3a')][_0x1342('0x3b')]();}function empty(_0x344055){logger[_0x1342('0xe')](_0x1342('0x3e'));handleSendEmail(_0x344055[_0x1342('0x39')],_0x344055[_0x1342('0x3f')]);_0x344055[_0x1342('0x3a')][_0x1342('0x3b')]();}function failed(_0x44566f){logger[_0x1342('0xe')](_0x1342('0x40'));handleSendEmail(_0x44566f[_0x1342('0x39')],_0x44566f['data']);_0x44566f[_0x1342('0x3a')]['stop']();}function urecognized(_0x4e6bc3){logger[_0x1342('0x2f')](_0x1342('0x41'),_0x4e6bc3[_0x1342('0x42')][_0x1342('0x43')][_0x1342('0x20')]);_0x4e6bc3['operation'][_0x1342('0x3b')]();}const reportStatusStrategies={'Loading':loading,'Completed':completed,'Empty':empty,'Failed':failed,'Unrecognized':urecognized};function retryer(_0x3e16d7,_0xc8a9ce){const _0x299f43={'retries':0x3,'factor':0x2,'minTimeout':0x5b*0x3e8,'maxTimeout':0xa*0x3c*0x3e8};const _0xcb0d0d=retry[_0x1342('0x3a')](_0x299f43);_0xcb0d0d[_0x1342('0x44')](_0x33b036=>{logger[_0x1342('0xe')](_0x1342('0x45')+_0x3e16d7['id']+_0x1342('0x46')+_0x33b036);try{getReportData(_0xc8a9ce['id'])[_0x1342('0xc')](function(_0x22d121){_0xc8a9ce=_0x22d121;logger[_0x1342('0xe')]('report\x20status:',_0x22d121[_0x1342('0x43')]['status']);if(!reportStatusStrategies[_0x22d121[_0x1342('0x43')]['status']]){logger[_0x1342('0x2f')]('report\x20status:',_0x22d121['dataValues'][_0x1342('0x20')]);_0xcb0d0d[_0x1342('0x6')]();}reportStatusStrategies[_0x22d121[_0x1342('0x43')]['status']]({'operation':_0xcb0d0d,'currentAttempt':_0x33b036,'retryOptions':_0x299f43,'job':_0x3e16d7,'data':_0xc8a9ce,'entity':_0x22d121});});}catch(_0x15adf1){_0xcb0d0d[_0x1342('0x6')](_0x15adf1);}});}function handleResult(_0x5ba94e){return function(_0x602cd){if(_0x5ba94e['sendMail']&&_0x5ba94e[_0x1342('0x10')]&&_0x5ba94e[_0x1342('0x10')][_0x1342('0x14')]&&!_[_0x1342('0x47')](_0x5ba94e['email'])){retryer(_0x5ba94e,_0x602cd);}};}function handleJob(_0x34a1a1){return function(){try{if(_[_0x1342('0x47')](_0x34a1a1[_0x1342('0x19')])){return logger[_0x1342('0xe')](_0x1342('0x48'));}if(_[_0x1342('0x47')](_0x34a1a1[_0x1342('0x49')])){return logger[_0x1342('0xe')](_0x1342('0x4a'));}var _0x13114a={'startDate':moment()[_0x1342('0x4b')](_0x34a1a1[_0x1342('0x19')],_0x34a1a1[_0x1342('0x49')])[_0x1342('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x1342('0x12')](_0x1342('0x4c')),'type':'scheduled','output':_0x34a1a1['output'],'name':_0x34a1a1[_0x1342('0x18')]};if(!_[_0x1342('0x47')](_0x34a1a1[_0x1342('0x4d')])){logger[_0x1342('0xe')](_0x1342('0x4e'),_0x34a1a1[_0x1342('0x4d')]);return analyticDefaultReportController[_0x1342('0x4f')]({'id':_0x34a1a1['DefaultReportId']},_0x13114a)[_0x1342('0xc')](handleResult(_0x34a1a1))['catch'](handleError());}if(!_[_0x1342('0x47')](_0x34a1a1['CustomReportId'])){logger['info'](_0x1342('0x50'),_0x34a1a1[_0x1342('0x51')]);return analyticCustomReportController[_0x1342('0x4f')]({'id':_0x34a1a1['CustomReportId']},_0x13114a)[_0x1342('0xc')](handleResult(_0x34a1a1))[_0x1342('0xd')](handleError());}}catch(_0xe8c31e){logger[_0x1342('0x2f')](JSON[_0x1342('0x23')](_0xe8c31e));}return logger[_0x1342('0xe')]('no\x20report\x20id');};}function getJobs(_0x27552b){var _0x4b017c={};if(_0x27552b){_0x4b017c['id']=_0x27552b;}return db[_0x1342('0x52')][_0x1342('0x53')]({'where':_0x4b017c,'include':[{'model':db[_0x1342('0x10')],'attributes':['id',_0x1342('0x18'),'email'],'include':[{'model':db[_0x1342('0x54')],'as':_0x1342('0x14'),'include':[{'model':db['CloudProvider'],'as':_0x1342('0x55')}]}]}]})[_0x1342('0xc')](function(_0x210d28){var _0x469ed8=_[_0x1342('0x56')](manager[_0x1342('0x57')]);var _0x357baf=_[_0x1342('0x58')](_0x210d28,function(_0xd705b5){return _0xd705b5['id'][_0x1342('0x59')]();});var _0x2c591d=_[_0x1342('0x5a')](_0x210d28,function(_0x44af48){return _0x44af48['id'][_0x1342('0x59')]();});var _0x3abfae=_0x27552b?_0x357baf:_['difference'](_0x357baf,_0x469ed8);var _0x535caf=_[_0x1342('0x5b')](_0x357baf,_0x469ed8);var _0x2cec99=_['difference'](_0x469ed8,_0x357baf);var _0x4fdcc7;var _0x4471a6;for(_0x4fdcc7=0x0;_0x4fdcc7<_0x2cec99[_0x1342('0x5c')]&&!_0x27552b;_0x4fdcc7+=0x1){_0x4471a6=_0x2cec99[_0x4fdcc7][_0x1342('0x59')]();if(manager[_0x1342('0x5d')](_0x4471a6)){manager[_0x1342('0x3b')](_0x4471a6);manager[_0x1342('0x5e')](_0x4471a6);logger[_0x1342('0xe')](_0x1342('0x5f'),_0x4471a6);}}logger[_0x1342('0xe')](_0x1342('0x60'),JSON['stringify'](_0x3abfae));for(_0x4fdcc7=0x0;_0x4fdcc7<_0x3abfae[_0x1342('0x5c')];_0x4fdcc7+=0x1){_0x4471a6=_0x3abfae[_0x4fdcc7][_0x1342('0x59')]();if(_0x27552b){logger[_0x1342('0xe')](JSON[_0x1342('0x23')](_0x2c591d[_0x4471a6]));BPromise['resolve']()['then'](handleJob(_0x2c591d[_0x4471a6]));logger[_0x1342('0xe')](_0x1342('0x61'),_0x2c591d[_0x4471a6][_0x1342('0x18')],_0x2c591d[_0x4471a6][_0x1342('0x62')]);}else if(_0x2c591d[_0x4471a6][_0x1342('0x62')]&&_0x2c591d[_0x4471a6][_0x1342('0x63')]&&moment()['isBetween'](_0x2c591d[_0x4471a6][_0x1342('0x64')],_0x2c591d[_0x4471a6]['endAt'])){manager[_0x1342('0x65')](_0x4471a6,_0x2c591d[_0x4471a6][_0x1342('0x62')],handleJob(_0x2c591d[_0x4471a6]));manager['start'](_0x4471a6);logger[_0x1342('0xe')](_0x1342('0x66'),_0x2c591d[_0x4471a6][_0x1342('0x18')],_0x2c591d[_0x4471a6][_0x1342('0x62')]);}else if(manager[_0x1342('0x5d')](_0x4471a6)){manager[_0x1342('0x3b')](_0x4471a6);manager[_0x1342('0x5e')](_0x4471a6);logger[_0x1342('0xe')](_0x1342('0x67'),_0x2c591d[_0x4471a6]['name'],_0x2c591d[_0x4471a6]['cron']);}}for(_0x4fdcc7=0x0,_0x4471a6;_0x4fdcc7<_0x535caf[_0x1342('0x5c')]&&!_0x27552b;_0x4fdcc7+=0x1){_0x4471a6=_0x535caf[_0x4fdcc7][_0x1342('0x59')]();if(manager[_0x1342('0x5d')](_0x4471a6)){if(_0x2c591d[_0x4471a6][_0x1342('0x62')]&&_0x2c591d[_0x4471a6][_0x1342('0x63')]&&moment()[_0x1342('0x68')](_0x2c591d[_0x4471a6][_0x1342('0x64')],_0x2c591d[_0x4471a6][_0x1342('0x69')])){manager[_0x1342('0x6a')](_0x4471a6,_0x2c591d[_0x4471a6]['cron'],handleJob(_0x2c591d[_0x4471a6]));logger[_0x1342('0xe')](_0x1342('0x6b'),_0x2c591d[_0x4471a6]['name'],_0x2c591d[_0x4471a6][_0x1342('0x62')]);}else{manager[_0x1342('0x3b')](_0x4471a6);manager[_0x1342('0x5e')](_0x4471a6);logger[_0x1342('0xe')](_0x1342('0x67'),_0x2c591d[_0x4471a6][_0x1342('0x18')],_0x2c591d[_0x4471a6][_0x1342('0x62')]);}}}})[_0x1342('0xd')](function(_0x451cd2){logger[_0x1342('0x2f')](JSON['stringify'](_0x451cd2));});}exports[_0x1342('0x6c')]=function(_0x7f0b0c){return getJobs(_0x7f0b0c);};exports[_0x1342('0x6d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};