fec5223ce3387e9feb2fd76b80d93d213a5582a7
[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 _0xe74e=['length','index','my\x20id','cron','active','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update','update\x20cron','run','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','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','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','toString','keyBy','difference','exists','stop','deleteJob'];(function(_0x3d9a2c,_0x58381d){var _0x5d3ec8=function(_0x3e45a4){while(--_0x3e45a4){_0x3d9a2c['push'](_0x3d9a2c['shift']());}};_0x5d3ec8(++_0x58381d);}(_0xe74e,0x10a));var _0xee74=function(_0x22e870,_0x4ecf1f){_0x22e870=_0x22e870-0x0;var _0x2b7acb=_0xe74e[_0x22e870];return _0x2b7acb;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xee74('0x0'));var _=require(_0xee74('0x1'));var moment=require(_0xee74('0x2'));var CronJobManager=require(_0xee74('0x3'));var jayson=require(_0xee74('0x4'));var BPromise=require(_0xee74('0x5'));var logger=require(_0xee74('0x6'))(_0xee74('0x7'));var db=require(_0xee74('0x8'))['db'];var analyticCustomReportController=require(_0xee74('0x9'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0xee74('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x242ac6,_0x539a7b){return function(){logger['info'](_0xee74('0xb'),_0x242ac6[_0xee74('0xc')]);var _0x42d671=!![];var _0x55aa4d=_0x242ac6['MailAccount'][_0xee74('0xd')]();var _0x28ae0d={'account':_0x55aa4d,'message':{'from':util[_0xee74('0xe')](_0xee74('0xf'),_0x242ac6[_0xee74('0x10')][_0xee74('0x11')],_0x242ac6['MailAccount'][_0xee74('0xc')]||_0x242ac6[_0xee74('0x10')][_0xee74('0x12')][_0xee74('0x13')]),'to':_0x242ac6['email'],'cc':_0x242ac6['cc'],'bcc':_0x242ac6[_0xee74('0x14')],'subject':util[_0xee74('0xe')](_0xee74('0x15'),_0x539a7b[_0xee74('0x11')],_0x242ac6['subtractNumber'],_0x242ac6[_0xee74('0x16')])}};var _0x524836=path[_0xee74('0x17')](__dirname,_0xee74('0x18'));var _0x15d6f3=_0x539a7b[_0xee74('0x19')];var _0x489b98=util[_0xee74('0xe')](_0xee74('0x1a'),path[_0xee74('0x1b')](_0x539a7b['savename'],path[_0xee74('0x1c')](_0x539a7b[_0xee74('0x19')])),'zip');var _0x494017=path[_0xee74('0x17')](_0x524836,_0x15d6f3);var _0x217c99=path[_0xee74('0x17')](_0x524836,_0x489b98);if(fs[_0xee74('0x1d')](_0x494017)){_0x539a7b[_0xee74('0x1e')]='Sent';_0x28ae0d[_0xee74('0x1f')][_0xee74('0x20')]=[{'filename':_0x15d6f3,'path':_0x494017}];_0x28ae0d['message'][_0xee74('0x21')]=util[_0xee74('0xe')](_0xee74('0x22'),JSON[_0xee74('0x23')](_0x539a7b,null,0x2));}else if(fs[_0xee74('0x1d')](_0x217c99)){_0x539a7b['status']=_0xee74('0x24');_0x28ae0d[_0xee74('0x1f')][_0xee74('0x20')]=[{'filename':_0x489b98,'path':_0x217c99}];}else{_0x28ae0d[_0xee74('0x1f')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x242ac6['sendIfEmpty']){_0x42d671=![];logger[_0xee74('0x25')](_0xee74('0x26'));}}if(_0x42d671){return client[_0xee74('0x27')](_0xee74('0x28'),_0x28ae0d)[_0xee74('0x29')](function(_0x2b9327){if(_0x2b9327[_0xee74('0x2a')]){return logger[_0xee74('0x2a')](_0xee74('0x2b'),JSON[_0xee74('0x23')](_0x2b9327));}return logger[_0xee74('0x25')](_0xee74('0x2c'));})[_0xee74('0x2d')](function(_0xcdbcd5){return logger[_0xee74('0x2a')](_0xee74('0x2b'),JSON[_0xee74('0x23')](_0xcdbcd5));});}};}function handleError(){return function(_0x353c8f){return logger[_0xee74('0x2a')](JSON[_0xee74('0x23')](_0x353c8f));};}function handleResult(_0x5c6096){return function(_0x2cd871){logger[_0xee74('0x25')](_0xee74('0x2e'),JSON[_0xee74('0x23')](_0x2cd871));if(_0x5c6096[_0xee74('0x10')]&&_0x5c6096[_0xee74('0x10')]['Smtp']&&!_[_0xee74('0x2f')](_0x5c6096[_0xee74('0xc')])){setTimeout(handleSendEmail(_0x5c6096,_0x2cd871),0x3c*0x3e8);}};}function handleJob(_0x194e1b){return function(){try{if(_['isNil'](_0x194e1b[_0xee74('0x30')])){return logger[_0xee74('0x25')](_0xee74('0x31'));}if(_[_0xee74('0x2f')](_0x194e1b[_0xee74('0x16')])){return logger[_0xee74('0x25')](_0xee74('0x32'));}var _0xb8cc6f={'startDate':moment()[_0xee74('0x33')](_0x194e1b[_0xee74('0x30')],_0x194e1b['subtractUnit'])[_0xee74('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0xee74('0x34')),'type':'scheduled','output':_0x194e1b['output'],'name':_0x194e1b[_0xee74('0x11')]};if(!_[_0xee74('0x2f')](_0x194e1b['DefaultReportId'])){logger[_0xee74('0x25')](_0xee74('0x35'),_0x194e1b[_0xee74('0x36')]);return analyticDefaultReportController[_0xee74('0x37')]({'id':_0x194e1b['DefaultReportId']},_0xb8cc6f)[_0xee74('0x29')](handleResult(_0x194e1b))['catch'](handleError());}if(!_[_0xee74('0x2f')](_0x194e1b[_0xee74('0x38')])){logger[_0xee74('0x25')]('exec\x20custom\x20report\x20id:%s',_0x194e1b[_0xee74('0x38')]);return analyticCustomReportController['runReport']({'id':_0x194e1b['CustomReportId']},_0xb8cc6f)[_0xee74('0x29')](handleResult(_0x194e1b))[_0xee74('0x2d')](handleError());}}catch(_0xbb8064){logger['error'](JSON['stringify'](_0xbb8064));}return logger[_0xee74('0x25')](_0xee74('0x39'));};}function getJobs(_0xb94e4c){var _0x297a79={};if(_0xb94e4c){_0x297a79['id']=_0xb94e4c;}return db[_0xee74('0x3a')][_0xee74('0x3b')]({'where':_0x297a79,'include':[{'model':db[_0xee74('0x10')],'attributes':['id',_0xee74('0x11'),_0xee74('0xc')],'include':[{'model':db[_0xee74('0x3c')],'as':'Smtp','include':[{'model':db[_0xee74('0x3d')],'as':_0xee74('0x3d')}]}]}]})[_0xee74('0x29')](function(_0x56dd55){var _0x28d7d8=_[_0xee74('0x3e')](manager[_0xee74('0x3f')]);var _0x1b4354=_['map'](_0x56dd55,function(_0x47b06b){return _0x47b06b['id'][_0xee74('0x40')]();});var _0x5db032=_[_0xee74('0x41')](_0x56dd55,function(_0x435a7b){return _0x435a7b['id'][_0xee74('0x40')]();});var _0x1d1074=_0xb94e4c?_0x1b4354:_[_0xee74('0x42')](_0x1b4354,_0x28d7d8);var _0x3baf27=_['intersection'](_0x1b4354,_0x28d7d8);var _0x3a7971=_[_0xee74('0x42')](_0x28d7d8,_0x1b4354);var _0x43a75b;var _0x3627c8;for(_0x43a75b=0x0;_0x43a75b<_0x3a7971['length']&&!_0xb94e4c;_0x43a75b+=0x1){_0x3627c8=_0x3a7971[_0x43a75b][_0xee74('0x40')]();if(manager[_0xee74('0x43')](_0x3627c8)){manager[_0xee74('0x44')](_0x3627c8);manager[_0xee74('0x45')](_0x3627c8);logger['info']('delete\x20cron',_0x3627c8);}}logger[_0xee74('0x25')]('toRun',JSON[_0xee74('0x23')](_0x1d1074));for(_0x43a75b=0x0;_0x43a75b<_0x1d1074[_0xee74('0x46')];_0x43a75b+=0x1){_0x3627c8=_0x1d1074[_0x43a75b][_0xee74('0x40')]();logger['info'](_0xee74('0x47'),_0x3627c8);if(_0xb94e4c){logger['info'](_0xee74('0x48'),_0xb94e4c);logger[_0xee74('0x25')](JSON[_0xee74('0x23')](_0x5db032[_0x3627c8]));BPromise['resolve']()[_0xee74('0x29')](handleJob(_0x5db032[_0x3627c8]));logger[_0xee74('0x25')]('run\x20job',_0x5db032[_0x3627c8][_0xee74('0x11')],_0x5db032[_0x3627c8][_0xee74('0x49')]);}else if(_0x5db032[_0x3627c8]['cron']&&_0x5db032[_0x3627c8][_0xee74('0x4a')]&&moment()[_0xee74('0x4b')](_0x5db032[_0x3627c8][_0xee74('0x4c')],_0x5db032[_0x3627c8][_0xee74('0x4d')])){manager['add'](_0x3627c8,_0x5db032[_0x3627c8][_0xee74('0x49')],handleJob(_0x5db032[_0x3627c8]));manager[_0xee74('0x4e')](_0x3627c8);logger['info'](_0xee74('0x4f'),_0x5db032[_0x3627c8]['name'],_0x5db032[_0x3627c8]['cron']);}else if(manager[_0xee74('0x43')](_0x3627c8)){manager[_0xee74('0x44')](_0x3627c8);manager[_0xee74('0x45')](_0x3627c8);logger[_0xee74('0x25')](_0xee74('0x50'),_0x5db032[_0x3627c8][_0xee74('0x11')],_0x5db032[_0x3627c8][_0xee74('0x49')]);}}for(_0x43a75b=0x0,_0x3627c8;_0x43a75b<_0x3baf27[_0xee74('0x46')]&&!_0xb94e4c;_0x43a75b+=0x1){_0x3627c8=_0x3baf27[_0x43a75b][_0xee74('0x40')]();if(manager['exists'](_0x3627c8)){if(_0x5db032[_0x3627c8]['cron']&&_0x5db032[_0x3627c8][_0xee74('0x4a')]&&moment()[_0xee74('0x4b')](_0x5db032[_0x3627c8]['startAt'],_0x5db032[_0x3627c8][_0xee74('0x4d')])){manager[_0xee74('0x51')](_0x3627c8,_0x5db032[_0x3627c8]['cron'],handleJob(_0x5db032[_0x3627c8]));logger[_0xee74('0x25')](_0xee74('0x52'),_0x5db032[_0x3627c8][_0xee74('0x11')],_0x5db032[_0x3627c8][_0xee74('0x49')]);}else{manager[_0xee74('0x44')](_0x3627c8);manager[_0xee74('0x45')](_0x3627c8);logger[_0xee74('0x25')]('stop\x20cron',_0x5db032[_0x3627c8][_0xee74('0x11')],_0x5db032[_0x3627c8][_0xee74('0x49')]);}}}})[_0xee74('0x2d')](function(_0x4b9696){logger['error'](JSON[_0xee74('0x23')](_0x4b9696));});}exports[_0xee74('0x53')]=function(_0x3faec8){return getJobs(_0x3faec8);};exports[_0xee74('0x4e')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};