07ab3307d236d11b39946cb24e63d871e1f2c371
[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 _0x6937=['../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','name','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','%s.%s','basename','extname','savename','zip','existsSync','status','Sent','message','attachments','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','then','error','error\x20mail','info','email\x20sent','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','runReport','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','resolve','cron','isBetween','startAt','add','start','stop\x20cron','endAt','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','../logger','schedule','../../mysqldb'];(function(_0xafdb63,_0x707624){var _0x5c5369=function(_0x5eaaea){while(--_0x5eaaea){_0xafdb63['push'](_0xafdb63['shift']());}};_0x5c5369(++_0x707624);}(_0x6937,0x1af));var _0x7693=function(_0x36de10,_0xfe25e8){_0x36de10=_0x36de10-0x0;var _0x58100f=_0x6937[_0x36de10];return _0x58100f;};'use strict';var fs=require('fs');var util=require(_0x7693('0x0'));var path=require(_0x7693('0x1'));var _=require(_0x7693('0x2'));var moment=require(_0x7693('0x3'));var CronJobManager=require(_0x7693('0x4'));var jayson=require(_0x7693('0x5'));var BPromise=require('bluebird');var logger=require(_0x7693('0x6'))(_0x7693('0x7'));var db=require(_0x7693('0x8'))['db'];var analyticCustomReportController=require(_0x7693('0x9'));var analyticDefaultReportController=require(_0x7693('0xa'));var client=jayson[_0x7693('0xb')][_0x7693('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x378277,_0x44c596){return function(){logger['info'](_0x7693('0xd'),_0x378277[_0x7693('0xe')]);var _0x393bd5=!![];var _0x2b9b34={'tls':{'rejectUnauthorized':![]}};if(_0x378277[_0x7693('0xf')][_0x7693('0x10')]['service']){_0x2b9b34[_0x7693('0x11')]=_0x378277[_0x7693('0xf')][_0x7693('0x10')]['service'];}else{_0x2b9b34['host']=_0x378277[_0x7693('0xf')][_0x7693('0x10')]['host'];_0x2b9b34[_0x7693('0x12')]=_0x378277[_0x7693('0xf')]['Smtp']['port'];_0x2b9b34[_0x7693('0x13')]=_0x378277['MailAccount']['Smtp'][_0x7693('0x13')];}if(_0x378277[_0x7693('0xf')]['Smtp'][_0x7693('0x14')]){_0x2b9b34[_0x7693('0x15')]={'user':_0x378277[_0x7693('0xf')][_0x7693('0x10')][_0x7693('0x16')],'pass':_0x378277['MailAccount'][_0x7693('0x10')][_0x7693('0x17')]};}var _0x3456bd={'account':_0x2b9b34,'message':{'from':util[_0x7693('0x18')](_0x7693('0x19'),_0x378277[_0x7693('0xf')][_0x7693('0x1a')],_0x378277[_0x7693('0xf')]['email']||_0x378277['MailAccount'][_0x7693('0x10')][_0x7693('0x16')]),'to':_0x378277[_0x7693('0xe')],'cc':_0x378277['cc'],'bcc':_0x378277['bcc'],'subject':util[_0x7693('0x18')](_0x7693('0x1b'),_0x44c596[_0x7693('0x1a')],_0x378277[_0x7693('0x1c')],_0x378277[_0x7693('0x1d')])}};var _0x55ca6d=path[_0x7693('0x1e')](__dirname,_0x7693('0x1f'));var _0x5a6f55=_0x44c596['savename'];var _0x3c167d=util[_0x7693('0x18')](_0x7693('0x20'),path[_0x7693('0x21')](_0x44c596['savename'],path[_0x7693('0x22')](_0x44c596[_0x7693('0x23')])),_0x7693('0x24'));var _0x326629=path[_0x7693('0x1e')](_0x55ca6d,_0x5a6f55);var _0x38c5ba=path['join'](_0x55ca6d,_0x3c167d);if(fs[_0x7693('0x25')](_0x326629)){_0x44c596[_0x7693('0x26')]=_0x7693('0x27');_0x3456bd[_0x7693('0x28')][_0x7693('0x29')]=[{'filename':_0x5a6f55,'path':_0x326629}];_0x3456bd['message']['text']=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x7693('0x2a')](_0x44c596,null,0x2));}else if(fs['existsSync'](_0x38c5ba)){_0x44c596['status']=_0x7693('0x27');_0x3456bd['message'][_0x7693('0x29')]=[{'filename':_0x3c167d,'path':_0x38c5ba}];}else{_0x3456bd['message']['text']=_0x7693('0x2b');if(!_0x378277[_0x7693('0x2c')]){_0x393bd5=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}if(_0x393bd5){return client[_0x7693('0x2d')]('SendMail',_0x3456bd)[_0x7693('0x2e')](function(_0x2d5bcd){if(_0x2d5bcd[_0x7693('0x2f')]){return logger[_0x7693('0x2f')](_0x7693('0x30'),JSON[_0x7693('0x2a')](_0x2d5bcd));}return logger[_0x7693('0x31')](_0x7693('0x32'));})['catch'](function(_0x50f930){return logger[_0x7693('0x2f')]('error\x20mail',JSON['stringify'](_0x50f930));});}};}function handleError(){return function(_0x41cd00){return logger[_0x7693('0x2f')](JSON[_0x7693('0x2a')](_0x41cd00));};}function handleResult(_0x11adac){return function(_0x30037a){logger['info'](_0x7693('0x33'),JSON['stringify'](_0x30037a));if(_0x11adac['MailAccount']&&_0x11adac['MailAccount'][_0x7693('0x10')]&&!_[_0x7693('0x34')](_0x11adac[_0x7693('0xe')])){setTimeout(handleSendEmail(_0x11adac,_0x30037a),0x3c*0x3e8);}};}function handleJob(_0x307fda){return function(){try{if(_[_0x7693('0x34')](_0x307fda[_0x7693('0x1c')])){return logger[_0x7693('0x31')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x307fda['subtractUnit'])){return logger[_0x7693('0x31')](_0x7693('0x35'));}var _0x583abc={'startDate':moment()[_0x7693('0x36')](_0x307fda[_0x7693('0x1c')],_0x307fda[_0x7693('0x1d')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x7693('0x18')](_0x7693('0x37')),'type':'scheduled','output':_0x307fda['output'],'name':_0x307fda[_0x7693('0x1a')]};if(!_['isNil'](_0x307fda[_0x7693('0x38')])){logger[_0x7693('0x31')]('exec\x20defaul\x20report\x20id:%s',_0x307fda[_0x7693('0x38')]);return analyticDefaultReportController[_0x7693('0x39')]({'id':_0x307fda[_0x7693('0x38')]},_0x583abc)[_0x7693('0x2e')](handleResult(_0x307fda))[_0x7693('0x3a')](handleError());}if(!_[_0x7693('0x34')](_0x307fda['CustomReportId'])){logger['info'](_0x7693('0x3b'),_0x307fda[_0x7693('0x3c')]);return analyticCustomReportController[_0x7693('0x39')]({'id':_0x307fda[_0x7693('0x3c')]},_0x583abc)[_0x7693('0x2e')](handleResult(_0x307fda))[_0x7693('0x3a')](handleError());}}catch(_0x43334c){logger[_0x7693('0x2f')](JSON[_0x7693('0x2a')](_0x43334c));}return logger[_0x7693('0x31')](_0x7693('0x3d'));};}function getJobs(_0x1e47d9){var _0xfb1d50={};if(_0x1e47d9){_0xfb1d50['id']=_0x1e47d9;}return db[_0x7693('0x3e')][_0x7693('0x3f')]({'where':_0xfb1d50,'include':[{'model':db[_0x7693('0xf')],'attributes':['id',_0x7693('0x1a'),_0x7693('0xe')],'include':[{'model':db['MailServerOut'],'as':_0x7693('0x10')}]}]})['then'](function(_0x3d0327){var _0x4a91c1=_[_0x7693('0x40')](manager[_0x7693('0x41')]);var _0x3cdd0a=_[_0x7693('0x42')](_0x3d0327,function(_0xae502c){return _0xae502c['id'][_0x7693('0x43')]();});var _0x217ab1=_[_0x7693('0x44')](_0x3d0327,function(_0x4ca635){return _0x4ca635['id'][_0x7693('0x43')]();});var _0x313c1f=_0x1e47d9?_0x3cdd0a:_[_0x7693('0x45')](_0x3cdd0a,_0x4a91c1);var _0x38b35d=_[_0x7693('0x46')](_0x3cdd0a,_0x4a91c1);var _0x5f3912=_[_0x7693('0x45')](_0x4a91c1,_0x3cdd0a);var _0x24a39c;var _0x39045f;for(_0x24a39c=0x0;_0x24a39c<_0x5f3912[_0x7693('0x47')]&&!_0x1e47d9;_0x24a39c+=0x1){_0x39045f=_0x5f3912[_0x24a39c][_0x7693('0x43')]();if(manager[_0x7693('0x48')](_0x39045f)){manager[_0x7693('0x49')](_0x39045f);manager[_0x7693('0x4a')](_0x39045f);logger[_0x7693('0x31')](_0x7693('0x4b'),_0x39045f);}}logger['info'](_0x7693('0x4c'),JSON[_0x7693('0x2a')](_0x313c1f));for(_0x24a39c=0x0;_0x24a39c<_0x313c1f[_0x7693('0x47')];_0x24a39c+=0x1){_0x39045f=_0x313c1f[_0x24a39c][_0x7693('0x43')]();logger[_0x7693('0x31')]('index',_0x39045f);if(_0x1e47d9){logger[_0x7693('0x31')](_0x7693('0x4d'),_0x1e47d9);logger[_0x7693('0x31')](JSON['stringify'](_0x217ab1[_0x39045f]));BPromise[_0x7693('0x4e')]()['then'](handleJob(_0x217ab1[_0x39045f]));logger[_0x7693('0x31')]('run\x20job',_0x217ab1[_0x39045f][_0x7693('0x1a')],_0x217ab1[_0x39045f][_0x7693('0x4f')]);}else if(_0x217ab1[_0x39045f][_0x7693('0x4f')]&&_0x217ab1[_0x39045f]['active']&&moment()[_0x7693('0x50')](_0x217ab1[_0x39045f][_0x7693('0x51')],_0x217ab1[_0x39045f]['endAt'])){manager[_0x7693('0x52')](_0x39045f,_0x217ab1[_0x39045f][_0x7693('0x4f')],handleJob(_0x217ab1[_0x39045f]));manager[_0x7693('0x53')](_0x39045f);logger[_0x7693('0x31')]('add\x20cron',_0x217ab1[_0x39045f][_0x7693('0x1a')],_0x217ab1[_0x39045f]['cron']);}else if(manager['exists'](_0x39045f)){manager[_0x7693('0x49')](_0x39045f);manager[_0x7693('0x4a')](_0x39045f);logger[_0x7693('0x31')](_0x7693('0x54'),_0x217ab1[_0x39045f][_0x7693('0x1a')],_0x217ab1[_0x39045f][_0x7693('0x4f')]);}}for(_0x24a39c=0x0,_0x39045f;_0x24a39c<_0x38b35d[_0x7693('0x47')]&&!_0x1e47d9;_0x24a39c+=0x1){_0x39045f=_0x38b35d[_0x24a39c][_0x7693('0x43')]();if(manager[_0x7693('0x48')](_0x39045f)){if(_0x217ab1[_0x39045f][_0x7693('0x4f')]&&_0x217ab1[_0x39045f]['active']&&moment()[_0x7693('0x50')](_0x217ab1[_0x39045f]['startAt'],_0x217ab1[_0x39045f][_0x7693('0x55')])){manager['update'](_0x39045f,_0x217ab1[_0x39045f]['cron'],handleJob(_0x217ab1[_0x39045f]));logger['info'](_0x7693('0x56'),_0x217ab1[_0x39045f]['name'],_0x217ab1[_0x39045f][_0x7693('0x4f')]);}else{manager['stop'](_0x39045f);manager[_0x7693('0x4a')](_0x39045f);logger['info'](_0x7693('0x54'),_0x217ab1[_0x39045f][_0x7693('0x1a')],_0x217ab1[_0x39045f][_0x7693('0x4f')]);}}}})['catch'](function(_0x11ab0c){logger[_0x7693('0x2f')](JSON['stringify'](_0x11ab0c));});}exports[_0x7693('0x57')]=function(_0x951f50){return getJobs(_0x951f50);};exports[_0x7693('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};