adbf5a1297a0205321aa186d79c1cff986692735
[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 _0x9f47=['map','toString','difference','stop','delete\x20cron','index','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','exists','deleteJob','stop\x20cron','length','update','update\x20cron','start','lodash','moment','cron-job-manager','jayson/promise','bluebird','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','email','MailAccount','getSmtpOptions','format','name','user','subtractNumber','subtractUnit','../../files/reports','basename','extname','savename','join','existsSync','status','Sent','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','stringify','email\x20sent','data','Smtp','subtractNumber\x20null\x20or\x20undefined','isNil','subtract','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','then','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','catch','no\x20report\x20id','Schedule','findAll','MailServerOut'];(function(_0x1f09bb,_0x1dd71c){var _0x45d669=function(_0x2e34c3){while(--_0x2e34c3){_0x1f09bb['push'](_0x1f09bb['shift']());}};_0x45d669(++_0x1dd71c);}(_0x9f47,0x1e9));var _0x79f4=function(_0x18eeee,_0x34e6c2){_0x18eeee=_0x18eeee-0x0;var _0x509668=_0x9f47[_0x18eeee];return _0x509668;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require(_0x79f4('0x0'));var moment=require(_0x79f4('0x1'));var CronJobManager=require(_0x79f4('0x2'));var jayson=require(_0x79f4('0x3'));var BPromise=require(_0x79f4('0x4'));var logger=require('../logger')('schedule');var db=require(_0x79f4('0x5'))['db'];var analyticCustomReportController=require(_0x79f4('0x6'));var analyticDefaultReportController=require(_0x79f4('0x7'));var client=jayson['client'][_0x79f4('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2f787f,_0x5db4c5){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x2f787f[_0x79f4('0x9')]);var _0x1cf7ee=!![];var _0xee1c7b=_0x2f787f[_0x79f4('0xa')][_0x79f4('0xb')]();var _0x364115={'account':_0xee1c7b,'message':{'from':util[_0x79f4('0xc')]('\x22%s\x22\x20<%s>',_0x2f787f['MailAccount'][_0x79f4('0xd')],_0x2f787f[_0x79f4('0xa')][_0x79f4('0x9')]||_0x2f787f[_0x79f4('0xa')]['Smtp'][_0x79f4('0xe')]),'to':_0x2f787f[_0x79f4('0x9')],'cc':_0x2f787f['cc'],'bcc':_0x2f787f['bcc'],'subject':util['format']('Report\x20%s\x20last\x20%s\x20%s',_0x5db4c5['name'],_0x2f787f[_0x79f4('0xf')],_0x2f787f[_0x79f4('0x10')])}};var _0x4836a1=path['join'](__dirname,_0x79f4('0x11'));var _0x140bf8=_0x5db4c5['savename'];var _0x39ad25=util[_0x79f4('0xc')]('%s.%s',path[_0x79f4('0x12')](_0x5db4c5['savename'],path[_0x79f4('0x13')](_0x5db4c5[_0x79f4('0x14')])),'zip');var _0x17cfcd=path['join'](_0x4836a1,_0x140bf8);var _0x387819=path[_0x79f4('0x15')](_0x4836a1,_0x39ad25);if(fs[_0x79f4('0x16')](_0x17cfcd)){_0x5db4c5[_0x79f4('0x17')]=_0x79f4('0x18');_0x364115[_0x79f4('0x19')][_0x79f4('0x1a')]=[{'filename':_0x140bf8,'path':_0x17cfcd}];_0x364115[_0x79f4('0x19')][_0x79f4('0x1b')]=util[_0x79f4('0xc')](_0x79f4('0x1c'),JSON['stringify'](_0x5db4c5,null,0x2));}else if(fs[_0x79f4('0x16')](_0x387819)){_0x5db4c5[_0x79f4('0x17')]=_0x79f4('0x18');_0x364115[_0x79f4('0x19')][_0x79f4('0x1a')]=[{'filename':_0x39ad25,'path':_0x387819}];}else{_0x364115[_0x79f4('0x19')][_0x79f4('0x1b')]=_0x79f4('0x1d');if(!_0x2f787f[_0x79f4('0x1e')]){_0x1cf7ee=![];logger[_0x79f4('0x1f')](_0x79f4('0x20'));}}if(_0x1cf7ee){return client[_0x79f4('0x21')](_0x79f4('0x22'),_0x364115)['then'](function(_0x1f3807){if(_0x1f3807[_0x79f4('0x23')]){return logger['error'](_0x79f4('0x24'),JSON[_0x79f4('0x25')](_0x1f3807));}return logger[_0x79f4('0x1f')](_0x79f4('0x26'));})['catch'](function(_0x41cb04){return logger[_0x79f4('0x23')](_0x79f4('0x24'),JSON['stringify'](_0x41cb04));});}};}function handleError(){return function(_0x3f8496){return logger['error'](JSON['stringify'](_0x3f8496));};}function handleResult(_0x3cdd92){return function(_0x292c6c){logger['info'](_0x79f4('0x27'),JSON[_0x79f4('0x25')](_0x292c6c));if(_0x3cdd92['MailAccount']&&_0x3cdd92[_0x79f4('0xa')][_0x79f4('0x28')]&&!_['isNil'](_0x3cdd92['email'])){setTimeout(handleSendEmail(_0x3cdd92,_0x292c6c),0x3c*0x3e8);}};}function handleJob(_0x276a2b){return function(){try{if(_['isNil'](_0x276a2b[_0x79f4('0xf')])){return logger['info'](_0x79f4('0x29'));}if(_[_0x79f4('0x2a')](_0x276a2b[_0x79f4('0x10')])){return logger[_0x79f4('0x1f')]('subtractUnit\x20null\x20or\x20undefined');}var _0x468df0={'startDate':moment()[_0x79f4('0x2b')](_0x276a2b[_0x79f4('0xf')],_0x276a2b[_0x79f4('0x10')])['format'](_0x79f4('0x2c')),'endDate':moment()[_0x79f4('0xc')](_0x79f4('0x2c')),'type':'scheduled','output':_0x276a2b[_0x79f4('0x2d')],'name':_0x276a2b['name']};if(!_[_0x79f4('0x2a')](_0x276a2b['DefaultReportId'])){logger[_0x79f4('0x1f')](_0x79f4('0x2e'),_0x276a2b['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x276a2b[_0x79f4('0x2f')]},_0x468df0)[_0x79f4('0x30')](handleResult(_0x276a2b))['catch'](handleError());}if(!_[_0x79f4('0x2a')](_0x276a2b[_0x79f4('0x31')])){logger[_0x79f4('0x1f')](_0x79f4('0x32'),_0x276a2b[_0x79f4('0x31')]);return analyticCustomReportController[_0x79f4('0x33')]({'id':_0x276a2b[_0x79f4('0x31')]},_0x468df0)[_0x79f4('0x30')](handleResult(_0x276a2b))[_0x79f4('0x34')](handleError());}}catch(_0x27c21e){logger[_0x79f4('0x23')](JSON[_0x79f4('0x25')](_0x27c21e));}return logger['info'](_0x79f4('0x35'));};}function getJobs(_0x1edf62){var _0x536d88={};if(_0x1edf62){_0x536d88['id']=_0x1edf62;}return db[_0x79f4('0x36')][_0x79f4('0x37')]({'where':_0x536d88,'include':[{'model':db[_0x79f4('0xa')],'attributes':['id',_0x79f4('0xd'),_0x79f4('0x9')],'include':[{'model':db[_0x79f4('0x38')],'as':_0x79f4('0x28'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})[_0x79f4('0x30')](function(_0x3bd087){var _0xef3b71=_['keys'](manager['jobs']);var _0x13edca=_[_0x79f4('0x39')](_0x3bd087,function(_0x41db6a){return _0x41db6a['id'][_0x79f4('0x3a')]();});var _0xf22a1b=_['keyBy'](_0x3bd087,function(_0x6a7961){return _0x6a7961['id'][_0x79f4('0x3a')]();});var _0x99d35b=_0x1edf62?_0x13edca:_[_0x79f4('0x3b')](_0x13edca,_0xef3b71);var _0x6f9e22=_['intersection'](_0x13edca,_0xef3b71);var _0x3a5c47=_['difference'](_0xef3b71,_0x13edca);var _0x55a383;var _0x2b5061;for(_0x55a383=0x0;_0x55a383<_0x3a5c47['length']&&!_0x1edf62;_0x55a383+=0x1){_0x2b5061=_0x3a5c47[_0x55a383][_0x79f4('0x3a')]();if(manager['exists'](_0x2b5061)){manager[_0x79f4('0x3c')](_0x2b5061);manager['deleteJob'](_0x2b5061);logger['info'](_0x79f4('0x3d'),_0x2b5061);}}logger['info']('toRun',JSON[_0x79f4('0x25')](_0x99d35b));for(_0x55a383=0x0;_0x55a383<_0x99d35b['length'];_0x55a383+=0x1){_0x2b5061=_0x99d35b[_0x55a383][_0x79f4('0x3a')]();logger[_0x79f4('0x1f')](_0x79f4('0x3e'),_0x2b5061);if(_0x1edf62){logger[_0x79f4('0x1f')]('my\x20id',_0x1edf62);logger[_0x79f4('0x1f')](JSON[_0x79f4('0x25')](_0xf22a1b[_0x2b5061]));BPromise[_0x79f4('0x3f')]()[_0x79f4('0x30')](handleJob(_0xf22a1b[_0x2b5061]));logger[_0x79f4('0x1f')](_0x79f4('0x40'),_0xf22a1b[_0x2b5061][_0x79f4('0xd')],_0xf22a1b[_0x2b5061][_0x79f4('0x41')]);}else if(_0xf22a1b[_0x2b5061][_0x79f4('0x41')]&&_0xf22a1b[_0x2b5061][_0x79f4('0x42')]&&moment()[_0x79f4('0x43')](_0xf22a1b[_0x2b5061][_0x79f4('0x44')],_0xf22a1b[_0x2b5061][_0x79f4('0x45')])){manager[_0x79f4('0x46')](_0x2b5061,_0xf22a1b[_0x2b5061][_0x79f4('0x41')],handleJob(_0xf22a1b[_0x2b5061]));manager['start'](_0x2b5061);logger[_0x79f4('0x1f')]('add\x20cron',_0xf22a1b[_0x2b5061]['name'],_0xf22a1b[_0x2b5061][_0x79f4('0x41')]);}else if(manager[_0x79f4('0x47')](_0x2b5061)){manager[_0x79f4('0x3c')](_0x2b5061);manager[_0x79f4('0x48')](_0x2b5061);logger[_0x79f4('0x1f')](_0x79f4('0x49'),_0xf22a1b[_0x2b5061][_0x79f4('0xd')],_0xf22a1b[_0x2b5061][_0x79f4('0x41')]);}}for(_0x55a383=0x0,_0x2b5061;_0x55a383<_0x6f9e22[_0x79f4('0x4a')]&&!_0x1edf62;_0x55a383+=0x1){_0x2b5061=_0x6f9e22[_0x55a383][_0x79f4('0x3a')]();if(manager[_0x79f4('0x47')](_0x2b5061)){if(_0xf22a1b[_0x2b5061][_0x79f4('0x41')]&&_0xf22a1b[_0x2b5061]['active']&&moment()[_0x79f4('0x43')](_0xf22a1b[_0x2b5061][_0x79f4('0x44')],_0xf22a1b[_0x2b5061][_0x79f4('0x45')])){manager[_0x79f4('0x4b')](_0x2b5061,_0xf22a1b[_0x2b5061][_0x79f4('0x41')],handleJob(_0xf22a1b[_0x2b5061]));logger[_0x79f4('0x1f')](_0x79f4('0x4c'),_0xf22a1b[_0x2b5061]['name'],_0xf22a1b[_0x2b5061][_0x79f4('0x41')]);}else{manager['stop'](_0x2b5061);manager['deleteJob'](_0x2b5061);logger['info'](_0x79f4('0x49'),_0xf22a1b[_0x2b5061]['name'],_0xf22a1b[_0x2b5061][_0x79f4('0x41')]);}}}})[_0x79f4('0x34')](function(_0x394b70){logger[_0x79f4('0x23')](JSON[_0x79f4('0x25')](_0x394b70));});}exports['run']=function(_0x530054){return getJobs(_0x530054);};exports[_0x79f4('0x4d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};