a448e44da08aadf364425f2457134210a7d4abc4
[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 _0x9320=['keyBy','toString','difference','length','stop','deleteJob','toRun','index','resolve','cron','startAt','endAt','add','exists','stop\x20cron','isBetween','update\x20cron','run','start','util','path','lodash','moment','cron-job-manager','jayson/promise','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','Smtp','user','bcc','name','subtractNumber','join','../../files/reports','savename','basename','zip','status','Sent','message','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','existsSync','attachments','empty\x20file,\x20email\x20not\x20sent','error','error\x20mail','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then','catch','CustomReportId','no\x20report\x20id','Schedule','CloudProvider','jobs','map'];(function(_0xb52ec4,_0x594a54){var _0xea5904=function(_0x408f97){while(--_0x408f97){_0xb52ec4['push'](_0xb52ec4['shift']());}};_0xea5904(++_0x594a54);}(_0x9320,0xfd));var _0x0932=function(_0x3c686b,_0x4c01b7){_0x3c686b=_0x3c686b-0x0;var _0x551f82=_0x9320[_0x3c686b];return _0x551f82;};'use strict';var fs=require('fs');var util=require(_0x0932('0x0'));var path=require(_0x0932('0x1'));var _=require(_0x0932('0x2'));var moment=require(_0x0932('0x3'));var CronJobManager=require(_0x0932('0x4'));var jayson=require(_0x0932('0x5'));var BPromise=require('bluebird');var logger=require(_0x0932('0x6'))(_0x0932('0x7'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x0932('0x8'));var analyticDefaultReportController=require(_0x0932('0x9'));var client=jayson[_0x0932('0xa')][_0x0932('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0xe52d8d,_0x2298a1){return function(){logger[_0x0932('0xc')](_0x0932('0xd'),_0xe52d8d[_0x0932('0xe')]);var _0x415d36=!![];var _0x282510=_0xe52d8d['MailAccount'][_0x0932('0xf')]();var _0x41249c={'account':_0x282510,'message':{'from':util[_0x0932('0x10')](_0x0932('0x11'),_0xe52d8d['MailAccount']['name'],_0xe52d8d['MailAccount'][_0x0932('0xe')]||_0xe52d8d[_0x0932('0x12')][_0x0932('0x13')][_0x0932('0x14')]),'to':_0xe52d8d[_0x0932('0xe')],'cc':_0xe52d8d['cc'],'bcc':_0xe52d8d[_0x0932('0x15')],'subject':util[_0x0932('0x10')]('Report\x20%s\x20last\x20%s\x20%s',_0x2298a1[_0x0932('0x16')],_0xe52d8d[_0x0932('0x17')],_0xe52d8d['subtractUnit'])}};var _0x51d540=path[_0x0932('0x18')](__dirname,_0x0932('0x19'));var _0x24bf01=_0x2298a1[_0x0932('0x1a')];var _0x50ceb5=util['format']('%s.%s',path[_0x0932('0x1b')](_0x2298a1[_0x0932('0x1a')],path['extname'](_0x2298a1['savename'])),_0x0932('0x1c'));var _0x1f72dd=path[_0x0932('0x18')](_0x51d540,_0x24bf01);var _0xf61fc9=path[_0x0932('0x18')](_0x51d540,_0x50ceb5);if(fs['existsSync'](_0x1f72dd)){_0x2298a1[_0x0932('0x1d')]=_0x0932('0x1e');_0x41249c[_0x0932('0x1f')]['attachments']=[{'filename':_0x24bf01,'path':_0x1f72dd}];_0x41249c[_0x0932('0x1f')][_0x0932('0x20')]=util['format'](_0x0932('0x21'),JSON[_0x0932('0x22')](_0x2298a1,null,0x2));}else if(fs[_0x0932('0x23')](_0xf61fc9)){_0x2298a1[_0x0932('0x1d')]=_0x0932('0x1e');_0x41249c[_0x0932('0x1f')][_0x0932('0x24')]=[{'filename':_0x50ceb5,'path':_0xf61fc9}];}else{_0x41249c['message'][_0x0932('0x20')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0xe52d8d['sendIfEmpty']){_0x415d36=![];logger[_0x0932('0xc')](_0x0932('0x25'));}}if(_0x415d36){return client['request']('SendMail',_0x41249c)['then'](function(_0x312000){if(_0x312000[_0x0932('0x26')]){return logger['error'](_0x0932('0x27'),JSON[_0x0932('0x22')](_0x312000));}return logger[_0x0932('0xc')](_0x0932('0x28'));})['catch'](function(_0x11b179){return logger['error'](_0x0932('0x27'),JSON['stringify'](_0x11b179));});}};}function handleError(){return function(_0x3b92df){return logger[_0x0932('0x26')](JSON['stringify'](_0x3b92df));};}function handleResult(_0x45410a){return function(_0x748b43){logger[_0x0932('0xc')](_0x0932('0x29'),JSON[_0x0932('0x22')](_0x748b43));if(_0x45410a[_0x0932('0x12')]&&_0x45410a[_0x0932('0x12')]['Smtp']&&!_[_0x0932('0x2a')](_0x45410a['email'])){setTimeout(handleSendEmail(_0x45410a,_0x748b43),0x3c*0x3e8);}};}function handleJob(_0x363bea){return function(){try{if(_['isNil'](_0x363bea[_0x0932('0x17')])){return logger[_0x0932('0xc')](_0x0932('0x2b'));}if(_[_0x0932('0x2a')](_0x363bea[_0x0932('0x2c')])){return logger[_0x0932('0xc')](_0x0932('0x2d'));}var _0x2035c1={'startDate':moment()[_0x0932('0x2e')](_0x363bea['subtractNumber'],_0x363bea['subtractUnit'])[_0x0932('0x10')](_0x0932('0x2f')),'endDate':moment()['format'](_0x0932('0x2f')),'type':'scheduled','output':_0x363bea['output'],'name':_0x363bea[_0x0932('0x16')]};if(!_[_0x0932('0x2a')](_0x363bea[_0x0932('0x30')])){logger[_0x0932('0xc')](_0x0932('0x31'),_0x363bea[_0x0932('0x30')]);return analyticDefaultReportController[_0x0932('0x32')]({'id':_0x363bea[_0x0932('0x30')]},_0x2035c1)[_0x0932('0x33')](handleResult(_0x363bea))[_0x0932('0x34')](handleError());}if(!_['isNil'](_0x363bea[_0x0932('0x35')])){logger[_0x0932('0xc')]('exec\x20custom\x20report\x20id:%s',_0x363bea['CustomReportId']);return analyticCustomReportController[_0x0932('0x32')]({'id':_0x363bea['CustomReportId']},_0x2035c1)[_0x0932('0x33')](handleResult(_0x363bea))['catch'](handleError());}}catch(_0x3aa022){logger[_0x0932('0x26')](JSON[_0x0932('0x22')](_0x3aa022));}return logger[_0x0932('0xc')](_0x0932('0x36'));};}function getJobs(_0x21da61){var _0x4ef5d2={};if(_0x21da61){_0x4ef5d2['id']=_0x21da61;}return db[_0x0932('0x37')]['findAll']({'where':_0x4ef5d2,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0x0932('0xe')],'include':[{'model':db['MailServerOut'],'as':_0x0932('0x13'),'include':[{'model':db[_0x0932('0x38')],'as':_0x0932('0x38')}]}]}]})[_0x0932('0x33')](function(_0xdee1a8){var _0x6bd3cd=_['keys'](manager[_0x0932('0x39')]);var _0xdd32e5=_[_0x0932('0x3a')](_0xdee1a8,function(_0x2a7767){return _0x2a7767['id']['toString']();});var _0x16972c=_[_0x0932('0x3b')](_0xdee1a8,function(_0x5df8e6){return _0x5df8e6['id'][_0x0932('0x3c')]();});var _0x4280f1=_0x21da61?_0xdd32e5:_[_0x0932('0x3d')](_0xdd32e5,_0x6bd3cd);var _0x9c9afa=_['intersection'](_0xdd32e5,_0x6bd3cd);var _0x10a039=_[_0x0932('0x3d')](_0x6bd3cd,_0xdd32e5);var _0x4bd680;var _0x1ce6da;for(_0x4bd680=0x0;_0x4bd680<_0x10a039[_0x0932('0x3e')]&&!_0x21da61;_0x4bd680+=0x1){_0x1ce6da=_0x10a039[_0x4bd680]['toString']();if(manager['exists'](_0x1ce6da)){manager[_0x0932('0x3f')](_0x1ce6da);manager[_0x0932('0x40')](_0x1ce6da);logger[_0x0932('0xc')]('delete\x20cron',_0x1ce6da);}}logger[_0x0932('0xc')](_0x0932('0x41'),JSON[_0x0932('0x22')](_0x4280f1));for(_0x4bd680=0x0;_0x4bd680<_0x4280f1[_0x0932('0x3e')];_0x4bd680+=0x1){_0x1ce6da=_0x4280f1[_0x4bd680][_0x0932('0x3c')]();logger[_0x0932('0xc')](_0x0932('0x42'),_0x1ce6da);if(_0x21da61){logger[_0x0932('0xc')]('my\x20id',_0x21da61);logger[_0x0932('0xc')](JSON[_0x0932('0x22')](_0x16972c[_0x1ce6da]));BPromise[_0x0932('0x43')]()[_0x0932('0x33')](handleJob(_0x16972c[_0x1ce6da]));logger['info']('run\x20job',_0x16972c[_0x1ce6da][_0x0932('0x16')],_0x16972c[_0x1ce6da]['cron']);}else if(_0x16972c[_0x1ce6da][_0x0932('0x44')]&&_0x16972c[_0x1ce6da]['active']&&moment()['isBetween'](_0x16972c[_0x1ce6da][_0x0932('0x45')],_0x16972c[_0x1ce6da][_0x0932('0x46')])){manager[_0x0932('0x47')](_0x1ce6da,_0x16972c[_0x1ce6da][_0x0932('0x44')],handleJob(_0x16972c[_0x1ce6da]));manager['start'](_0x1ce6da);logger['info']('add\x20cron',_0x16972c[_0x1ce6da][_0x0932('0x16')],_0x16972c[_0x1ce6da]['cron']);}else if(manager[_0x0932('0x48')](_0x1ce6da)){manager[_0x0932('0x3f')](_0x1ce6da);manager['deleteJob'](_0x1ce6da);logger[_0x0932('0xc')](_0x0932('0x49'),_0x16972c[_0x1ce6da][_0x0932('0x16')],_0x16972c[_0x1ce6da][_0x0932('0x44')]);}}for(_0x4bd680=0x0,_0x1ce6da;_0x4bd680<_0x9c9afa[_0x0932('0x3e')]&&!_0x21da61;_0x4bd680+=0x1){_0x1ce6da=_0x9c9afa[_0x4bd680]['toString']();if(manager[_0x0932('0x48')](_0x1ce6da)){if(_0x16972c[_0x1ce6da]['cron']&&_0x16972c[_0x1ce6da]['active']&&moment()[_0x0932('0x4a')](_0x16972c[_0x1ce6da][_0x0932('0x45')],_0x16972c[_0x1ce6da][_0x0932('0x46')])){manager['update'](_0x1ce6da,_0x16972c[_0x1ce6da][_0x0932('0x44')],handleJob(_0x16972c[_0x1ce6da]));logger[_0x0932('0xc')](_0x0932('0x4b'),_0x16972c[_0x1ce6da]['name'],_0x16972c[_0x1ce6da]['cron']);}else{manager[_0x0932('0x3f')](_0x1ce6da);manager[_0x0932('0x40')](_0x1ce6da);logger[_0x0932('0xc')](_0x0932('0x49'),_0x16972c[_0x1ce6da][_0x0932('0x16')],_0x16972c[_0x1ce6da][_0x0932('0x44')]);}}}})[_0x0932('0x34')](function(_0x5809d0){logger[_0x0932('0x26')](JSON[_0x0932('0x22')](_0x5809d0));});}exports[_0x0932('0x4c')]=function(_0x1a0782){return getJobs(_0x1a0782);};exports[_0x0932('0x4d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};