Built motion from commit e38a297d.|2.6.18
[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 _0xcfa8=['subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','then','CustomReportId','runReport','catch','error','Schedule','MailServerOut','keys','jobs','map','toString','keyBy','difference','length','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','cron','startAt','endAt','add','start','add\x20cron','exists','active','isBetween','update\x20cron','stop\x20cron','run','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','basename','extname','zip','existsSync','status','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','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','error\x20mail','isNil','subtractNumber\x20null\x20or\x20undefined'];(function(_0x4d29b7,_0x5bdd4f){var _0x4b38cc=function(_0x4835bb){while(--_0x4835bb){_0x4d29b7['push'](_0x4d29b7['shift']());}};_0x4b38cc(++_0x5bdd4f);}(_0xcfa8,0x1c0));var _0x8cfa=function(_0x5ee2a1,_0x5342a5){_0x5ee2a1=_0x5ee2a1-0x0;var _0x4f7e39=_0xcfa8[_0x5ee2a1];return _0x4f7e39;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x8cfa('0x0'));var _=require(_0x8cfa('0x1'));var moment=require(_0x8cfa('0x2'));var CronJobManager=require(_0x8cfa('0x3'));var jayson=require(_0x8cfa('0x4'));var BPromise=require(_0x8cfa('0x5'));var logger=require(_0x8cfa('0x6'))(_0x8cfa('0x7'));var db=require(_0x8cfa('0x8'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x8cfa('0x9'));var client=jayson[_0x8cfa('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1604f2,_0x4decff){return function(){logger[_0x8cfa('0xb')](_0x8cfa('0xc'),_0x1604f2[_0x8cfa('0xd')]);var _0x1cdfb6=!![];var _0x26ad95=_0x1604f2[_0x8cfa('0xe')][_0x8cfa('0xf')]();var _0x13f30c={'account':_0x26ad95,'message':{'from':util[_0x8cfa('0x10')](_0x8cfa('0x11'),_0x1604f2[_0x8cfa('0xe')][_0x8cfa('0x12')],_0x1604f2[_0x8cfa('0xe')][_0x8cfa('0xd')]||_0x1604f2[_0x8cfa('0xe')][_0x8cfa('0x13')][_0x8cfa('0x14')]),'to':_0x1604f2['email'],'cc':_0x1604f2['cc'],'bcc':_0x1604f2['bcc'],'subject':util[_0x8cfa('0x10')](_0x8cfa('0x15'),_0x4decff[_0x8cfa('0x12')],_0x1604f2[_0x8cfa('0x16')],_0x1604f2[_0x8cfa('0x17')])}};var _0x241ea9=path[_0x8cfa('0x18')](__dirname,'../../files/reports');var _0x52eb04=_0x4decff[_0x8cfa('0x19')];var _0xf5a99=util[_0x8cfa('0x10')]('%s.%s',path[_0x8cfa('0x1a')](_0x4decff[_0x8cfa('0x19')],path[_0x8cfa('0x1b')](_0x4decff[_0x8cfa('0x19')])),_0x8cfa('0x1c'));var _0x1ec49c=path[_0x8cfa('0x18')](_0x241ea9,_0x52eb04);var _0x3811b5=path[_0x8cfa('0x18')](_0x241ea9,_0xf5a99);if(fs[_0x8cfa('0x1d')](_0x1ec49c)){_0x4decff[_0x8cfa('0x1e')]=_0x8cfa('0x1f');_0x13f30c[_0x8cfa('0x20')][_0x8cfa('0x21')]=[{'filename':_0x52eb04,'path':_0x1ec49c}];_0x13f30c[_0x8cfa('0x20')][_0x8cfa('0x22')]=util[_0x8cfa('0x10')](_0x8cfa('0x23'),JSON[_0x8cfa('0x24')](_0x4decff,null,0x2));}else if(fs['existsSync'](_0x3811b5)){_0x4decff['status']='Sent';_0x13f30c[_0x8cfa('0x20')][_0x8cfa('0x21')]=[{'filename':_0xf5a99,'path':_0x3811b5}];}else{_0x13f30c[_0x8cfa('0x20')][_0x8cfa('0x22')]=_0x8cfa('0x25');if(!_0x1604f2[_0x8cfa('0x26')]){_0x1cdfb6=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x1cdfb6){return client[_0x8cfa('0x27')](_0x8cfa('0x28'),_0x13f30c)['then'](function(_0x4d7da8){if(_0x4d7da8['error']){return logger['error'](_0x8cfa('0x29'),JSON[_0x8cfa('0x24')](_0x4d7da8));}return logger['info']('email\x20sent');})['catch'](function(_0x221dcb){return logger['error'](_0x8cfa('0x29'),JSON[_0x8cfa('0x24')](_0x221dcb));});}};}function handleError(){return function(_0x5f1ea8){return logger['error'](JSON[_0x8cfa('0x24')](_0x5f1ea8));};}function handleResult(_0x558058){return function(_0x476c08){logger['info']('data',JSON[_0x8cfa('0x24')](_0x476c08));if(_0x558058[_0x8cfa('0xe')]&&_0x558058[_0x8cfa('0xe')]['Smtp']&&!_[_0x8cfa('0x2a')](_0x558058[_0x8cfa('0xd')])){setTimeout(handleSendEmail(_0x558058,_0x476c08),0x3c*0x3e8);}};}function handleJob(_0x25ab84){return function(){try{if(_[_0x8cfa('0x2a')](_0x25ab84['subtractNumber'])){return logger[_0x8cfa('0xb')](_0x8cfa('0x2b'));}if(_['isNil'](_0x25ab84[_0x8cfa('0x17')])){return logger['info'](_0x8cfa('0x2c'));}var _0x51a444={'startDate':moment()[_0x8cfa('0x2d')](_0x25ab84[_0x8cfa('0x16')],_0x25ab84[_0x8cfa('0x17')])[_0x8cfa('0x10')](_0x8cfa('0x2e')),'endDate':moment()[_0x8cfa('0x10')](_0x8cfa('0x2e')),'type':_0x8cfa('0x2f'),'output':_0x25ab84[_0x8cfa('0x30')],'name':_0x25ab84[_0x8cfa('0x12')]};if(!_[_0x8cfa('0x2a')](_0x25ab84[_0x8cfa('0x31')])){logger[_0x8cfa('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x25ab84[_0x8cfa('0x31')]);return analyticDefaultReportController['runReport']({'id':_0x25ab84[_0x8cfa('0x31')]},_0x51a444)[_0x8cfa('0x32')](handleResult(_0x25ab84))['catch'](handleError());}if(!_[_0x8cfa('0x2a')](_0x25ab84[_0x8cfa('0x33')])){logger[_0x8cfa('0xb')]('exec\x20custom\x20report\x20id:%s',_0x25ab84[_0x8cfa('0x33')]);return analyticCustomReportController[_0x8cfa('0x34')]({'id':_0x25ab84['CustomReportId']},_0x51a444)[_0x8cfa('0x32')](handleResult(_0x25ab84))[_0x8cfa('0x35')](handleError());}}catch(_0x56cead){logger[_0x8cfa('0x36')](JSON[_0x8cfa('0x24')](_0x56cead));}return logger[_0x8cfa('0xb')]('no\x20report\x20id');};}function getJobs(_0x509c84){var _0x5003d9={};if(_0x509c84){_0x5003d9['id']=_0x509c84;}return db[_0x8cfa('0x37')]['findAll']({'where':_0x5003d9,'include':[{'model':db['MailAccount'],'attributes':['id',_0x8cfa('0x12'),_0x8cfa('0xd')],'include':[{'model':db[_0x8cfa('0x38')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})[_0x8cfa('0x32')](function(_0x18af49){var _0x5dfc2c=_[_0x8cfa('0x39')](manager[_0x8cfa('0x3a')]);var _0x2bc025=_[_0x8cfa('0x3b')](_0x18af49,function(_0x2f3018){return _0x2f3018['id'][_0x8cfa('0x3c')]();});var _0x5ca291=_[_0x8cfa('0x3d')](_0x18af49,function(_0x66e21){return _0x66e21['id'][_0x8cfa('0x3c')]();});var _0x4a2789=_0x509c84?_0x2bc025:_[_0x8cfa('0x3e')](_0x2bc025,_0x5dfc2c);var _0x1bdb4c=_['intersection'](_0x2bc025,_0x5dfc2c);var _0x22e72a=_[_0x8cfa('0x3e')](_0x5dfc2c,_0x2bc025);var _0x4c2193;var _0x306f0e;for(_0x4c2193=0x0;_0x4c2193<_0x22e72a[_0x8cfa('0x3f')]&&!_0x509c84;_0x4c2193+=0x1){_0x306f0e=_0x22e72a[_0x4c2193][_0x8cfa('0x3c')]();if(manager['exists'](_0x306f0e)){manager[_0x8cfa('0x40')](_0x306f0e);manager[_0x8cfa('0x41')](_0x306f0e);logger[_0x8cfa('0xb')](_0x8cfa('0x42'),_0x306f0e);}}logger[_0x8cfa('0xb')]('toRun',JSON['stringify'](_0x4a2789));for(_0x4c2193=0x0;_0x4c2193<_0x4a2789[_0x8cfa('0x3f')];_0x4c2193+=0x1){_0x306f0e=_0x4a2789[_0x4c2193][_0x8cfa('0x3c')]();logger[_0x8cfa('0xb')](_0x8cfa('0x43'),_0x306f0e);if(_0x509c84){logger[_0x8cfa('0xb')](_0x8cfa('0x44'),_0x509c84);logger[_0x8cfa('0xb')](JSON[_0x8cfa('0x24')](_0x5ca291[_0x306f0e]));BPromise[_0x8cfa('0x45')]()['then'](handleJob(_0x5ca291[_0x306f0e]));logger[_0x8cfa('0xb')]('run\x20job',_0x5ca291[_0x306f0e][_0x8cfa('0x12')],_0x5ca291[_0x306f0e]['cron']);}else if(_0x5ca291[_0x306f0e][_0x8cfa('0x46')]&&_0x5ca291[_0x306f0e]['active']&&moment()['isBetween'](_0x5ca291[_0x306f0e][_0x8cfa('0x47')],_0x5ca291[_0x306f0e][_0x8cfa('0x48')])){manager[_0x8cfa('0x49')](_0x306f0e,_0x5ca291[_0x306f0e][_0x8cfa('0x46')],handleJob(_0x5ca291[_0x306f0e]));manager[_0x8cfa('0x4a')](_0x306f0e);logger[_0x8cfa('0xb')](_0x8cfa('0x4b'),_0x5ca291[_0x306f0e][_0x8cfa('0x12')],_0x5ca291[_0x306f0e][_0x8cfa('0x46')]);}else if(manager['exists'](_0x306f0e)){manager[_0x8cfa('0x40')](_0x306f0e);manager[_0x8cfa('0x41')](_0x306f0e);logger[_0x8cfa('0xb')]('stop\x20cron',_0x5ca291[_0x306f0e][_0x8cfa('0x12')],_0x5ca291[_0x306f0e][_0x8cfa('0x46')]);}}for(_0x4c2193=0x0,_0x306f0e;_0x4c2193<_0x1bdb4c[_0x8cfa('0x3f')]&&!_0x509c84;_0x4c2193+=0x1){_0x306f0e=_0x1bdb4c[_0x4c2193]['toString']();if(manager[_0x8cfa('0x4c')](_0x306f0e)){if(_0x5ca291[_0x306f0e]['cron']&&_0x5ca291[_0x306f0e][_0x8cfa('0x4d')]&&moment()[_0x8cfa('0x4e')](_0x5ca291[_0x306f0e][_0x8cfa('0x47')],_0x5ca291[_0x306f0e][_0x8cfa('0x48')])){manager['update'](_0x306f0e,_0x5ca291[_0x306f0e]['cron'],handleJob(_0x5ca291[_0x306f0e]));logger[_0x8cfa('0xb')](_0x8cfa('0x4f'),_0x5ca291[_0x306f0e]['name'],_0x5ca291[_0x306f0e][_0x8cfa('0x46')]);}else{manager[_0x8cfa('0x40')](_0x306f0e);manager[_0x8cfa('0x41')](_0x306f0e);logger[_0x8cfa('0xb')](_0x8cfa('0x50'),_0x5ca291[_0x306f0e]['name'],_0x5ca291[_0x306f0e][_0x8cfa('0x46')]);}}}})[_0x8cfa('0x35')](function(_0x52304d){logger[_0x8cfa('0x36')](JSON['stringify'](_0x52304d));});}exports[_0x8cfa('0x51')]=function(_0x30fb3a){return getJobs(_0x30fb3a);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};