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 _0x5cfd=['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','[handleSendEmail]\x20Unrecognized\x20status:','request','SendMail','stringify','currentAttempt','retries','job','data','operation','stop','still\x20loading','case\x20completed','case\x20empty','case\x20failed','Unrecognized\x20status:','entity','dataValues','attempt','Job\x20ID\x20','report\x20status:','sendMail','isNil','email','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','runReport','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','Schedule','findAll','MailServerOut','CloudProvider','keys','map','toString','keyBy','difference','intersection','exists','deleteJob','toRun','length','run\x20job','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','update','update\x20cron','stop\x20cron','run','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','retry','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','number','findOne','then','error','info','MailAccount','format','Smtp','user','bcc','name','subtractNumber','subtractUnit','join','savename','%s.%s','zip','existsSync','Sent','message','attachments','text','status','Empty','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','Loading'];(function(_0x569824,_0x5ef34c){var _0x48544d=function(_0x534262){while(--_0x534262){_0x569824['push'](_0x569824['shift']());}};_0x48544d(++_0x5ef34c);}(_0x5cfd,0x170));var _0xd5cf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5cfd[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xd5cf('0x0'));var _=require(_0xd5cf('0x1'));var moment=require(_0xd5cf('0x2'));var CronJobManager=require(_0xd5cf('0x3'));var jayson=require(_0xd5cf('0x4'));var BPromise=require(_0xd5cf('0x5'));var logger=require(_0xd5cf('0x6'))(_0xd5cf('0x7'));var db=require('../../mysqldb')['db'];const retry=require(_0xd5cf('0x8'));var analyticCustomReportController=require(_0xd5cf('0x9'));var analyticDefaultReportController=require(_0xd5cf('0xa'));var client=jayson[_0xd5cf('0xb')][_0xd5cf('0xc')]({'port':0x232b});var manager=new CronJobManager();function getReportData(_0x432a86){const _0x384f8c={};if(typeof _0x432a86===_0xd5cf('0xd')){_0x384f8c['id']=_0x432a86;}return db['AnalyticExtractedReport'][_0xd5cf('0xe')]({'where':_0x384f8c})[_0xd5cf('0xf')](function(_0x171411){return _0x171411;})['catch'](function(_0x4b060f){logger[_0xd5cf('0x10')](_0x4b060f);});}function handleSendEmail(_0x36ec76,_0x42f846){logger[_0xd5cf('0x11')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x36ec76['email']);var _0x3d9e7a=!![];var _0x4bc887=_0x36ec76[_0xd5cf('0x12')]['getSmtpOptions']();var _0x3e351d={'account':_0x4bc887,'message':{'from':util[_0xd5cf('0x13')]('\x22%s\x22\x20<%s>',_0x36ec76[_0xd5cf('0x12')]['name'],_0x36ec76[_0xd5cf('0x12')]['email']||_0x36ec76[_0xd5cf('0x12')][_0xd5cf('0x14')][_0xd5cf('0x15')]),'to':_0x36ec76['email'],'cc':_0x36ec76['cc'],'bcc':_0x36ec76[_0xd5cf('0x16')],'subject':util[_0xd5cf('0x13')]('Report\x20%s\x20last\x20%s\x20%s',_0x42f846[_0xd5cf('0x17')],_0x36ec76[_0xd5cf('0x18')],_0x36ec76[_0xd5cf('0x19')])}};var _0x1c88c0=path[_0xd5cf('0x1a')](__dirname,'../../files/reports');var _0x3ce447=_0x42f846[_0xd5cf('0x1b')];var _0x92f09e=util['format'](_0xd5cf('0x1c'),path['basename'](_0x42f846[_0xd5cf('0x1b')],path['extname'](_0x42f846[_0xd5cf('0x1b')])),_0xd5cf('0x1d'));var _0x35be05=path[_0xd5cf('0x1a')](_0x1c88c0,_0x3ce447);var _0x3936c6=path['join'](_0x1c88c0,_0x92f09e);if(fs[_0xd5cf('0x1e')](_0x35be05)){_0x42f846['status']=_0xd5cf('0x1f');_0x3e351d[_0xd5cf('0x20')][_0xd5cf('0x21')]=[{'filename':_0x3ce447,'path':_0x35be05}];_0x3e351d['message'][_0xd5cf('0x22')]=util[_0xd5cf('0x13')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x42f846,null,0x2));}else if(fs[_0xd5cf('0x1e')](_0x3936c6)){_0x42f846['status']=_0xd5cf('0x1f');_0x3e351d[_0xd5cf('0x20')][_0xd5cf('0x21')]=[{'filename':_0x92f09e,'path':_0x3936c6}];}else{if(_0x42f846[_0xd5cf('0x23')]===_0xd5cf('0x24')){_0x3e351d[_0xd5cf('0x20')][_0xd5cf('0x22')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x36ec76[_0xd5cf('0x25')]){_0x3d9e7a=![];logger[_0xd5cf('0x11')](_0xd5cf('0x26'));}}else if(_0x42f846[_0xd5cf('0x23')]===_0xd5cf('0x27')){_0x3e351d[_0xd5cf('0x20')][_0xd5cf('0x22')]='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(_0x42f846[_0xd5cf('0x23')]===_0xd5cf('0x28')){_0x3e351d['message']['text']=_0xd5cf('0x29');}else if(_0x42f846[_0xd5cf('0x23')]==='Failed'){_0x3e351d[_0xd5cf('0x20')][_0xd5cf('0x22')]='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';}else{logger['error'](_0xd5cf('0x2a'),_0x42f846[_0xd5cf('0x23')]);}}if(_0x3d9e7a){return client[_0xd5cf('0x2b')](_0xd5cf('0x2c'),_0x3e351d)['then'](function(_0x4e34b7){if(_0x4e34b7[_0xd5cf('0x10')]){return logger['error']('error\x20mail',JSON['stringify'](_0x4e34b7));}return logger[_0xd5cf('0x11')]('email\x20sent');})['catch'](function(_0x45545d){return logger[_0xd5cf('0x10')]('error\x20mail',JSON[_0xd5cf('0x2d')](_0x45545d));});}}function handleError(){return function(_0x3179bb){return logger[_0xd5cf('0x10')](JSON['stringify'](_0x3179bb));};}function loading(_0xb409b3){logger[_0xd5cf('0x11')]('case\x20loading');if(_0xb409b3[_0xd5cf('0x2e')]===_0xb409b3['retryOptions'][_0xd5cf('0x2f')]){handleSendEmail(_0xb409b3[_0xd5cf('0x30')],_0xb409b3[_0xd5cf('0x31')]);_0xb409b3[_0xd5cf('0x32')][_0xd5cf('0x33')]();}else{_0xb409b3['operation'][_0xd5cf('0x8')](_0xd5cf('0x34'));}}function completed(_0x46f9e0){logger[_0xd5cf('0x11')](_0xd5cf('0x35'));handleSendEmail(_0x46f9e0[_0xd5cf('0x30')],_0x46f9e0[_0xd5cf('0x31')]);_0x46f9e0[_0xd5cf('0x32')][_0xd5cf('0x33')]();}function empty(_0x3a1dc8){logger[_0xd5cf('0x11')](_0xd5cf('0x36'));handleSendEmail(_0x3a1dc8['job'],_0x3a1dc8[_0xd5cf('0x31')]);_0x3a1dc8[_0xd5cf('0x32')][_0xd5cf('0x33')]();}function failed(_0xcffd5e){logger[_0xd5cf('0x11')](_0xd5cf('0x37'));handleSendEmail(_0xcffd5e[_0xd5cf('0x30')],_0xcffd5e[_0xd5cf('0x31')]);_0xcffd5e['operation'][_0xd5cf('0x33')]();}function urecognized(_0x38ce6c){logger['error'](_0xd5cf('0x38'),_0x38ce6c[_0xd5cf('0x39')][_0xd5cf('0x3a')][_0xd5cf('0x23')]);_0x38ce6c[_0xd5cf('0x32')]['stop']();}const reportStatusStrategies={'Loading':loading,'Completed':completed,'Empty':empty,'Failed':failed,'Unrecognized':urecognized};function retryer(_0x66b7fe,_0x35122f){const _0x5deebf={'retries':0x3,'factor':0x2,'minTimeout':0x5b*0x3e8,'maxTimeout':0xa*0x3c*0x3e8};const _0x148dc5=retry[_0xd5cf('0x32')](_0x5deebf);_0x148dc5[_0xd5cf('0x3b')](_0x3ff150=>{logger[_0xd5cf('0x11')](_0xd5cf('0x3c')+_0x66b7fe['id']+'\x20Attempt\x20#:'+_0x3ff150);try{getReportData(_0x35122f['id'])[_0xd5cf('0xf')](function(_0x2c9601){_0x35122f=_0x2c9601;logger[_0xd5cf('0x11')](_0xd5cf('0x3d'),_0x2c9601[_0xd5cf('0x3a')][_0xd5cf('0x23')]);if(!reportStatusStrategies[_0x2c9601[_0xd5cf('0x3a')]['status']]){logger[_0xd5cf('0x10')](_0xd5cf('0x3d'),_0x2c9601[_0xd5cf('0x3a')]['status']);_0x148dc5['retry']();}reportStatusStrategies[_0x2c9601['dataValues'][_0xd5cf('0x23')]]({'operation':_0x148dc5,'currentAttempt':_0x3ff150,'retryOptions':_0x5deebf,'job':_0x66b7fe,'data':_0x35122f,'entity':_0x2c9601});});}catch(_0x283737){_0x148dc5['retry'](_0x283737);}});}function handleResult(_0x5c20e5){return function(_0x56d9e3){if(_0x5c20e5[_0xd5cf('0x3e')]&&_0x5c20e5[_0xd5cf('0x12')]&&_0x5c20e5[_0xd5cf('0x12')][_0xd5cf('0x14')]&&!_[_0xd5cf('0x3f')](_0x5c20e5[_0xd5cf('0x40')])){retryer(_0x5c20e5,_0x56d9e3);}};}function handleJob(_0x5d4c57){return function(){try{if(_['isNil'](_0x5d4c57[_0xd5cf('0x18')])){return logger[_0xd5cf('0x11')](_0xd5cf('0x41'));}if(_[_0xd5cf('0x3f')](_0x5d4c57['subtractUnit'])){return logger[_0xd5cf('0x11')](_0xd5cf('0x42'));}var _0x148fe0={'startDate':moment()['subtract'](_0x5d4c57[_0xd5cf('0x18')],_0x5d4c57[_0xd5cf('0x19')])[_0xd5cf('0x13')](_0xd5cf('0x43')),'endDate':moment()[_0xd5cf('0x13')](_0xd5cf('0x43')),'type':_0xd5cf('0x44'),'output':_0x5d4c57['output'],'name':_0x5d4c57[_0xd5cf('0x17')]};if(!_['isNil'](_0x5d4c57['DefaultReportId'])){logger[_0xd5cf('0x11')](_0xd5cf('0x45'),_0x5d4c57['DefaultReportId']);return analyticDefaultReportController[_0xd5cf('0x46')]({'id':_0x5d4c57[_0xd5cf('0x47')]},_0x148fe0)['then'](handleResult(_0x5d4c57))['catch'](handleError());}if(!_['isNil'](_0x5d4c57[_0xd5cf('0x48')])){logger[_0xd5cf('0x11')](_0xd5cf('0x49'),_0x5d4c57[_0xd5cf('0x48')]);return analyticCustomReportController['runReport']({'id':_0x5d4c57[_0xd5cf('0x48')]},_0x148fe0)[_0xd5cf('0xf')](handleResult(_0x5d4c57))[_0xd5cf('0x4a')](handleError());}}catch(_0x30c052){logger[_0xd5cf('0x10')](JSON[_0xd5cf('0x2d')](_0x30c052));}return logger[_0xd5cf('0x11')]('no\x20report\x20id');};}function getJobs(_0x336373){var _0x99d43={};if(_0x336373){_0x99d43['id']=_0x336373;}return db[_0xd5cf('0x4b')][_0xd5cf('0x4c')]({'where':_0x99d43,'include':[{'model':db[_0xd5cf('0x12')],'attributes':['id',_0xd5cf('0x17'),_0xd5cf('0x40')],'include':[{'model':db[_0xd5cf('0x4d')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0xd5cf('0x4e')}]}]}]})[_0xd5cf('0xf')](function(_0x515719){var _0x4ec6ef=_[_0xd5cf('0x4f')](manager['jobs']);var _0x333a40=_[_0xd5cf('0x50')](_0x515719,function(_0x529195){return _0x529195['id'][_0xd5cf('0x51')]();});var _0x8b17c9=_[_0xd5cf('0x52')](_0x515719,function(_0x25b34c){return _0x25b34c['id']['toString']();});var _0x5d501b=_0x336373?_0x333a40:_[_0xd5cf('0x53')](_0x333a40,_0x4ec6ef);var _0x885e5d=_[_0xd5cf('0x54')](_0x333a40,_0x4ec6ef);var _0x591465=_[_0xd5cf('0x53')](_0x4ec6ef,_0x333a40);var _0x49f672;var _0x12719f;for(_0x49f672=0x0;_0x49f672<_0x591465['length']&&!_0x336373;_0x49f672+=0x1){_0x12719f=_0x591465[_0x49f672][_0xd5cf('0x51')]();if(manager[_0xd5cf('0x55')](_0x12719f)){manager['stop'](_0x12719f);manager[_0xd5cf('0x56')](_0x12719f);logger[_0xd5cf('0x11')]('delete\x20cron',_0x12719f);}}logger[_0xd5cf('0x11')](_0xd5cf('0x57'),JSON[_0xd5cf('0x2d')](_0x5d501b));for(_0x49f672=0x0;_0x49f672<_0x5d501b[_0xd5cf('0x58')];_0x49f672+=0x1){_0x12719f=_0x5d501b[_0x49f672]['toString']();if(_0x336373){logger[_0xd5cf('0x11')](JSON[_0xd5cf('0x2d')](_0x8b17c9[_0x12719f]));BPromise['resolve']()[_0xd5cf('0xf')](handleJob(_0x8b17c9[_0x12719f]));logger[_0xd5cf('0x11')](_0xd5cf('0x59'),_0x8b17c9[_0x12719f][_0xd5cf('0x17')],_0x8b17c9[_0x12719f][_0xd5cf('0x5a')]);}else if(_0x8b17c9[_0x12719f][_0xd5cf('0x5a')]&&_0x8b17c9[_0x12719f][_0xd5cf('0x5b')]&&moment()[_0xd5cf('0x5c')](_0x8b17c9[_0x12719f][_0xd5cf('0x5d')],_0x8b17c9[_0x12719f][_0xd5cf('0x5e')])){manager[_0xd5cf('0x5f')](_0x12719f,_0x8b17c9[_0x12719f][_0xd5cf('0x5a')],handleJob(_0x8b17c9[_0x12719f]));manager[_0xd5cf('0x60')](_0x12719f);logger[_0xd5cf('0x11')](_0xd5cf('0x61'),_0x8b17c9[_0x12719f][_0xd5cf('0x17')],_0x8b17c9[_0x12719f][_0xd5cf('0x5a')]);}else if(manager[_0xd5cf('0x55')](_0x12719f)){manager[_0xd5cf('0x33')](_0x12719f);manager['deleteJob'](_0x12719f);logger[_0xd5cf('0x11')]('stop\x20cron',_0x8b17c9[_0x12719f][_0xd5cf('0x17')],_0x8b17c9[_0x12719f][_0xd5cf('0x5a')]);}}for(_0x49f672=0x0,_0x12719f;_0x49f672<_0x885e5d[_0xd5cf('0x58')]&&!_0x336373;_0x49f672+=0x1){_0x12719f=_0x885e5d[_0x49f672]['toString']();if(manager['exists'](_0x12719f)){if(_0x8b17c9[_0x12719f]['cron']&&_0x8b17c9[_0x12719f][_0xd5cf('0x5b')]&&moment()[_0xd5cf('0x5c')](_0x8b17c9[_0x12719f][_0xd5cf('0x5d')],_0x8b17c9[_0x12719f]['endAt'])){manager[_0xd5cf('0x62')](_0x12719f,_0x8b17c9[_0x12719f][_0xd5cf('0x5a')],handleJob(_0x8b17c9[_0x12719f]));logger[_0xd5cf('0x11')](_0xd5cf('0x63'),_0x8b17c9[_0x12719f][_0xd5cf('0x17')],_0x8b17c9[_0x12719f]['cron']);}else{manager[_0xd5cf('0x33')](_0x12719f);manager[_0xd5cf('0x56')](_0x12719f);logger[_0xd5cf('0x11')](_0xd5cf('0x64'),_0x8b17c9[_0x12719f][_0xd5cf('0x17')],_0x8b17c9[_0x12719f][_0xd5cf('0x5a')]);}}}})[_0xd5cf('0x4a')](function(_0x1a25b9){logger[_0xd5cf('0x10')](JSON[_0xd5cf('0x2d')](_0x1a25b9));});}exports[_0xd5cf('0x65')]=function(_0x4bdcff){return getJobs(_0x4bdcff);};exports[_0xd5cf('0x60')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};