Built motion from commit 58b0471d.|2.6.29
[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 _0xf86a=['format','\x22%s\x22\x20<%s>','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','status','Empty','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','Loading','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','[handleSendEmail]\x20Unrecognized\x20status:','SendMail','email\x20sent','catch','stringify','currentAttempt','retries','job','data','operation','stop','still\x20loading','case\x20completed','entity','dataValues','attempt','Job\x20ID\x20','\x20Attempt\x20#:','report\x20status:','subtractNumber','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','toRun','resolve','cron','active','isBetween','endAt','add','add\x20cron','deleteJob','startAt','update','update\x20cron','stop\x20cron','run','start','util','path','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','retry','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','number','AnalyticExtractedReport','then','error','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions'];(function(_0x4ad935,_0x26e1da){var _0x20a15f=function(_0x2a646d){while(--_0x2a646d){_0x4ad935['push'](_0x4ad935['shift']());}};_0x20a15f(++_0x26e1da);}(_0xf86a,0x138));var _0xaf86=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf86a[_0xa464c9];return _0x3d73c4;};'use strict';var fs=require('fs');var util=require(_0xaf86('0x0'));var path=require(_0xaf86('0x1'));var _=require('lodash');var moment=require(_0xaf86('0x2'));var CronJobManager=require(_0xaf86('0x3'));var jayson=require(_0xaf86('0x4'));var BPromise=require(_0xaf86('0x5'));var logger=require(_0xaf86('0x6'))(_0xaf86('0x7'));var db=require(_0xaf86('0x8'))['db'];const retry=require(_0xaf86('0x9'));var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xaf86('0xa'));var client=jayson[_0xaf86('0xb')][_0xaf86('0xc')]({'port':0x232b});var manager=new CronJobManager();function getReportData(_0x2ba868){const _0x2e97f1={};if(typeof _0x2ba868===_0xaf86('0xd')){_0x2e97f1['id']=_0x2ba868;}return db[_0xaf86('0xe')]['findOne']({'where':_0x2e97f1})[_0xaf86('0xf')](function(_0x3eacbf){return _0x3eacbf;})['catch'](function(_0x455012){logger[_0xaf86('0x10')](_0x455012);});}function handleSendEmail(_0x20e949,_0x42b641){logger['info'](_0xaf86('0x11'),_0x20e949[_0xaf86('0x12')]);var _0x3b56bc=!![];var _0x4bb711=_0x20e949[_0xaf86('0x13')][_0xaf86('0x14')]();var _0x4a2a83={'account':_0x4bb711,'message':{'from':util[_0xaf86('0x15')](_0xaf86('0x16'),_0x20e949[_0xaf86('0x13')][_0xaf86('0x17')],_0x20e949[_0xaf86('0x13')][_0xaf86('0x12')]||_0x20e949[_0xaf86('0x13')][_0xaf86('0x18')][_0xaf86('0x19')]),'to':_0x20e949['email'],'cc':_0x20e949['cc'],'bcc':_0x20e949[_0xaf86('0x1a')],'subject':util['format'](_0xaf86('0x1b'),_0x42b641[_0xaf86('0x17')],_0x20e949['subtractNumber'],_0x20e949[_0xaf86('0x1c')])}};var _0x15118d=path[_0xaf86('0x1d')](__dirname,_0xaf86('0x1e'));var _0x713e18=_0x42b641[_0xaf86('0x1f')];var _0x387020=util[_0xaf86('0x15')]('%s.%s',path[_0xaf86('0x20')](_0x42b641[_0xaf86('0x1f')],path[_0xaf86('0x21')](_0x42b641[_0xaf86('0x1f')])),_0xaf86('0x22'));var _0x38191e=path[_0xaf86('0x1d')](_0x15118d,_0x713e18);var _0x6188fa=path[_0xaf86('0x1d')](_0x15118d,_0x387020);if(fs[_0xaf86('0x23')](_0x38191e)){_0x42b641['status']=_0xaf86('0x24');_0x4a2a83[_0xaf86('0x25')][_0xaf86('0x26')]=[{'filename':_0x713e18,'path':_0x38191e}];_0x4a2a83[_0xaf86('0x25')][_0xaf86('0x27')]=util[_0xaf86('0x15')](_0xaf86('0x28'),JSON['stringify'](_0x42b641,null,0x2));}else if(fs[_0xaf86('0x23')](_0x6188fa)){_0x42b641[_0xaf86('0x29')]=_0xaf86('0x24');_0x4a2a83[_0xaf86('0x25')][_0xaf86('0x26')]=[{'filename':_0x387020,'path':_0x6188fa}];}else{if(_0x42b641[_0xaf86('0x29')]===_0xaf86('0x2a')){_0x4a2a83[_0xaf86('0x25')]['text']=_0xaf86('0x2b');if(!_0x20e949[_0xaf86('0x2c')]){_0x3b56bc=![];logger[_0xaf86('0x2d')](_0xaf86('0x2e'));}}else if(_0x42b641['status']===_0xaf86('0x2f')){_0x4a2a83[_0xaf86('0x25')]['text']='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';}else if(_0x42b641[_0xaf86('0x29')]==='Completed'){_0x4a2a83[_0xaf86('0x25')][_0xaf86('0x27')]=_0xaf86('0x30');}else if(_0x42b641[_0xaf86('0x29')]===_0xaf86('0x31')){_0x4a2a83[_0xaf86('0x25')][_0xaf86('0x27')]=_0xaf86('0x32');}else{logger[_0xaf86('0x10')](_0xaf86('0x33'),_0x42b641['status']);}}if(_0x3b56bc){return client['request'](_0xaf86('0x34'),_0x4a2a83)[_0xaf86('0xf')](function(_0x5c4c77){if(_0x5c4c77['error']){return logger[_0xaf86('0x10')]('error\x20mail',JSON['stringify'](_0x5c4c77));}return logger[_0xaf86('0x2d')](_0xaf86('0x35'));})[_0xaf86('0x36')](function(_0x956452){return logger[_0xaf86('0x10')]('error\x20mail',JSON[_0xaf86('0x37')](_0x956452));});}}function handleError(){return function(_0x15f6d2){return logger[_0xaf86('0x10')](JSON[_0xaf86('0x37')](_0x15f6d2));};}function loading(_0x288c7d){logger[_0xaf86('0x2d')]('case\x20loading');if(_0x288c7d[_0xaf86('0x38')]===_0x288c7d['retryOptions'][_0xaf86('0x39')]){handleSendEmail(_0x288c7d[_0xaf86('0x3a')],_0x288c7d[_0xaf86('0x3b')]);_0x288c7d[_0xaf86('0x3c')][_0xaf86('0x3d')]();}else{_0x288c7d['operation'][_0xaf86('0x9')](_0xaf86('0x3e'));}}function completed(_0x58e5ff){logger['info'](_0xaf86('0x3f'));handleSendEmail(_0x58e5ff[_0xaf86('0x3a')],_0x58e5ff[_0xaf86('0x3b')]);_0x58e5ff[_0xaf86('0x3c')]['stop']();}function empty(_0x1a144e){logger[_0xaf86('0x2d')]('case\x20empty');handleSendEmail(_0x1a144e[_0xaf86('0x3a')],_0x1a144e['data']);_0x1a144e['operation'][_0xaf86('0x3d')]();}function failed(_0x23239c){logger[_0xaf86('0x2d')]('case\x20failed');handleSendEmail(_0x23239c[_0xaf86('0x3a')],_0x23239c[_0xaf86('0x3b')]);_0x23239c['operation'][_0xaf86('0x3d')]();}function urecognized(_0x16906d){logger[_0xaf86('0x10')]('Unrecognized\x20status:',_0x16906d[_0xaf86('0x40')][_0xaf86('0x41')][_0xaf86('0x29')]);_0x16906d[_0xaf86('0x3c')]['stop']();}const reportStatusStrategies={'Loading':loading,'Completed':completed,'Empty':empty,'Failed':failed,'Unrecognized':urecognized};function retryer(_0x1d9d3b,_0x237e07){const _0x1ee85c={'retries':0x3,'factor':0x2,'minTimeout':0x5b*0x3e8,'maxTimeout':0xa*0x3c*0x3e8};const _0x5d5d54=retry['operation'](_0x1ee85c);_0x5d5d54[_0xaf86('0x42')](_0x1141ed=>{logger['info'](_0xaf86('0x43')+_0x1d9d3b['id']+_0xaf86('0x44')+_0x1141ed);try{getReportData(_0x237e07['id'])['then'](function(_0x419404){_0x237e07=_0x419404;logger[_0xaf86('0x2d')]('report\x20status:',_0x419404['dataValues']['status']);if(!reportStatusStrategies[_0x419404[_0xaf86('0x41')][_0xaf86('0x29')]]){logger[_0xaf86('0x10')](_0xaf86('0x45'),_0x419404[_0xaf86('0x41')][_0xaf86('0x29')]);_0x5d5d54[_0xaf86('0x9')]();}reportStatusStrategies[_0x419404[_0xaf86('0x41')][_0xaf86('0x29')]]({'operation':_0x5d5d54,'currentAttempt':_0x1141ed,'retryOptions':_0x1ee85c,'job':_0x1d9d3b,'data':_0x237e07,'entity':_0x419404});});}catch(_0x467b74){_0x5d5d54[_0xaf86('0x9')](_0x467b74);}});}function handleResult(_0x976668){return function(_0x49f8a2){if(_0x976668['sendMail']&&_0x976668[_0xaf86('0x13')]&&_0x976668['MailAccount'][_0xaf86('0x18')]&&!_['isNil'](_0x976668[_0xaf86('0x12')])){retryer(_0x976668,_0x49f8a2);}};}function handleJob(_0x24a626){return function(){try{if(_['isNil'](_0x24a626[_0xaf86('0x46')])){return logger[_0xaf86('0x2d')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xaf86('0x47')](_0x24a626[_0xaf86('0x1c')])){return logger[_0xaf86('0x2d')](_0xaf86('0x48'));}var _0x5ce563={'startDate':moment()[_0xaf86('0x49')](_0x24a626['subtractNumber'],_0x24a626['subtractUnit'])[_0xaf86('0x15')](_0xaf86('0x4a')),'endDate':moment()['format'](_0xaf86('0x4a')),'type':_0xaf86('0x4b'),'output':_0x24a626[_0xaf86('0x4c')],'name':_0x24a626[_0xaf86('0x17')]};if(!_[_0xaf86('0x47')](_0x24a626['DefaultReportId'])){logger[_0xaf86('0x2d')](_0xaf86('0x4d'),_0x24a626[_0xaf86('0x4e')]);return analyticDefaultReportController[_0xaf86('0x4f')]({'id':_0x24a626['DefaultReportId']},_0x5ce563)[_0xaf86('0xf')](handleResult(_0x24a626))['catch'](handleError());}if(!_[_0xaf86('0x47')](_0x24a626[_0xaf86('0x50')])){logger[_0xaf86('0x2d')](_0xaf86('0x51'),_0x24a626['CustomReportId']);return analyticCustomReportController[_0xaf86('0x4f')]({'id':_0x24a626['CustomReportId']},_0x5ce563)['then'](handleResult(_0x24a626))['catch'](handleError());}}catch(_0x4dd1f9){logger[_0xaf86('0x10')](JSON[_0xaf86('0x37')](_0x4dd1f9));}return logger[_0xaf86('0x2d')](_0xaf86('0x52'));};}function getJobs(_0x1960a4){var _0x30f4fb={};if(_0x1960a4){_0x30f4fb['id']=_0x1960a4;}return db[_0xaf86('0x53')][_0xaf86('0x54')]({'where':_0x30f4fb,'include':[{'model':db[_0xaf86('0x13')],'attributes':['id',_0xaf86('0x17'),'email'],'include':[{'model':db[_0xaf86('0x55')],'as':_0xaf86('0x18'),'include':[{'model':db[_0xaf86('0x56')],'as':_0xaf86('0x56')}]}]}]})[_0xaf86('0xf')](function(_0xb34a8a){var _0x254b3e=_[_0xaf86('0x57')](manager[_0xaf86('0x58')]);var _0x187609=_[_0xaf86('0x59')](_0xb34a8a,function(_0x18fd62){return _0x18fd62['id'][_0xaf86('0x5a')]();});var _0x3ca1e4=_[_0xaf86('0x5b')](_0xb34a8a,function(_0x513bea){return _0x513bea['id'][_0xaf86('0x5a')]();});var _0x3f4ee3=_0x1960a4?_0x187609:_[_0xaf86('0x5c')](_0x187609,_0x254b3e);var _0x25e460=_[_0xaf86('0x5d')](_0x187609,_0x254b3e);var _0xc9091d=_[_0xaf86('0x5c')](_0x254b3e,_0x187609);var _0x27491f;var _0x32ad77;for(_0x27491f=0x0;_0x27491f<_0xc9091d[_0xaf86('0x5e')]&&!_0x1960a4;_0x27491f+=0x1){_0x32ad77=_0xc9091d[_0x27491f][_0xaf86('0x5a')]();if(manager[_0xaf86('0x5f')](_0x32ad77)){manager['stop'](_0x32ad77);manager['deleteJob'](_0x32ad77);logger['info']('delete\x20cron',_0x32ad77);}}logger[_0xaf86('0x2d')](_0xaf86('0x60'),JSON[_0xaf86('0x37')](_0x3f4ee3));for(_0x27491f=0x0;_0x27491f<_0x3f4ee3[_0xaf86('0x5e')];_0x27491f+=0x1){_0x32ad77=_0x3f4ee3[_0x27491f][_0xaf86('0x5a')]();if(_0x1960a4){logger['info'](JSON[_0xaf86('0x37')](_0x3ca1e4[_0x32ad77]));BPromise[_0xaf86('0x61')]()[_0xaf86('0xf')](handleJob(_0x3ca1e4[_0x32ad77]));logger[_0xaf86('0x2d')]('run\x20job',_0x3ca1e4[_0x32ad77][_0xaf86('0x17')],_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]);}else if(_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]&&_0x3ca1e4[_0x32ad77][_0xaf86('0x63')]&&moment()[_0xaf86('0x64')](_0x3ca1e4[_0x32ad77]['startAt'],_0x3ca1e4[_0x32ad77][_0xaf86('0x65')])){manager[_0xaf86('0x66')](_0x32ad77,_0x3ca1e4[_0x32ad77][_0xaf86('0x62')],handleJob(_0x3ca1e4[_0x32ad77]));manager['start'](_0x32ad77);logger['info'](_0xaf86('0x67'),_0x3ca1e4[_0x32ad77][_0xaf86('0x17')],_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]);}else if(manager[_0xaf86('0x5f')](_0x32ad77)){manager[_0xaf86('0x3d')](_0x32ad77);manager[_0xaf86('0x68')](_0x32ad77);logger['info']('stop\x20cron',_0x3ca1e4[_0x32ad77][_0xaf86('0x17')],_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]);}}for(_0x27491f=0x0,_0x32ad77;_0x27491f<_0x25e460[_0xaf86('0x5e')]&&!_0x1960a4;_0x27491f+=0x1){_0x32ad77=_0x25e460[_0x27491f][_0xaf86('0x5a')]();if(manager[_0xaf86('0x5f')](_0x32ad77)){if(_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]&&_0x3ca1e4[_0x32ad77][_0xaf86('0x63')]&&moment()['isBetween'](_0x3ca1e4[_0x32ad77][_0xaf86('0x69')],_0x3ca1e4[_0x32ad77][_0xaf86('0x65')])){manager[_0xaf86('0x6a')](_0x32ad77,_0x3ca1e4[_0x32ad77][_0xaf86('0x62')],handleJob(_0x3ca1e4[_0x32ad77]));logger['info'](_0xaf86('0x6b'),_0x3ca1e4[_0x32ad77][_0xaf86('0x17')],_0x3ca1e4[_0x32ad77]['cron']);}else{manager[_0xaf86('0x3d')](_0x32ad77);manager[_0xaf86('0x68')](_0x32ad77);logger[_0xaf86('0x2d')](_0xaf86('0x6c'),_0x3ca1e4[_0x32ad77][_0xaf86('0x17')],_0x3ca1e4[_0x32ad77][_0xaf86('0x62')]);}}}})[_0xaf86('0x36')](function(_0x52ba19){logger[_0xaf86('0x10')](JSON[_0xaf86('0x37')](_0x52ba19));});}exports[_0xaf86('0x6d')]=function(_0x31396a){return getJobs(_0x31396a);};exports[_0xaf86('0x6e')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};