Built motion from commit (unavailable).|2.4.21
[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 _0x7dbc=['data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','difference','intersection','stop','deleteJob','delete\x20cron','toRun','length','my\x20id','resolve','run\x20job','cron','startAt','endAt','start','add\x20cron','exists','active','isBetween','update','stop\x20cron','util','path','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','join','../../files/reports','%s.%s','basename','savename','zip','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','stringify','sendIfEmpty','request','then','error','error\x20mail','email\x20sent','catch'];(function(_0x4301a3,_0x52acb9){var _0x39795e=function(_0xf911f){while(--_0xf911f){_0x4301a3['push'](_0x4301a3['shift']());}};_0x39795e(++_0x52acb9);}(_0x7dbc,0xda));var _0xc7db=function(_0x3684b7,_0x5c3ba1){_0x3684b7=_0x3684b7-0x0;var _0x4e6f06=_0x7dbc[_0x3684b7];return _0x4e6f06;};'use strict';var fs=require('fs');var util=require(_0xc7db('0x0'));var path=require(_0xc7db('0x1'));var _=require('lodash');var moment=require(_0xc7db('0x2'));var CronJobManager=require(_0xc7db('0x3'));var jayson=require(_0xc7db('0x4'));var BPromise=require(_0xc7db('0x5'));var logger=require(_0xc7db('0x6'))('schedule');var db=require(_0xc7db('0x7'))['db'];var analyticCustomReportController=require(_0xc7db('0x8'));var analyticDefaultReportController=require(_0xc7db('0x9'));var client=jayson[_0xc7db('0xa')][_0xc7db('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0xc24691,_0x405892){return function(){logger[_0xc7db('0xc')]('Try\x20to\x20send\x20a\x20mail\x20to',_0xc24691[_0xc7db('0xd')]);var _0x1fb62a=!![];var _0xca76dc={'tls':{'rejectUnauthorized':![]}};if(_0xc24691[_0xc7db('0xe')][_0xc7db('0xf')][_0xc7db('0x10')]){_0xca76dc[_0xc7db('0x10')]=_0xc24691['MailAccount']['Smtp'][_0xc7db('0x10')];}else{_0xca76dc[_0xc7db('0x11')]=_0xc24691['MailAccount'][_0xc7db('0xf')]['host'];_0xca76dc[_0xc7db('0x12')]=_0xc24691['MailAccount'][_0xc7db('0xf')][_0xc7db('0x12')];_0xca76dc[_0xc7db('0x13')]=_0xc24691['MailAccount'][_0xc7db('0xf')][_0xc7db('0x13')];}if(_0xc24691[_0xc7db('0xe')]['Smtp'][_0xc7db('0x14')]){_0xca76dc[_0xc7db('0x15')]={'user':_0xc24691['MailAccount'][_0xc7db('0xf')][_0xc7db('0x16')],'pass':_0xc24691[_0xc7db('0xe')][_0xc7db('0xf')][_0xc7db('0x17')]};}var _0x32397c={'account':_0xca76dc,'message':{'from':util[_0xc7db('0x18')](_0xc7db('0x19'),_0xc24691[_0xc7db('0xe')]['name'],_0xc24691[_0xc7db('0xe')]['email']||_0xc24691[_0xc7db('0xe')][_0xc7db('0xf')][_0xc7db('0x16')]),'to':_0xc24691[_0xc7db('0xd')],'cc':_0xc24691['cc'],'bcc':_0xc24691['bcc'],'subject':util[_0xc7db('0x18')](_0xc7db('0x1a'),_0x405892[_0xc7db('0x1b')],_0xc24691['subtractNumber'],_0xc24691[_0xc7db('0x1c')])}};var _0x795d5e=path[_0xc7db('0x1d')](__dirname,_0xc7db('0x1e'));var _0x17ca0c=_0x405892['savename'];var _0x1448aa=util[_0xc7db('0x18')](_0xc7db('0x1f'),path[_0xc7db('0x20')](_0x405892[_0xc7db('0x21')],path['extname'](_0x405892[_0xc7db('0x21')])),_0xc7db('0x22'));var _0x58330b=path[_0xc7db('0x1d')](_0x795d5e,_0x17ca0c);var _0x2bdb4b=path['join'](_0x795d5e,_0x1448aa);if(fs['existsSync'](_0x58330b)){_0x405892[_0xc7db('0x23')]=_0xc7db('0x24');_0x32397c[_0xc7db('0x25')][_0xc7db('0x26')]=[{'filename':_0x17ca0c,'path':_0x58330b}];_0x32397c[_0xc7db('0x25')][_0xc7db('0x27')]=util['format'](_0xc7db('0x28'),JSON[_0xc7db('0x29')](_0x405892,null,0x2));}else if(fs['existsSync'](_0x2bdb4b)){_0x405892[_0xc7db('0x23')]='Sent';_0x32397c['message']['attachments']=[{'filename':_0x1448aa,'path':_0x2bdb4b}];}else{_0x32397c['message']['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0xc24691[_0xc7db('0x2a')]){_0x1fb62a=![];logger[_0xc7db('0xc')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x1fb62a){return client[_0xc7db('0x2b')]('SendMail',_0x32397c)[_0xc7db('0x2c')](function(_0x2cac63){if(_0x2cac63['error']){return logger[_0xc7db('0x2d')](_0xc7db('0x2e'),JSON[_0xc7db('0x29')](_0x2cac63));}return logger['info'](_0xc7db('0x2f'));})[_0xc7db('0x30')](function(_0x58188f){return logger[_0xc7db('0x2d')](_0xc7db('0x2e'),JSON[_0xc7db('0x29')](_0x58188f));});}};}function handleError(){return function(_0x407b83){return logger[_0xc7db('0x2d')](JSON['stringify'](_0x407b83));};}function handleResult(_0x1057fe){return function(_0x369f83){logger['info'](_0xc7db('0x31'),JSON['stringify'](_0x369f83));if(_0x1057fe[_0xc7db('0xe')]&&_0x1057fe[_0xc7db('0xe')][_0xc7db('0xf')]&&!_[_0xc7db('0x32')](_0x1057fe[_0xc7db('0xd')])){setTimeout(handleSendEmail(_0x1057fe,_0x369f83),0x3c*0x3e8);}};}function handleJob(_0x1308f4){return function(){try{if(_[_0xc7db('0x32')](_0x1308f4[_0xc7db('0x33')])){return logger[_0xc7db('0xc')](_0xc7db('0x34'));}if(_['isNil'](_0x1308f4[_0xc7db('0x1c')])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x4c997d={'startDate':moment()[_0xc7db('0x35')](_0x1308f4['subtractNumber'],_0x1308f4[_0xc7db('0x1c')])[_0xc7db('0x18')](_0xc7db('0x36')),'endDate':moment()[_0xc7db('0x18')](_0xc7db('0x36')),'type':_0xc7db('0x37'),'output':_0x1308f4[_0xc7db('0x38')],'name':_0x1308f4[_0xc7db('0x1b')]};if(!_[_0xc7db('0x32')](_0x1308f4[_0xc7db('0x39')])){logger[_0xc7db('0xc')]('exec\x20defaul\x20report\x20id:%s',_0x1308f4[_0xc7db('0x39')]);return analyticDefaultReportController['runReport']({'id':_0x1308f4[_0xc7db('0x39')]},_0x4c997d)[_0xc7db('0x2c')](handleResult(_0x1308f4))[_0xc7db('0x30')](handleError());}if(!_['isNil'](_0x1308f4[_0xc7db('0x3a')])){logger[_0xc7db('0xc')](_0xc7db('0x3b'),_0x1308f4['CustomReportId']);return analyticCustomReportController[_0xc7db('0x3c')]({'id':_0x1308f4[_0xc7db('0x3a')]},_0x4c997d)[_0xc7db('0x2c')](handleResult(_0x1308f4))[_0xc7db('0x30')](handleError());}}catch(_0x5e4031){logger[_0xc7db('0x2d')](JSON['stringify'](_0x5e4031));}return logger['info'](_0xc7db('0x3d'));};}function getJobs(_0x3001a4){var _0x279fe0={};if(_0x3001a4){_0x279fe0['id']=_0x3001a4;}return db[_0xc7db('0x3e')][_0xc7db('0x3f')]({'where':_0x279fe0,'include':[{'model':db[_0xc7db('0xe')],'attributes':['id','name',_0xc7db('0xd')],'include':[{'model':db[_0xc7db('0x40')],'as':_0xc7db('0xf')}]}]})['then'](function(_0x26ad29){var _0x345db0=_[_0xc7db('0x41')](manager[_0xc7db('0x42')]);var _0x19535a=_[_0xc7db('0x43')](_0x26ad29,function(_0x363279){return _0x363279['id'][_0xc7db('0x44')]();});var _0xe76653=_['keyBy'](_0x26ad29,function(_0x13d6a3){return _0x13d6a3['id'][_0xc7db('0x44')]();});var _0x15eac0=_0x3001a4?_0x19535a:_[_0xc7db('0x45')](_0x19535a,_0x345db0);var _0x27bb2d=_[_0xc7db('0x46')](_0x19535a,_0x345db0);var _0x17421d=_['difference'](_0x345db0,_0x19535a);var _0x28342d;var _0x176e71;for(_0x28342d=0x0;_0x28342d<_0x17421d['length']&&!_0x3001a4;_0x28342d+=0x1){_0x176e71=_0x17421d[_0x28342d][_0xc7db('0x44')]();if(manager['exists'](_0x176e71)){manager[_0xc7db('0x47')](_0x176e71);manager[_0xc7db('0x48')](_0x176e71);logger[_0xc7db('0xc')](_0xc7db('0x49'),_0x176e71);}}logger[_0xc7db('0xc')](_0xc7db('0x4a'),JSON[_0xc7db('0x29')](_0x15eac0));for(_0x28342d=0x0;_0x28342d<_0x15eac0[_0xc7db('0x4b')];_0x28342d+=0x1){_0x176e71=_0x15eac0[_0x28342d][_0xc7db('0x44')]();logger[_0xc7db('0xc')]('index',_0x176e71);if(_0x3001a4){logger['info'](_0xc7db('0x4c'),_0x3001a4);logger[_0xc7db('0xc')](JSON[_0xc7db('0x29')](_0xe76653[_0x176e71]));BPromise[_0xc7db('0x4d')]()['then'](handleJob(_0xe76653[_0x176e71]));logger[_0xc7db('0xc')](_0xc7db('0x4e'),_0xe76653[_0x176e71]['name'],_0xe76653[_0x176e71][_0xc7db('0x4f')]);}else if(_0xe76653[_0x176e71][_0xc7db('0x4f')]&&_0xe76653[_0x176e71]['active']&&moment()['isBetween'](_0xe76653[_0x176e71][_0xc7db('0x50')],_0xe76653[_0x176e71][_0xc7db('0x51')])){manager['add'](_0x176e71,_0xe76653[_0x176e71][_0xc7db('0x4f')],handleJob(_0xe76653[_0x176e71]));manager[_0xc7db('0x52')](_0x176e71);logger[_0xc7db('0xc')](_0xc7db('0x53'),_0xe76653[_0x176e71][_0xc7db('0x1b')],_0xe76653[_0x176e71][_0xc7db('0x4f')]);}else if(manager[_0xc7db('0x54')](_0x176e71)){manager['stop'](_0x176e71);manager[_0xc7db('0x48')](_0x176e71);logger[_0xc7db('0xc')]('stop\x20cron',_0xe76653[_0x176e71][_0xc7db('0x1b')],_0xe76653[_0x176e71][_0xc7db('0x4f')]);}}for(_0x28342d=0x0,_0x176e71;_0x28342d<_0x27bb2d[_0xc7db('0x4b')]&&!_0x3001a4;_0x28342d+=0x1){_0x176e71=_0x27bb2d[_0x28342d][_0xc7db('0x44')]();if(manager['exists'](_0x176e71)){if(_0xe76653[_0x176e71]['cron']&&_0xe76653[_0x176e71][_0xc7db('0x55')]&&moment()[_0xc7db('0x56')](_0xe76653[_0x176e71][_0xc7db('0x50')],_0xe76653[_0x176e71][_0xc7db('0x51')])){manager[_0xc7db('0x57')](_0x176e71,_0xe76653[_0x176e71][_0xc7db('0x4f')],handleJob(_0xe76653[_0x176e71]));logger[_0xc7db('0xc')]('update\x20cron',_0xe76653[_0x176e71][_0xc7db('0x1b')],_0xe76653[_0x176e71][_0xc7db('0x4f')]);}else{manager[_0xc7db('0x47')](_0x176e71);manager['deleteJob'](_0x176e71);logger[_0xc7db('0xc')](_0xc7db('0x58'),_0xe76653[_0x176e71][_0xc7db('0x1b')],_0xe76653[_0x176e71][_0xc7db('0x4f')]);}}}})[_0xc7db('0x30')](function(_0x4e75f3){logger['error'](JSON[_0xc7db('0x29')](_0x4e75f3));});}exports['run']=function(_0x1358a4){return getJobs(_0x1358a4);};exports[_0xc7db('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};