a9a10cde9b5b445feb108b4ce8c6536d26924c7c
[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 _0x72a8=['name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','Sent','message','attachments','text','stringify','status','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','catch','data','isNil','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','Schedule','MailServerOut','CloudProvider','keys','map','keyBy','toString','difference','intersection','length','exists','stop','delete\x20cron','index','my\x20id','run\x20job','cron','active','isBetween','endAt','add','start','deleteJob','stop\x20cron','startAt','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>'];(function(_0x51d006,_0xe4e10){var _0x56bd2d=function(_0x4f2af8){while(--_0x4f2af8){_0x51d006['push'](_0x51d006['shift']());}};_0x56bd2d(++_0xe4e10);}(_0x72a8,0x139));var _0x872a=function(_0x257c35,_0x41dd8c){_0x257c35=_0x257c35-0x0;var _0x6de3e8=_0x72a8[_0x257c35];return _0x6de3e8;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x872a('0x0'));var _=require(_0x872a('0x1'));var moment=require(_0x872a('0x2'));var CronJobManager=require(_0x872a('0x3'));var jayson=require(_0x872a('0x4'));var BPromise=require(_0x872a('0x5'));var logger=require(_0x872a('0x6'))(_0x872a('0x7'));var db=require(_0x872a('0x8'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x872a('0x9'));var client=jayson[_0x872a('0xa')][_0x872a('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1ecc51,_0x3f746a){return function(){logger[_0x872a('0xc')](_0x872a('0xd'),_0x1ecc51[_0x872a('0xe')]);var _0x391773=!![];var _0x5598c1=_0x1ecc51[_0x872a('0xf')][_0x872a('0x10')]();var _0x19716c={'account':_0x5598c1,'message':{'from':util[_0x872a('0x11')](_0x872a('0x12'),_0x1ecc51[_0x872a('0xf')][_0x872a('0x13')],_0x1ecc51[_0x872a('0xf')]['email']||_0x1ecc51[_0x872a('0xf')][_0x872a('0x14')][_0x872a('0x15')]),'to':_0x1ecc51['email'],'cc':_0x1ecc51['cc'],'bcc':_0x1ecc51[_0x872a('0x16')],'subject':util[_0x872a('0x11')](_0x872a('0x17'),_0x3f746a[_0x872a('0x13')],_0x1ecc51[_0x872a('0x18')],_0x1ecc51[_0x872a('0x19')])}};var _0x392d3a=path[_0x872a('0x1a')](__dirname,_0x872a('0x1b'));var _0x5d6672=_0x3f746a[_0x872a('0x1c')];var _0x13d649=util[_0x872a('0x11')](_0x872a('0x1d'),path[_0x872a('0x1e')](_0x3f746a[_0x872a('0x1c')],path[_0x872a('0x1f')](_0x3f746a[_0x872a('0x1c')])),_0x872a('0x20'));var _0x3221d5=path[_0x872a('0x1a')](_0x392d3a,_0x5d6672);var _0x5f2453=path[_0x872a('0x1a')](_0x392d3a,_0x13d649);if(fs[_0x872a('0x21')](_0x3221d5)){_0x3f746a['status']=_0x872a('0x22');_0x19716c[_0x872a('0x23')][_0x872a('0x24')]=[{'filename':_0x5d6672,'path':_0x3221d5}];_0x19716c[_0x872a('0x23')][_0x872a('0x25')]=util[_0x872a('0x11')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x872a('0x26')](_0x3f746a,null,0x2));}else if(fs[_0x872a('0x21')](_0x5f2453)){_0x3f746a[_0x872a('0x27')]=_0x872a('0x22');_0x19716c[_0x872a('0x23')][_0x872a('0x24')]=[{'filename':_0x13d649,'path':_0x5f2453}];}else{_0x19716c['message']['text']=_0x872a('0x28');if(!_0x1ecc51[_0x872a('0x29')]){_0x391773=![];logger[_0x872a('0xc')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x391773){return client[_0x872a('0x2a')](_0x872a('0x2b'),_0x19716c)[_0x872a('0x2c')](function(_0x473ded){if(_0x473ded['error']){return logger[_0x872a('0x2d')](_0x872a('0x2e'),JSON[_0x872a('0x26')](_0x473ded));}return logger[_0x872a('0xc')]('email\x20sent');})[_0x872a('0x2f')](function(_0x3a9954){return logger[_0x872a('0x2d')](_0x872a('0x2e'),JSON['stringify'](_0x3a9954));});}};}function handleError(){return function(_0x58b528){return logger[_0x872a('0x2d')](JSON['stringify'](_0x58b528));};}function handleResult(_0x52cc3d){return function(_0x5ca7cd){logger[_0x872a('0xc')](_0x872a('0x30'),JSON[_0x872a('0x26')](_0x5ca7cd));if(_0x52cc3d['MailAccount']&&_0x52cc3d[_0x872a('0xf')][_0x872a('0x14')]&&!_[_0x872a('0x31')](_0x52cc3d[_0x872a('0xe')])){setTimeout(handleSendEmail(_0x52cc3d,_0x5ca7cd),0x3c*0x3e8);}};}function handleJob(_0x11d772){return function(){try{if(_[_0x872a('0x31')](_0x11d772['subtractNumber'])){return logger[_0x872a('0xc')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x872a('0x31')](_0x11d772['subtractUnit'])){return logger[_0x872a('0xc')](_0x872a('0x32'));}var _0x43a65a={'startDate':moment()['subtract'](_0x11d772['subtractNumber'],_0x11d772[_0x872a('0x19')])['format'](_0x872a('0x33')),'endDate':moment()[_0x872a('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x872a('0x34'),'output':_0x11d772['output'],'name':_0x11d772[_0x872a('0x13')]};if(!_[_0x872a('0x31')](_0x11d772[_0x872a('0x35')])){logger[_0x872a('0xc')](_0x872a('0x36'),_0x11d772[_0x872a('0x35')]);return analyticDefaultReportController[_0x872a('0x37')]({'id':_0x11d772['DefaultReportId']},_0x43a65a)['then'](handleResult(_0x11d772))[_0x872a('0x2f')](handleError());}if(!_['isNil'](_0x11d772[_0x872a('0x38')])){logger[_0x872a('0xc')]('exec\x20custom\x20report\x20id:%s',_0x11d772[_0x872a('0x38')]);return analyticCustomReportController[_0x872a('0x37')]({'id':_0x11d772['CustomReportId']},_0x43a65a)[_0x872a('0x2c')](handleResult(_0x11d772))[_0x872a('0x2f')](handleError());}}catch(_0x3838d7){logger[_0x872a('0x2d')](JSON[_0x872a('0x26')](_0x3838d7));}return logger[_0x872a('0xc')](_0x872a('0x39'));};}function getJobs(_0x21f6f5){var _0xde62fa={};if(_0x21f6f5){_0xde62fa['id']=_0x21f6f5;}return db[_0x872a('0x3a')]['findAll']({'where':_0xde62fa,'include':[{'model':db['MailAccount'],'attributes':['id',_0x872a('0x13'),_0x872a('0xe')],'include':[{'model':db[_0x872a('0x3b')],'as':'Smtp','include':[{'model':db[_0x872a('0x3c')],'as':_0x872a('0x3c')}]}]}]})[_0x872a('0x2c')](function(_0x16bf9a){var _0x17eb2d=_[_0x872a('0x3d')](manager['jobs']);var _0x5607cc=_[_0x872a('0x3e')](_0x16bf9a,function(_0x122e76){return _0x122e76['id']['toString']();});var _0x5e9325=_[_0x872a('0x3f')](_0x16bf9a,function(_0x287454){return _0x287454['id'][_0x872a('0x40')]();});var _0x354310=_0x21f6f5?_0x5607cc:_[_0x872a('0x41')](_0x5607cc,_0x17eb2d);var _0x18ff6f=_[_0x872a('0x42')](_0x5607cc,_0x17eb2d);var _0x28401b=_['difference'](_0x17eb2d,_0x5607cc);var _0x31c2e6;var _0xde482f;for(_0x31c2e6=0x0;_0x31c2e6<_0x28401b[_0x872a('0x43')]&&!_0x21f6f5;_0x31c2e6+=0x1){_0xde482f=_0x28401b[_0x31c2e6]['toString']();if(manager[_0x872a('0x44')](_0xde482f)){manager[_0x872a('0x45')](_0xde482f);manager['deleteJob'](_0xde482f);logger[_0x872a('0xc')](_0x872a('0x46'),_0xde482f);}}logger['info']('toRun',JSON[_0x872a('0x26')](_0x354310));for(_0x31c2e6=0x0;_0x31c2e6<_0x354310[_0x872a('0x43')];_0x31c2e6+=0x1){_0xde482f=_0x354310[_0x31c2e6][_0x872a('0x40')]();logger[_0x872a('0xc')](_0x872a('0x47'),_0xde482f);if(_0x21f6f5){logger['info'](_0x872a('0x48'),_0x21f6f5);logger[_0x872a('0xc')](JSON[_0x872a('0x26')](_0x5e9325[_0xde482f]));BPromise['resolve']()[_0x872a('0x2c')](handleJob(_0x5e9325[_0xde482f]));logger['info'](_0x872a('0x49'),_0x5e9325[_0xde482f][_0x872a('0x13')],_0x5e9325[_0xde482f][_0x872a('0x4a')]);}else if(_0x5e9325[_0xde482f]['cron']&&_0x5e9325[_0xde482f][_0x872a('0x4b')]&&moment()[_0x872a('0x4c')](_0x5e9325[_0xde482f]['startAt'],_0x5e9325[_0xde482f][_0x872a('0x4d')])){manager[_0x872a('0x4e')](_0xde482f,_0x5e9325[_0xde482f][_0x872a('0x4a')],handleJob(_0x5e9325[_0xde482f]));manager[_0x872a('0x4f')](_0xde482f);logger[_0x872a('0xc')]('add\x20cron',_0x5e9325[_0xde482f]['name'],_0x5e9325[_0xde482f]['cron']);}else if(manager[_0x872a('0x44')](_0xde482f)){manager[_0x872a('0x45')](_0xde482f);manager[_0x872a('0x50')](_0xde482f);logger[_0x872a('0xc')](_0x872a('0x51'),_0x5e9325[_0xde482f][_0x872a('0x13')],_0x5e9325[_0xde482f][_0x872a('0x4a')]);}}for(_0x31c2e6=0x0,_0xde482f;_0x31c2e6<_0x18ff6f[_0x872a('0x43')]&&!_0x21f6f5;_0x31c2e6+=0x1){_0xde482f=_0x18ff6f[_0x31c2e6][_0x872a('0x40')]();if(manager[_0x872a('0x44')](_0xde482f)){if(_0x5e9325[_0xde482f][_0x872a('0x4a')]&&_0x5e9325[_0xde482f]['active']&&moment()[_0x872a('0x4c')](_0x5e9325[_0xde482f][_0x872a('0x52')],_0x5e9325[_0xde482f][_0x872a('0x4d')])){manager['update'](_0xde482f,_0x5e9325[_0xde482f][_0x872a('0x4a')],handleJob(_0x5e9325[_0xde482f]));logger[_0x872a('0xc')]('update\x20cron',_0x5e9325[_0xde482f][_0x872a('0x13')],_0x5e9325[_0xde482f][_0x872a('0x4a')]);}else{manager[_0x872a('0x45')](_0xde482f);manager['deleteJob'](_0xde482f);logger[_0x872a('0xc')](_0x872a('0x51'),_0x5e9325[_0xde482f]['name'],_0x5e9325[_0xde482f]['cron']);}}}})['catch'](function(_0x61688e){logger[_0x872a('0x2d')](JSON[_0x872a('0x26')](_0x61688e));});}exports['run']=function(_0x2cd13d){return getJobs(_0x2cd13d);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};