Built motion from commit 85328c08.|2.5.50
[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 _0x94bc=['endAt','start','add\x20cron','stop','stop\x20cron','update','update\x20cron','run','util','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','format','\x22%s\x22\x20<%s>','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','../../files/reports','savename','%s.%s','basename','extname','join','existsSync','status','Sent','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','text','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','CloudProvider','jobs','keyBy','toString','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','isBetween','startAt'];(function(_0x51db58,_0x44d00c){var _0x3eeec5=function(_0x362fa6){while(--_0x362fa6){_0x51db58['push'](_0x51db58['shift']());}};_0x3eeec5(++_0x44d00c);}(_0x94bc,0x1bb));var _0xc94b=function(_0x275fa1,_0x28af28){_0x275fa1=_0x275fa1-0x0;var _0x5c04db=_0x94bc[_0x275fa1];return _0x5c04db;};'use strict';var fs=require('fs');var util=require(_0xc94b('0x0'));var path=require('path');var _=require('lodash');var moment=require('moment');var CronJobManager=require(_0xc94b('0x1'));var jayson=require(_0xc94b('0x2'));var BPromise=require(_0xc94b('0x3'));var logger=require(_0xc94b('0x4'))(_0xc94b('0x5'));var db=require(_0xc94b('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xc94b('0x7'));var client=jayson[_0xc94b('0x8')][_0xc94b('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0xbfc8b6,_0x4d061b){return function(){logger['info'](_0xc94b('0xa'),_0xbfc8b6[_0xc94b('0xb')]);var _0x19fcad=!![];var _0x5ff609=_0xbfc8b6[_0xc94b('0xc')]['getSmtpOptions']();var _0x499888={'account':_0x5ff609,'message':{'from':util[_0xc94b('0xd')](_0xc94b('0xe'),_0xbfc8b6['MailAccount'][_0xc94b('0xf')],_0xbfc8b6[_0xc94b('0xc')][_0xc94b('0xb')]||_0xbfc8b6[_0xc94b('0xc')][_0xc94b('0x10')][_0xc94b('0x11')]),'to':_0xbfc8b6['email'],'cc':_0xbfc8b6['cc'],'bcc':_0xbfc8b6[_0xc94b('0x12')],'subject':util[_0xc94b('0xd')](_0xc94b('0x13'),_0x4d061b[_0xc94b('0xf')],_0xbfc8b6['subtractNumber'],_0xbfc8b6[_0xc94b('0x14')])}};var _0x43fcaa=path['join'](__dirname,_0xc94b('0x15'));var _0x134232=_0x4d061b[_0xc94b('0x16')];var _0x1fc126=util['format'](_0xc94b('0x17'),path[_0xc94b('0x18')](_0x4d061b[_0xc94b('0x16')],path[_0xc94b('0x19')](_0x4d061b[_0xc94b('0x16')])),'zip');var _0x65fd9c=path[_0xc94b('0x1a')](_0x43fcaa,_0x134232);var _0x523bb1=path[_0xc94b('0x1a')](_0x43fcaa,_0x1fc126);if(fs[_0xc94b('0x1b')](_0x65fd9c)){_0x4d061b[_0xc94b('0x1c')]=_0xc94b('0x1d');_0x499888[_0xc94b('0x1e')][_0xc94b('0x1f')]=[{'filename':_0x134232,'path':_0x65fd9c}];_0x499888[_0xc94b('0x1e')]['text']=util['format'](_0xc94b('0x20'),JSON[_0xc94b('0x21')](_0x4d061b,null,0x2));}else if(fs['existsSync'](_0x523bb1)){_0x4d061b[_0xc94b('0x1c')]='Sent';_0x499888[_0xc94b('0x1e')][_0xc94b('0x1f')]=[{'filename':_0x1fc126,'path':_0x523bb1}];}else{_0x499888[_0xc94b('0x1e')][_0xc94b('0x22')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0xbfc8b6[_0xc94b('0x23')]){_0x19fcad=![];logger[_0xc94b('0x24')](_0xc94b('0x25'));}}if(_0x19fcad){return client[_0xc94b('0x26')](_0xc94b('0x27'),_0x499888)[_0xc94b('0x28')](function(_0x2a01a5){if(_0x2a01a5[_0xc94b('0x29')]){return logger[_0xc94b('0x29')](_0xc94b('0x2a'),JSON[_0xc94b('0x21')](_0x2a01a5));}return logger['info'](_0xc94b('0x2b'));})['catch'](function(_0x322928){return logger['error'](_0xc94b('0x2a'),JSON['stringify'](_0x322928));});}};}function handleError(){return function(_0x5d0eda){return logger[_0xc94b('0x29')](JSON[_0xc94b('0x21')](_0x5d0eda));};}function handleResult(_0xcadf70){return function(_0x1105a4){logger[_0xc94b('0x24')](_0xc94b('0x2c'),JSON[_0xc94b('0x21')](_0x1105a4));if(_0xcadf70[_0xc94b('0xc')]&&_0xcadf70['MailAccount'][_0xc94b('0x10')]&&!_[_0xc94b('0x2d')](_0xcadf70['email'])){setTimeout(handleSendEmail(_0xcadf70,_0x1105a4),0x3c*0x3e8);}};}function handleJob(_0x2c0027){return function(){try{if(_[_0xc94b('0x2d')](_0x2c0027[_0xc94b('0x2e')])){return logger[_0xc94b('0x24')](_0xc94b('0x2f'));}if(_['isNil'](_0x2c0027[_0xc94b('0x14')])){return logger[_0xc94b('0x24')](_0xc94b('0x30'));}var _0xfbf2d8={'startDate':moment()[_0xc94b('0x31')](_0x2c0027[_0xc94b('0x2e')],_0x2c0027[_0xc94b('0x14')])[_0xc94b('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xc94b('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xc94b('0x32'),'output':_0x2c0027[_0xc94b('0x33')],'name':_0x2c0027[_0xc94b('0xf')]};if(!_[_0xc94b('0x2d')](_0x2c0027[_0xc94b('0x34')])){logger['info'](_0xc94b('0x35'),_0x2c0027[_0xc94b('0x34')]);return analyticDefaultReportController[_0xc94b('0x36')]({'id':_0x2c0027[_0xc94b('0x34')]},_0xfbf2d8)['then'](handleResult(_0x2c0027))[_0xc94b('0x37')](handleError());}if(!_['isNil'](_0x2c0027['CustomReportId'])){logger['info'](_0xc94b('0x38'),_0x2c0027[_0xc94b('0x39')]);return analyticCustomReportController[_0xc94b('0x36')]({'id':_0x2c0027['CustomReportId']},_0xfbf2d8)['then'](handleResult(_0x2c0027))[_0xc94b('0x37')](handleError());}}catch(_0x311c2f){logger[_0xc94b('0x29')](JSON[_0xc94b('0x21')](_0x311c2f));}return logger[_0xc94b('0x24')](_0xc94b('0x3a'));};}function getJobs(_0x3fd003){var _0x49075d={};if(_0x3fd003){_0x49075d['id']=_0x3fd003;}return db[_0xc94b('0x3b')][_0xc94b('0x3c')]({'where':_0x49075d,'include':[{'model':db['MailAccount'],'attributes':['id',_0xc94b('0xf'),_0xc94b('0xb')],'include':[{'model':db['MailServerOut'],'as':_0xc94b('0x10'),'include':[{'model':db[_0xc94b('0x3d')],'as':_0xc94b('0x3d')}]}]}]})[_0xc94b('0x28')](function(_0x592cf0){var _0x1dd6db=_['keys'](manager[_0xc94b('0x3e')]);var _0x5c9bab=_['map'](_0x592cf0,function(_0x4049e2){return _0x4049e2['id']['toString']();});var _0x33819f=_[_0xc94b('0x3f')](_0x592cf0,function(_0x35466c){return _0x35466c['id'][_0xc94b('0x40')]();});var _0x3624d9=_0x3fd003?_0x5c9bab:_[_0xc94b('0x41')](_0x5c9bab,_0x1dd6db);var _0x427dd9=_[_0xc94b('0x42')](_0x5c9bab,_0x1dd6db);var _0x5a1fe9=_[_0xc94b('0x41')](_0x1dd6db,_0x5c9bab);var _0x3141fb;var _0xa5bcb;for(_0x3141fb=0x0;_0x3141fb<_0x5a1fe9[_0xc94b('0x43')]&&!_0x3fd003;_0x3141fb+=0x1){_0xa5bcb=_0x5a1fe9[_0x3141fb]['toString']();if(manager[_0xc94b('0x44')](_0xa5bcb)){manager['stop'](_0xa5bcb);manager[_0xc94b('0x45')](_0xa5bcb);logger[_0xc94b('0x24')](_0xc94b('0x46'),_0xa5bcb);}}logger[_0xc94b('0x24')](_0xc94b('0x47'),JSON[_0xc94b('0x21')](_0x3624d9));for(_0x3141fb=0x0;_0x3141fb<_0x3624d9[_0xc94b('0x43')];_0x3141fb+=0x1){_0xa5bcb=_0x3624d9[_0x3141fb][_0xc94b('0x40')]();logger[_0xc94b('0x24')](_0xc94b('0x48'),_0xa5bcb);if(_0x3fd003){logger[_0xc94b('0x24')](_0xc94b('0x49'),_0x3fd003);logger['info'](JSON[_0xc94b('0x21')](_0x33819f[_0xa5bcb]));BPromise[_0xc94b('0x4a')]()[_0xc94b('0x28')](handleJob(_0x33819f[_0xa5bcb]));logger['info'](_0xc94b('0x4b'),_0x33819f[_0xa5bcb][_0xc94b('0xf')],_0x33819f[_0xa5bcb][_0xc94b('0x4c')]);}else if(_0x33819f[_0xa5bcb][_0xc94b('0x4c')]&&_0x33819f[_0xa5bcb]['active']&&moment()[_0xc94b('0x4d')](_0x33819f[_0xa5bcb][_0xc94b('0x4e')],_0x33819f[_0xa5bcb][_0xc94b('0x4f')])){manager['add'](_0xa5bcb,_0x33819f[_0xa5bcb][_0xc94b('0x4c')],handleJob(_0x33819f[_0xa5bcb]));manager[_0xc94b('0x50')](_0xa5bcb);logger['info'](_0xc94b('0x51'),_0x33819f[_0xa5bcb][_0xc94b('0xf')],_0x33819f[_0xa5bcb][_0xc94b('0x4c')]);}else if(manager[_0xc94b('0x44')](_0xa5bcb)){manager[_0xc94b('0x52')](_0xa5bcb);manager['deleteJob'](_0xa5bcb);logger[_0xc94b('0x24')](_0xc94b('0x53'),_0x33819f[_0xa5bcb][_0xc94b('0xf')],_0x33819f[_0xa5bcb][_0xc94b('0x4c')]);}}for(_0x3141fb=0x0,_0xa5bcb;_0x3141fb<_0x427dd9[_0xc94b('0x43')]&&!_0x3fd003;_0x3141fb+=0x1){_0xa5bcb=_0x427dd9[_0x3141fb][_0xc94b('0x40')]();if(manager[_0xc94b('0x44')](_0xa5bcb)){if(_0x33819f[_0xa5bcb][_0xc94b('0x4c')]&&_0x33819f[_0xa5bcb]['active']&&moment()[_0xc94b('0x4d')](_0x33819f[_0xa5bcb]['startAt'],_0x33819f[_0xa5bcb][_0xc94b('0x4f')])){manager[_0xc94b('0x54')](_0xa5bcb,_0x33819f[_0xa5bcb][_0xc94b('0x4c')],handleJob(_0x33819f[_0xa5bcb]));logger[_0xc94b('0x24')](_0xc94b('0x55'),_0x33819f[_0xa5bcb]['name'],_0x33819f[_0xa5bcb]['cron']);}else{manager[_0xc94b('0x52')](_0xa5bcb);manager['deleteJob'](_0xa5bcb);logger['info'](_0xc94b('0x53'),_0x33819f[_0xa5bcb][_0xc94b('0xf')],_0x33819f[_0xa5bcb]['cron']);}}}})['catch'](function(_0x1e337b){logger['error'](JSON['stringify'](_0x1e337b));});}exports[_0xc94b('0x56')]=function(_0x34c908){return getJobs(_0x34c908);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};