Built motion from commit da617fac.|2.6.6
[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 _0x13a0=['extname','zip','existsSync','status','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','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','Smtp','isNil','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','catch','no\x20report\x20id','Schedule','MailServerOut','CloudProvider','keys','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','cron','active','isBetween','startAt','add','start','endAt','update\x20cron','stop\x20cron','run','util','lodash','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','\x22%s\x22\x20<%s>','MailAccount','name','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','format','%s.%s'];(function(_0x47e691,_0x450beb){var _0x14380e=function(_0x2d39d1){while(--_0x2d39d1){_0x47e691['push'](_0x47e691['shift']());}};_0x14380e(++_0x450beb);}(_0x13a0,0x128));var _0x013a=function(_0x2d92d0,_0x512de7){_0x2d92d0=_0x2d92d0-0x0;var _0x5752e4=_0x13a0[_0x2d92d0];return _0x5752e4;};'use strict';var fs=require('fs');var util=require(_0x013a('0x0'));var path=require('path');var _=require(_0x013a('0x1'));var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require(_0x013a('0x2'));var BPromise=require(_0x013a('0x3'));var logger=require(_0x013a('0x4'))(_0x013a('0x5'));var db=require(_0x013a('0x6'))['db'];var analyticCustomReportController=require(_0x013a('0x7'));var analyticDefaultReportController=require(_0x013a('0x8'));var client=jayson[_0x013a('0x9')][_0x013a('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4c926b,_0x13aeca){return function(){logger[_0x013a('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x4c926b[_0x013a('0xc')]);var _0x151c42=!![];var _0x5ad311=_0x4c926b['MailAccount']['getSmtpOptions']();var _0x2d08ce={'account':_0x5ad311,'message':{'from':util['format'](_0x013a('0xd'),_0x4c926b[_0x013a('0xe')][_0x013a('0xf')],_0x4c926b[_0x013a('0xe')][_0x013a('0xc')]||_0x4c926b[_0x013a('0xe')]['Smtp']['user']),'to':_0x4c926b[_0x013a('0xc')],'cc':_0x4c926b['cc'],'bcc':_0x4c926b['bcc'],'subject':util['format'](_0x013a('0x10'),_0x13aeca[_0x013a('0xf')],_0x4c926b[_0x013a('0x11')],_0x4c926b[_0x013a('0x12')])}};var _0x1742d0=path[_0x013a('0x13')](__dirname,_0x013a('0x14'));var _0x320504=_0x13aeca[_0x013a('0x15')];var _0x3889ec=util[_0x013a('0x16')](_0x013a('0x17'),path['basename'](_0x13aeca[_0x013a('0x15')],path[_0x013a('0x18')](_0x13aeca[_0x013a('0x15')])),_0x013a('0x19'));var _0xbb0599=path[_0x013a('0x13')](_0x1742d0,_0x320504);var _0x38153d=path[_0x013a('0x13')](_0x1742d0,_0x3889ec);if(fs[_0x013a('0x1a')](_0xbb0599)){_0x13aeca[_0x013a('0x1b')]='Sent';_0x2d08ce[_0x013a('0x1c')][_0x013a('0x1d')]=[{'filename':_0x320504,'path':_0xbb0599}];_0x2d08ce[_0x013a('0x1c')][_0x013a('0x1e')]=util[_0x013a('0x16')](_0x013a('0x1f'),JSON[_0x013a('0x20')](_0x13aeca,null,0x2));}else if(fs[_0x013a('0x1a')](_0x38153d)){_0x13aeca[_0x013a('0x1b')]=_0x013a('0x21');_0x2d08ce[_0x013a('0x1c')][_0x013a('0x1d')]=[{'filename':_0x3889ec,'path':_0x38153d}];}else{_0x2d08ce[_0x013a('0x1c')][_0x013a('0x1e')]=_0x013a('0x22');if(!_0x4c926b['sendIfEmpty']){_0x151c42=![];logger['info'](_0x013a('0x23'));}}if(_0x151c42){return client[_0x013a('0x24')](_0x013a('0x25'),_0x2d08ce)[_0x013a('0x26')](function(_0x3ff0f3){if(_0x3ff0f3[_0x013a('0x27')]){return logger[_0x013a('0x27')](_0x013a('0x28'),JSON['stringify'](_0x3ff0f3));}return logger[_0x013a('0xb')](_0x013a('0x29'));})['catch'](function(_0x11191f){return logger[_0x013a('0x27')](_0x013a('0x28'),JSON[_0x013a('0x20')](_0x11191f));});}};}function handleError(){return function(_0x121662){return logger['error'](JSON['stringify'](_0x121662));};}function handleResult(_0x12281a){return function(_0x399411){logger['info']('data',JSON[_0x013a('0x20')](_0x399411));if(_0x12281a[_0x013a('0xe')]&&_0x12281a[_0x013a('0xe')][_0x013a('0x2a')]&&!_[_0x013a('0x2b')](_0x12281a[_0x013a('0xc')])){setTimeout(handleSendEmail(_0x12281a,_0x399411),0x3c*0x3e8);}};}function handleJob(_0x57c2b9){return function(){try{if(_['isNil'](_0x57c2b9['subtractNumber'])){return logger[_0x013a('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x013a('0x2b')](_0x57c2b9[_0x013a('0x12')])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x209656={'startDate':moment()['subtract'](_0x57c2b9[_0x013a('0x11')],_0x57c2b9[_0x013a('0x12')])['format'](_0x013a('0x2c')),'endDate':moment()[_0x013a('0x16')](_0x013a('0x2c')),'type':'scheduled','output':_0x57c2b9[_0x013a('0x2d')],'name':_0x57c2b9[_0x013a('0xf')]};if(!_[_0x013a('0x2b')](_0x57c2b9['DefaultReportId'])){logger[_0x013a('0xb')](_0x013a('0x2e'),_0x57c2b9[_0x013a('0x2f')]);return analyticDefaultReportController[_0x013a('0x30')]({'id':_0x57c2b9[_0x013a('0x2f')]},_0x209656)[_0x013a('0x26')](handleResult(_0x57c2b9))['catch'](handleError());}if(!_[_0x013a('0x2b')](_0x57c2b9['CustomReportId'])){logger[_0x013a('0xb')](_0x013a('0x31'),_0x57c2b9[_0x013a('0x32')]);return analyticCustomReportController['runReport']({'id':_0x57c2b9[_0x013a('0x32')]},_0x209656)[_0x013a('0x26')](handleResult(_0x57c2b9))[_0x013a('0x33')](handleError());}}catch(_0x77d2c2){logger[_0x013a('0x27')](JSON[_0x013a('0x20')](_0x77d2c2));}return logger[_0x013a('0xb')](_0x013a('0x34'));};}function getJobs(_0x1b068c){var _0xcfb601={};if(_0x1b068c){_0xcfb601['id']=_0x1b068c;}return db[_0x013a('0x35')]['findAll']({'where':_0xcfb601,'include':[{'model':db['MailAccount'],'attributes':['id',_0x013a('0xf'),_0x013a('0xc')],'include':[{'model':db[_0x013a('0x36')],'as':_0x013a('0x2a'),'include':[{'model':db['CloudProvider'],'as':_0x013a('0x37')}]}]}]})['then'](function(_0x503d62){var _0x13ceb8=_[_0x013a('0x38')](manager['jobs']);var _0xf7938c=_[_0x013a('0x39')](_0x503d62,function(_0xa5e243){return _0xa5e243['id'][_0x013a('0x3a')]();});var _0x21a091=_[_0x013a('0x3b')](_0x503d62,function(_0x2b6edb){return _0x2b6edb['id'][_0x013a('0x3a')]();});var _0x10caa7=_0x1b068c?_0xf7938c:_[_0x013a('0x3c')](_0xf7938c,_0x13ceb8);var _0x5949cd=_[_0x013a('0x3d')](_0xf7938c,_0x13ceb8);var _0x1a43b4=_['difference'](_0x13ceb8,_0xf7938c);var _0x143fdf;var _0x9e5408;for(_0x143fdf=0x0;_0x143fdf<_0x1a43b4[_0x013a('0x3e')]&&!_0x1b068c;_0x143fdf+=0x1){_0x9e5408=_0x1a43b4[_0x143fdf][_0x013a('0x3a')]();if(manager[_0x013a('0x3f')](_0x9e5408)){manager[_0x013a('0x40')](_0x9e5408);manager[_0x013a('0x41')](_0x9e5408);logger[_0x013a('0xb')](_0x013a('0x42'),_0x9e5408);}}logger[_0x013a('0xb')](_0x013a('0x43'),JSON['stringify'](_0x10caa7));for(_0x143fdf=0x0;_0x143fdf<_0x10caa7[_0x013a('0x3e')];_0x143fdf+=0x1){_0x9e5408=_0x10caa7[_0x143fdf][_0x013a('0x3a')]();logger[_0x013a('0xb')](_0x013a('0x44'),_0x9e5408);if(_0x1b068c){logger[_0x013a('0xb')](_0x013a('0x45'),_0x1b068c);logger[_0x013a('0xb')](JSON['stringify'](_0x21a091[_0x9e5408]));BPromise['resolve']()[_0x013a('0x26')](handleJob(_0x21a091[_0x9e5408]));logger['info']('run\x20job',_0x21a091[_0x9e5408]['name'],_0x21a091[_0x9e5408]['cron']);}else if(_0x21a091[_0x9e5408][_0x013a('0x46')]&&_0x21a091[_0x9e5408][_0x013a('0x47')]&&moment()[_0x013a('0x48')](_0x21a091[_0x9e5408][_0x013a('0x49')],_0x21a091[_0x9e5408]['endAt'])){manager[_0x013a('0x4a')](_0x9e5408,_0x21a091[_0x9e5408][_0x013a('0x46')],handleJob(_0x21a091[_0x9e5408]));manager[_0x013a('0x4b')](_0x9e5408);logger['info']('add\x20cron',_0x21a091[_0x9e5408][_0x013a('0xf')],_0x21a091[_0x9e5408][_0x013a('0x46')]);}else if(manager['exists'](_0x9e5408)){manager[_0x013a('0x40')](_0x9e5408);manager[_0x013a('0x41')](_0x9e5408);logger[_0x013a('0xb')]('stop\x20cron',_0x21a091[_0x9e5408][_0x013a('0xf')],_0x21a091[_0x9e5408]['cron']);}}for(_0x143fdf=0x0,_0x9e5408;_0x143fdf<_0x5949cd[_0x013a('0x3e')]&&!_0x1b068c;_0x143fdf+=0x1){_0x9e5408=_0x5949cd[_0x143fdf][_0x013a('0x3a')]();if(manager[_0x013a('0x3f')](_0x9e5408)){if(_0x21a091[_0x9e5408][_0x013a('0x46')]&&_0x21a091[_0x9e5408][_0x013a('0x47')]&&moment()[_0x013a('0x48')](_0x21a091[_0x9e5408][_0x013a('0x49')],_0x21a091[_0x9e5408][_0x013a('0x4c')])){manager['update'](_0x9e5408,_0x21a091[_0x9e5408][_0x013a('0x46')],handleJob(_0x21a091[_0x9e5408]));logger[_0x013a('0xb')](_0x013a('0x4d'),_0x21a091[_0x9e5408]['name'],_0x21a091[_0x9e5408]['cron']);}else{manager[_0x013a('0x40')](_0x9e5408);manager[_0x013a('0x41')](_0x9e5408);logger[_0x013a('0xb')](_0x013a('0x4e'),_0x21a091[_0x9e5408][_0x013a('0xf')],_0x21a091[_0x9e5408][_0x013a('0x46')]);}}}})[_0x013a('0x33')](function(_0x548583){logger[_0x013a('0x27')](JSON[_0x013a('0x20')](_0x548583));});}exports[_0x013a('0x4f')]=function(_0x2e94a5){return getJobs(_0x2e94a5);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};