Built motion from commit 092f8824.|2.5.49
[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 _0x2fab=['subtractNumber','%s.%s','basename','savename','zip','join','existsSync','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','status','Sent','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','email\x20sent','catch','error\x20mail','data','isNil','subtractUnit','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','CloudProvider','keys','jobs','map','toString','keyBy','difference','length','exists','delete\x20cron','index','my\x20id','resolve','cron','active','startAt','endAt','add\x20cron','deleteJob','stop\x20cron','isBetween','update','update\x20cron','stop','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','Smtp','format','Report\x20%s\x20last\x20%s\x20%s'];(function(_0x3d4876,_0x366386){var _0x58ca9d=function(_0x5bd045){while(--_0x5bd045){_0x3d4876['push'](_0x3d4876['shift']());}};_0x58ca9d(++_0x366386);}(_0x2fab,0x123));var _0xb2fa=function(_0x37f68a,_0x533cd2){_0x37f68a=_0x37f68a-0x0;var _0x2fe8cb=_0x2fab[_0x37f68a];return _0x2fe8cb;};'use strict';var fs=require('fs');var util=require(_0xb2fa('0x0'));var path=require(_0xb2fa('0x1'));var _=require(_0xb2fa('0x2'));var moment=require(_0xb2fa('0x3'));var CronJobManager=require(_0xb2fa('0x4'));var jayson=require(_0xb2fa('0x5'));var BPromise=require(_0xb2fa('0x6'));var logger=require(_0xb2fa('0x7'))(_0xb2fa('0x8'));var db=require(_0xb2fa('0x9'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xb2fa('0xa'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1467b2,_0x5f3f43){return function(){logger[_0xb2fa('0xb')](_0xb2fa('0xc'),_0x1467b2[_0xb2fa('0xd')]);var _0x59e533=!![];var _0x56e680=_0x1467b2[_0xb2fa('0xe')][_0xb2fa('0xf')]();var _0x6bda48={'account':_0x56e680,'message':{'from':util['format'](_0xb2fa('0x10'),_0x1467b2[_0xb2fa('0xe')][_0xb2fa('0x11')],_0x1467b2['MailAccount'][_0xb2fa('0xd')]||_0x1467b2[_0xb2fa('0xe')][_0xb2fa('0x12')]['user']),'to':_0x1467b2['email'],'cc':_0x1467b2['cc'],'bcc':_0x1467b2['bcc'],'subject':util[_0xb2fa('0x13')](_0xb2fa('0x14'),_0x5f3f43[_0xb2fa('0x11')],_0x1467b2[_0xb2fa('0x15')],_0x1467b2['subtractUnit'])}};var _0x2e9f1f=path['join'](__dirname,'../../files/reports');var _0x3f2e8d=_0x5f3f43['savename'];var _0x377679=util[_0xb2fa('0x13')](_0xb2fa('0x16'),path[_0xb2fa('0x17')](_0x5f3f43[_0xb2fa('0x18')],path['extname'](_0x5f3f43[_0xb2fa('0x18')])),_0xb2fa('0x19'));var _0x4ae390=path[_0xb2fa('0x1a')](_0x2e9f1f,_0x3f2e8d);var _0x3b8500=path[_0xb2fa('0x1a')](_0x2e9f1f,_0x377679);if(fs[_0xb2fa('0x1b')](_0x4ae390)){_0x5f3f43['status']='Sent';_0x6bda48[_0xb2fa('0x1c')][_0xb2fa('0x1d')]=[{'filename':_0x3f2e8d,'path':_0x4ae390}];_0x6bda48[_0xb2fa('0x1c')][_0xb2fa('0x1e')]=util['format'](_0xb2fa('0x1f'),JSON[_0xb2fa('0x20')](_0x5f3f43,null,0x2));}else if(fs[_0xb2fa('0x1b')](_0x3b8500)){_0x5f3f43[_0xb2fa('0x21')]=_0xb2fa('0x22');_0x6bda48['message'][_0xb2fa('0x1d')]=[{'filename':_0x377679,'path':_0x3b8500}];}else{_0x6bda48[_0xb2fa('0x1c')][_0xb2fa('0x1e')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x1467b2[_0xb2fa('0x23')]){_0x59e533=![];logger[_0xb2fa('0xb')](_0xb2fa('0x24'));}}if(_0x59e533){return client[_0xb2fa('0x25')](_0xb2fa('0x26'),_0x6bda48)['then'](function(_0x238850){if(_0x238850['error']){return logger[_0xb2fa('0x27')]('error\x20mail',JSON[_0xb2fa('0x20')](_0x238850));}return logger['info'](_0xb2fa('0x28'));})[_0xb2fa('0x29')](function(_0x1f7c84){return logger[_0xb2fa('0x27')](_0xb2fa('0x2a'),JSON[_0xb2fa('0x20')](_0x1f7c84));});}};}function handleError(){return function(_0x312265){return logger[_0xb2fa('0x27')](JSON[_0xb2fa('0x20')](_0x312265));};}function handleResult(_0x5e8a3d){return function(_0x5d8f57){logger[_0xb2fa('0xb')](_0xb2fa('0x2b'),JSON[_0xb2fa('0x20')](_0x5d8f57));if(_0x5e8a3d[_0xb2fa('0xe')]&&_0x5e8a3d[_0xb2fa('0xe')][_0xb2fa('0x12')]&&!_['isNil'](_0x5e8a3d[_0xb2fa('0xd')])){setTimeout(handleSendEmail(_0x5e8a3d,_0x5d8f57),0x3c*0x3e8);}};}function handleJob(_0x389416){return function(){try{if(_[_0xb2fa('0x2c')](_0x389416['subtractNumber'])){return logger[_0xb2fa('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xb2fa('0x2c')](_0x389416[_0xb2fa('0x2d')])){return logger[_0xb2fa('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0x3961cc={'startDate':moment()[_0xb2fa('0x2e')](_0x389416[_0xb2fa('0x15')],_0x389416[_0xb2fa('0x2d')])[_0xb2fa('0x13')](_0xb2fa('0x2f')),'endDate':moment()[_0xb2fa('0x13')](_0xb2fa('0x2f')),'type':'scheduled','output':_0x389416[_0xb2fa('0x30')],'name':_0x389416['name']};if(!_[_0xb2fa('0x2c')](_0x389416[_0xb2fa('0x31')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x389416[_0xb2fa('0x31')]);return analyticDefaultReportController[_0xb2fa('0x32')]({'id':_0x389416['DefaultReportId']},_0x3961cc)[_0xb2fa('0x33')](handleResult(_0x389416))['catch'](handleError());}if(!_[_0xb2fa('0x2c')](_0x389416[_0xb2fa('0x34')])){logger[_0xb2fa('0xb')](_0xb2fa('0x35'),_0x389416[_0xb2fa('0x34')]);return analyticCustomReportController[_0xb2fa('0x32')]({'id':_0x389416['CustomReportId']},_0x3961cc)[_0xb2fa('0x33')](handleResult(_0x389416))[_0xb2fa('0x29')](handleError());}}catch(_0xa5d6fd){logger[_0xb2fa('0x27')](JSON['stringify'](_0xa5d6fd));}return logger[_0xb2fa('0xb')]('no\x20report\x20id');};}function getJobs(_0x177ba3){var _0x1bc673={};if(_0x177ba3){_0x1bc673['id']=_0x177ba3;}return db['Schedule']['findAll']({'where':_0x1bc673,'include':[{'model':db[_0xb2fa('0xe')],'attributes':['id',_0xb2fa('0x11'),'email'],'include':[{'model':db['MailServerOut'],'as':_0xb2fa('0x12'),'include':[{'model':db['CloudProvider'],'as':_0xb2fa('0x36')}]}]}]})[_0xb2fa('0x33')](function(_0x2c273c){var _0x45636e=_[_0xb2fa('0x37')](manager[_0xb2fa('0x38')]);var _0x44b17b=_[_0xb2fa('0x39')](_0x2c273c,function(_0x298ce8){return _0x298ce8['id'][_0xb2fa('0x3a')]();});var _0x2b59c2=_[_0xb2fa('0x3b')](_0x2c273c,function(_0xb51e9d){return _0xb51e9d['id'][_0xb2fa('0x3a')]();});var _0x29a206=_0x177ba3?_0x44b17b:_[_0xb2fa('0x3c')](_0x44b17b,_0x45636e);var _0x5032b6=_['intersection'](_0x44b17b,_0x45636e);var _0xb1b9d0=_[_0xb2fa('0x3c')](_0x45636e,_0x44b17b);var _0x2aa6bc;var _0x335508;for(_0x2aa6bc=0x0;_0x2aa6bc<_0xb1b9d0[_0xb2fa('0x3d')]&&!_0x177ba3;_0x2aa6bc+=0x1){_0x335508=_0xb1b9d0[_0x2aa6bc]['toString']();if(manager[_0xb2fa('0x3e')](_0x335508)){manager['stop'](_0x335508);manager['deleteJob'](_0x335508);logger[_0xb2fa('0xb')](_0xb2fa('0x3f'),_0x335508);}}logger[_0xb2fa('0xb')]('toRun',JSON[_0xb2fa('0x20')](_0x29a206));for(_0x2aa6bc=0x0;_0x2aa6bc<_0x29a206[_0xb2fa('0x3d')];_0x2aa6bc+=0x1){_0x335508=_0x29a206[_0x2aa6bc][_0xb2fa('0x3a')]();logger[_0xb2fa('0xb')](_0xb2fa('0x40'),_0x335508);if(_0x177ba3){logger[_0xb2fa('0xb')](_0xb2fa('0x41'),_0x177ba3);logger['info'](JSON[_0xb2fa('0x20')](_0x2b59c2[_0x335508]));BPromise[_0xb2fa('0x42')]()[_0xb2fa('0x33')](handleJob(_0x2b59c2[_0x335508]));logger[_0xb2fa('0xb')]('run\x20job',_0x2b59c2[_0x335508][_0xb2fa('0x11')],_0x2b59c2[_0x335508][_0xb2fa('0x43')]);}else if(_0x2b59c2[_0x335508]['cron']&&_0x2b59c2[_0x335508][_0xb2fa('0x44')]&&moment()['isBetween'](_0x2b59c2[_0x335508][_0xb2fa('0x45')],_0x2b59c2[_0x335508][_0xb2fa('0x46')])){manager['add'](_0x335508,_0x2b59c2[_0x335508][_0xb2fa('0x43')],handleJob(_0x2b59c2[_0x335508]));manager['start'](_0x335508);logger[_0xb2fa('0xb')](_0xb2fa('0x47'),_0x2b59c2[_0x335508][_0xb2fa('0x11')],_0x2b59c2[_0x335508]['cron']);}else if(manager['exists'](_0x335508)){manager['stop'](_0x335508);manager[_0xb2fa('0x48')](_0x335508);logger[_0xb2fa('0xb')](_0xb2fa('0x49'),_0x2b59c2[_0x335508][_0xb2fa('0x11')],_0x2b59c2[_0x335508][_0xb2fa('0x43')]);}}for(_0x2aa6bc=0x0,_0x335508;_0x2aa6bc<_0x5032b6[_0xb2fa('0x3d')]&&!_0x177ba3;_0x2aa6bc+=0x1){_0x335508=_0x5032b6[_0x2aa6bc]['toString']();if(manager['exists'](_0x335508)){if(_0x2b59c2[_0x335508][_0xb2fa('0x43')]&&_0x2b59c2[_0x335508][_0xb2fa('0x44')]&&moment()[_0xb2fa('0x4a')](_0x2b59c2[_0x335508][_0xb2fa('0x45')],_0x2b59c2[_0x335508][_0xb2fa('0x46')])){manager[_0xb2fa('0x4b')](_0x335508,_0x2b59c2[_0x335508][_0xb2fa('0x43')],handleJob(_0x2b59c2[_0x335508]));logger[_0xb2fa('0xb')](_0xb2fa('0x4c'),_0x2b59c2[_0x335508]['name'],_0x2b59c2[_0x335508]['cron']);}else{manager[_0xb2fa('0x4d')](_0x335508);manager[_0xb2fa('0x48')](_0x335508);logger[_0xb2fa('0xb')]('stop\x20cron',_0x2b59c2[_0x335508][_0xb2fa('0x11')],_0x2b59c2[_0x335508]['cron']);}}}})[_0xb2fa('0x29')](function(_0x9af232){logger[_0xb2fa('0x27')](JSON['stringify'](_0x9af232));});}exports['run']=function(_0x24b6ea){return getJobs(_0x24b6ea);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};