Built motion from commit b5996064.|2.6.21
[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 _0x4acd=['update','update\x20cron','start','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','Smtp','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','zip','existsSync','message','attachments','text','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','error','email\x20sent','catch','stringify','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','map','toString','keyBy','difference','intersection','exists','stop','deleteJob','length','my\x20id','resolve','run\x20job','cron','startAt','endAt','add','stop\x20cron','isBetween'];(function(_0x43793b,_0x4330e8){var _0x426a48=function(_0x3d2967){while(--_0x3d2967){_0x43793b['push'](_0x43793b['shift']());}};_0x426a48(++_0x4330e8);}(_0x4acd,0xe7));var _0xd4ac=function(_0x2a18b7,_0x5041c8){_0x2a18b7=_0x2a18b7-0x0;var _0x45e74e=_0x4acd[_0x2a18b7];return _0x45e74e;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xd4ac('0x0'));var _=require(_0xd4ac('0x1'));var moment=require(_0xd4ac('0x2'));var CronJobManager=require(_0xd4ac('0x3'));var jayson=require(_0xd4ac('0x4'));var BPromise=require(_0xd4ac('0x5'));var logger=require(_0xd4ac('0x6'))('schedule');var db=require(_0xd4ac('0x7'))['db'];var analyticCustomReportController=require(_0xd4ac('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xd4ac('0x9')][_0xd4ac('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x55a61b,_0x408efc){return function(){logger[_0xd4ac('0xb')](_0xd4ac('0xc'),_0x55a61b[_0xd4ac('0xd')]);var _0xf286b4=!![];var _0x48af09=_0x55a61b[_0xd4ac('0xe')][_0xd4ac('0xf')]();var _0x849f26={'account':_0x48af09,'message':{'from':util[_0xd4ac('0x10')]('\x22%s\x22\x20<%s>',_0x55a61b[_0xd4ac('0xe')][_0xd4ac('0x11')],_0x55a61b[_0xd4ac('0xe')][_0xd4ac('0xd')]||_0x55a61b[_0xd4ac('0xe')][_0xd4ac('0x12')]['user']),'to':_0x55a61b[_0xd4ac('0xd')],'cc':_0x55a61b['cc'],'bcc':_0x55a61b['bcc'],'subject':util['format'](_0xd4ac('0x13'),_0x408efc[_0xd4ac('0x11')],_0x55a61b[_0xd4ac('0x14')],_0x55a61b[_0xd4ac('0x15')])}};var _0x2b4fc0=path[_0xd4ac('0x16')](__dirname,_0xd4ac('0x17'));var _0x621a2d=_0x408efc[_0xd4ac('0x18')];var _0x28743c=util[_0xd4ac('0x10')]('%s.%s',path[_0xd4ac('0x19')](_0x408efc[_0xd4ac('0x18')],path['extname'](_0x408efc[_0xd4ac('0x18')])),_0xd4ac('0x1a'));var _0xe6fd80=path[_0xd4ac('0x16')](_0x2b4fc0,_0x621a2d);var _0x3ae6a7=path[_0xd4ac('0x16')](_0x2b4fc0,_0x28743c);if(fs[_0xd4ac('0x1b')](_0xe6fd80)){_0x408efc['status']='Sent';_0x849f26[_0xd4ac('0x1c')][_0xd4ac('0x1d')]=[{'filename':_0x621a2d,'path':_0xe6fd80}];_0x849f26['message'][_0xd4ac('0x1e')]=util[_0xd4ac('0x10')]('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'](_0x408efc,null,0x2));}else if(fs['existsSync'](_0x3ae6a7)){_0x408efc['status']=_0xd4ac('0x1f');_0x849f26['message'][_0xd4ac('0x1d')]=[{'filename':_0x28743c,'path':_0x3ae6a7}];}else{_0x849f26['message'][_0xd4ac('0x1e')]=_0xd4ac('0x20');if(!_0x55a61b[_0xd4ac('0x21')]){_0xf286b4=![];logger[_0xd4ac('0xb')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0xf286b4){return client['request']('SendMail',_0x849f26)['then'](function(_0xd1def2){if(_0xd1def2[_0xd4ac('0x22')]){return logger[_0xd4ac('0x22')]('error\x20mail',JSON['stringify'](_0xd1def2));}return logger[_0xd4ac('0xb')](_0xd4ac('0x23'));})[_0xd4ac('0x24')](function(_0x1ad761){return logger[_0xd4ac('0x22')]('error\x20mail',JSON[_0xd4ac('0x25')](_0x1ad761));});}};}function handleError(){return function(_0x1f5d8d){return logger['error'](JSON[_0xd4ac('0x25')](_0x1f5d8d));};}function handleResult(_0x425957){return function(_0x1b843e){logger['info']('data',JSON[_0xd4ac('0x25')](_0x1b843e));if(_0x425957[_0xd4ac('0xe')]&&_0x425957[_0xd4ac('0xe')][_0xd4ac('0x12')]&&!_[_0xd4ac('0x26')](_0x425957['email'])){setTimeout(handleSendEmail(_0x425957,_0x1b843e),0x3c*0x3e8);}};}function handleJob(_0x6d9bcc){return function(){try{if(_['isNil'](_0x6d9bcc['subtractNumber'])){return logger[_0xd4ac('0xb')](_0xd4ac('0x27'));}if(_[_0xd4ac('0x26')](_0x6d9bcc[_0xd4ac('0x15')])){return logger[_0xd4ac('0xb')](_0xd4ac('0x28'));}var _0x2cfb71={'startDate':moment()[_0xd4ac('0x29')](_0x6d9bcc[_0xd4ac('0x14')],_0x6d9bcc[_0xd4ac('0x15')])[_0xd4ac('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xd4ac('0x10')](_0xd4ac('0x2a')),'type':_0xd4ac('0x2b'),'output':_0x6d9bcc[_0xd4ac('0x2c')],'name':_0x6d9bcc[_0xd4ac('0x11')]};if(!_[_0xd4ac('0x26')](_0x6d9bcc[_0xd4ac('0x2d')])){logger[_0xd4ac('0xb')](_0xd4ac('0x2e'),_0x6d9bcc[_0xd4ac('0x2d')]);return analyticDefaultReportController[_0xd4ac('0x2f')]({'id':_0x6d9bcc[_0xd4ac('0x2d')]},_0x2cfb71)[_0xd4ac('0x30')](handleResult(_0x6d9bcc))['catch'](handleError());}if(!_[_0xd4ac('0x26')](_0x6d9bcc[_0xd4ac('0x31')])){logger[_0xd4ac('0xb')]('exec\x20custom\x20report\x20id:%s',_0x6d9bcc[_0xd4ac('0x31')]);return analyticCustomReportController['runReport']({'id':_0x6d9bcc[_0xd4ac('0x31')]},_0x2cfb71)[_0xd4ac('0x30')](handleResult(_0x6d9bcc))['catch'](handleError());}}catch(_0x296a30){logger['error'](JSON[_0xd4ac('0x25')](_0x296a30));}return logger[_0xd4ac('0xb')](_0xd4ac('0x32'));};}function getJobs(_0x16db4b){var _0x2e2626={};if(_0x16db4b){_0x2e2626['id']=_0x16db4b;}return db[_0xd4ac('0x33')][_0xd4ac('0x34')]({'where':_0x2e2626,'include':[{'model':db[_0xd4ac('0xe')],'attributes':['id',_0xd4ac('0x11'),_0xd4ac('0xd')],'include':[{'model':db[_0xd4ac('0x35')],'as':_0xd4ac('0x12'),'include':[{'model':db[_0xd4ac('0x36')],'as':_0xd4ac('0x36')}]}]}]})[_0xd4ac('0x30')](function(_0xabfdbf){var _0x102e64=_['keys'](manager['jobs']);var _0x5ebf11=_[_0xd4ac('0x37')](_0xabfdbf,function(_0xddc495){return _0xddc495['id'][_0xd4ac('0x38')]();});var _0x329332=_[_0xd4ac('0x39')](_0xabfdbf,function(_0x41ee88){return _0x41ee88['id'][_0xd4ac('0x38')]();});var _0x33f5cd=_0x16db4b?_0x5ebf11:_[_0xd4ac('0x3a')](_0x5ebf11,_0x102e64);var _0x2f2735=_[_0xd4ac('0x3b')](_0x5ebf11,_0x102e64);var _0x2bcfb4=_[_0xd4ac('0x3a')](_0x102e64,_0x5ebf11);var _0x42de83;var _0x5a3603;for(_0x42de83=0x0;_0x42de83<_0x2bcfb4['length']&&!_0x16db4b;_0x42de83+=0x1){_0x5a3603=_0x2bcfb4[_0x42de83][_0xd4ac('0x38')]();if(manager[_0xd4ac('0x3c')](_0x5a3603)){manager[_0xd4ac('0x3d')](_0x5a3603);manager[_0xd4ac('0x3e')](_0x5a3603);logger[_0xd4ac('0xb')]('delete\x20cron',_0x5a3603);}}logger[_0xd4ac('0xb')]('toRun',JSON[_0xd4ac('0x25')](_0x33f5cd));for(_0x42de83=0x0;_0x42de83<_0x33f5cd[_0xd4ac('0x3f')];_0x42de83+=0x1){_0x5a3603=_0x33f5cd[_0x42de83]['toString']();logger[_0xd4ac('0xb')]('index',_0x5a3603);if(_0x16db4b){logger[_0xd4ac('0xb')](_0xd4ac('0x40'),_0x16db4b);logger[_0xd4ac('0xb')](JSON[_0xd4ac('0x25')](_0x329332[_0x5a3603]));BPromise[_0xd4ac('0x41')]()[_0xd4ac('0x30')](handleJob(_0x329332[_0x5a3603]));logger[_0xd4ac('0xb')](_0xd4ac('0x42'),_0x329332[_0x5a3603][_0xd4ac('0x11')],_0x329332[_0x5a3603]['cron']);}else if(_0x329332[_0x5a3603][_0xd4ac('0x43')]&&_0x329332[_0x5a3603]['active']&&moment()['isBetween'](_0x329332[_0x5a3603][_0xd4ac('0x44')],_0x329332[_0x5a3603][_0xd4ac('0x45')])){manager[_0xd4ac('0x46')](_0x5a3603,_0x329332[_0x5a3603][_0xd4ac('0x43')],handleJob(_0x329332[_0x5a3603]));manager['start'](_0x5a3603);logger[_0xd4ac('0xb')]('add\x20cron',_0x329332[_0x5a3603][_0xd4ac('0x11')],_0x329332[_0x5a3603][_0xd4ac('0x43')]);}else if(manager[_0xd4ac('0x3c')](_0x5a3603)){manager[_0xd4ac('0x3d')](_0x5a3603);manager[_0xd4ac('0x3e')](_0x5a3603);logger['info'](_0xd4ac('0x47'),_0x329332[_0x5a3603]['name'],_0x329332[_0x5a3603]['cron']);}}for(_0x42de83=0x0,_0x5a3603;_0x42de83<_0x2f2735[_0xd4ac('0x3f')]&&!_0x16db4b;_0x42de83+=0x1){_0x5a3603=_0x2f2735[_0x42de83][_0xd4ac('0x38')]();if(manager[_0xd4ac('0x3c')](_0x5a3603)){if(_0x329332[_0x5a3603][_0xd4ac('0x43')]&&_0x329332[_0x5a3603]['active']&&moment()[_0xd4ac('0x48')](_0x329332[_0x5a3603][_0xd4ac('0x44')],_0x329332[_0x5a3603]['endAt'])){manager[_0xd4ac('0x49')](_0x5a3603,_0x329332[_0x5a3603][_0xd4ac('0x43')],handleJob(_0x329332[_0x5a3603]));logger['info'](_0xd4ac('0x4a'),_0x329332[_0x5a3603][_0xd4ac('0x11')],_0x329332[_0x5a3603][_0xd4ac('0x43')]);}else{manager['stop'](_0x5a3603);manager[_0xd4ac('0x3e')](_0x5a3603);logger[_0xd4ac('0xb')]('stop\x20cron',_0x329332[_0x5a3603]['name'],_0x329332[_0x5a3603][_0xd4ac('0x43')]);}}}})[_0xd4ac('0x24')](function(_0x2d0202){logger[_0xd4ac('0x22')](JSON['stringify'](_0x2d0202));});}exports['run']=function(_0x44b448){return getJobs(_0x44b448);};exports[_0xd4ac('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};