Built motion from commit (unavailable).|2.3.4
[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 _0xd2c5=['../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','auth','user','pass','format','\x22%s\x22\x20<%s>','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','join','../../files/reports','savename','%s.%s','basename','zip','existsSync','status','Sent','attachments','message','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','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','stringify','info','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','jobs','toString','difference','exists','stop','deleteJob','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','update','run','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger'];(function(_0x3fbd54,_0x36b3f5){var _0xcf1c8=function(_0x29b79c){while(--_0x29b79c){_0x3fbd54['push'](_0x3fbd54['shift']());}};_0xcf1c8(++_0x36b3f5);}(_0xd2c5,0x161));var _0x5d2c=function(_0x32fe9a,_0x394492){_0x32fe9a=_0x32fe9a-0x0;var _0x563f57=_0xd2c5[_0x32fe9a];return _0x563f57;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x5d2c('0x0'));var _=require(_0x5d2c('0x1'));var moment=require(_0x5d2c('0x2'));var CronJobManager=require(_0x5d2c('0x3'));var jayson=require(_0x5d2c('0x4'));var BPromise=require(_0x5d2c('0x5'));var logger=require(_0x5d2c('0x6'))('schedule');var db=require(_0x5d2c('0x7'))['db'];var analyticCustomReportController=require(_0x5d2c('0x8'));var analyticDefaultReportController=require(_0x5d2c('0x9'));var client=jayson[_0x5d2c('0xa')][_0x5d2c('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x26cc54,_0x4fe2fa){return function(){logger['info'](_0x5d2c('0xc'),_0x26cc54[_0x5d2c('0xd')]);var _0x4f9e08=!![];var _0x2cf139={'tls':{'rejectUnauthorized':![]}};if(_0x26cc54[_0x5d2c('0xe')][_0x5d2c('0xf')][_0x5d2c('0x10')]){_0x2cf139[_0x5d2c('0x10')]=_0x26cc54[_0x5d2c('0xe')][_0x5d2c('0xf')][_0x5d2c('0x10')];}else{_0x2cf139[_0x5d2c('0x11')]=_0x26cc54[_0x5d2c('0xe')][_0x5d2c('0xf')]['host'];_0x2cf139[_0x5d2c('0x12')]=_0x26cc54['MailAccount'][_0x5d2c('0xf')][_0x5d2c('0x12')];_0x2cf139[_0x5d2c('0x13')]=_0x26cc54[_0x5d2c('0xe')][_0x5d2c('0xf')][_0x5d2c('0x13')];}if(_0x26cc54[_0x5d2c('0xe')][_0x5d2c('0xf')]['authentication']){_0x2cf139[_0x5d2c('0x14')]={'user':_0x26cc54['MailAccount']['Smtp'][_0x5d2c('0x15')],'pass':_0x26cc54[_0x5d2c('0xe')]['Smtp'][_0x5d2c('0x16')]};}var _0x110e26={'account':_0x2cf139,'message':{'from':util[_0x5d2c('0x17')](_0x5d2c('0x18'),_0x26cc54[_0x5d2c('0xe')]['name'],_0x26cc54[_0x5d2c('0xe')]['email']||_0x26cc54['MailAccount'][_0x5d2c('0xf')]['user']),'to':_0x26cc54[_0x5d2c('0xd')],'cc':_0x26cc54['cc'],'bcc':_0x26cc54[_0x5d2c('0x19')],'subject':util[_0x5d2c('0x17')](_0x5d2c('0x1a'),_0x4fe2fa[_0x5d2c('0x1b')],_0x26cc54['subtractNumber'],_0x26cc54[_0x5d2c('0x1c')])}};var _0x7f6785=path[_0x5d2c('0x1d')](__dirname,_0x5d2c('0x1e'));var _0x269e0f=_0x4fe2fa[_0x5d2c('0x1f')];var _0x5380a9=util[_0x5d2c('0x17')](_0x5d2c('0x20'),path[_0x5d2c('0x21')](_0x4fe2fa[_0x5d2c('0x1f')],path['extname'](_0x4fe2fa[_0x5d2c('0x1f')])),_0x5d2c('0x22'));var _0x502ae0=path[_0x5d2c('0x1d')](_0x7f6785,_0x269e0f);var _0x27a882=path['join'](_0x7f6785,_0x5380a9);if(fs[_0x5d2c('0x23')](_0x502ae0)){_0x4fe2fa[_0x5d2c('0x24')]=_0x5d2c('0x25');_0x110e26['message'][_0x5d2c('0x26')]=[{'filename':_0x269e0f,'path':_0x502ae0}];_0x110e26[_0x5d2c('0x27')][_0x5d2c('0x28')]=util[_0x5d2c('0x17')](_0x5d2c('0x29'),JSON['stringify'](_0x4fe2fa,null,0x2));}else if(fs['existsSync'](_0x27a882)){_0x4fe2fa['status']=_0x5d2c('0x25');_0x110e26[_0x5d2c('0x27')][_0x5d2c('0x26')]=[{'filename':_0x5380a9,'path':_0x27a882}];}else{_0x110e26[_0x5d2c('0x27')][_0x5d2c('0x28')]=_0x5d2c('0x2a');if(!_0x26cc54[_0x5d2c('0x2b')]){_0x4f9e08=![];logger['info'](_0x5d2c('0x2c'));}}if(_0x4f9e08){return client[_0x5d2c('0x2d')](_0x5d2c('0x2e'),_0x110e26)[_0x5d2c('0x2f')](function(_0x59e699){if(_0x59e699[_0x5d2c('0x30')]){return logger['error'](_0x5d2c('0x31'),JSON[_0x5d2c('0x32')](_0x59e699));}return logger[_0x5d2c('0x33')]('email\x20sent');})[_0x5d2c('0x34')](function(_0x1c0876){return logger[_0x5d2c('0x30')]('error\x20mail',JSON['stringify'](_0x1c0876));});}};}function handleError(){return function(_0x17a756){return logger[_0x5d2c('0x30')](JSON[_0x5d2c('0x32')](_0x17a756));};}function handleResult(_0x107e9d){return function(_0x53d025){logger[_0x5d2c('0x33')](_0x5d2c('0x35'),JSON[_0x5d2c('0x32')](_0x53d025));if(_0x107e9d['MailAccount']&&_0x107e9d[_0x5d2c('0xe')][_0x5d2c('0xf')]&&!_['isNil'](_0x107e9d[_0x5d2c('0xd')])){setTimeout(handleSendEmail(_0x107e9d,_0x53d025),0x3c*0x3e8);}};}function handleJob(_0xcd4966){return function(){try{if(_[_0x5d2c('0x36')](_0xcd4966[_0x5d2c('0x37')])){return logger[_0x5d2c('0x33')](_0x5d2c('0x38'));}if(_[_0x5d2c('0x36')](_0xcd4966['subtractUnit'])){return logger[_0x5d2c('0x33')](_0x5d2c('0x39'));}var _0x1e7862={'startDate':moment()[_0x5d2c('0x3a')](_0xcd4966[_0x5d2c('0x37')],_0xcd4966[_0x5d2c('0x1c')])[_0x5d2c('0x17')](_0x5d2c('0x3b')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x5d2c('0x3c'),'output':_0xcd4966[_0x5d2c('0x3d')],'name':_0xcd4966[_0x5d2c('0x1b')]};if(!_[_0x5d2c('0x36')](_0xcd4966[_0x5d2c('0x3e')])){logger[_0x5d2c('0x33')](_0x5d2c('0x3f'),_0xcd4966[_0x5d2c('0x3e')]);return analyticDefaultReportController[_0x5d2c('0x40')]({'id':_0xcd4966[_0x5d2c('0x3e')]},_0x1e7862)[_0x5d2c('0x2f')](handleResult(_0xcd4966))[_0x5d2c('0x34')](handleError());}if(!_[_0x5d2c('0x36')](_0xcd4966[_0x5d2c('0x41')])){logger['info'](_0x5d2c('0x42'),_0xcd4966[_0x5d2c('0x41')]);return analyticCustomReportController[_0x5d2c('0x40')]({'id':_0xcd4966[_0x5d2c('0x41')]},_0x1e7862)[_0x5d2c('0x2f')](handleResult(_0xcd4966))[_0x5d2c('0x34')](handleError());}}catch(_0x3e553d){logger[_0x5d2c('0x30')](JSON[_0x5d2c('0x32')](_0x3e553d));}return logger[_0x5d2c('0x33')]('no\x20report\x20id');};}function getJobs(_0x339323){var _0x5abc6d={};if(_0x339323){_0x5abc6d['id']=_0x339323;}return db['Schedule']['findAll']({'where':_0x5abc6d,'include':[{'model':db['MailAccount'],'attributes':['id',_0x5d2c('0x1b'),'email'],'include':[{'model':db['MailServerOut'],'as':_0x5d2c('0xf')}]}]})[_0x5d2c('0x2f')](function(_0x2216f0){var _0x4155fa=_['keys'](manager[_0x5d2c('0x43')]);var _0x333dcc=_['map'](_0x2216f0,function(_0x5123ed){return _0x5123ed['id'][_0x5d2c('0x44')]();});var _0x27593c=_['keyBy'](_0x2216f0,function(_0xdd3a54){return _0xdd3a54['id'][_0x5d2c('0x44')]();});var _0x1cecd4=_0x339323?_0x333dcc:_[_0x5d2c('0x45')](_0x333dcc,_0x4155fa);var _0x40a3c4=_['intersection'](_0x333dcc,_0x4155fa);var _0x573d03=_['difference'](_0x4155fa,_0x333dcc);var _0x321847;var _0x2892bc;for(_0x321847=0x0;_0x321847<_0x573d03['length']&&!_0x339323;_0x321847+=0x1){_0x2892bc=_0x573d03[_0x321847]['toString']();if(manager[_0x5d2c('0x46')](_0x2892bc)){manager[_0x5d2c('0x47')](_0x2892bc);manager[_0x5d2c('0x48')](_0x2892bc);logger['info']('delete\x20cron',_0x2892bc);}}logger['info'](_0x5d2c('0x49'),JSON['stringify'](_0x1cecd4));for(_0x321847=0x0;_0x321847<_0x1cecd4[_0x5d2c('0x4a')];_0x321847+=0x1){_0x2892bc=_0x1cecd4[_0x321847][_0x5d2c('0x44')]();logger[_0x5d2c('0x33')](_0x5d2c('0x4b'),_0x2892bc);if(_0x339323){logger['info'](_0x5d2c('0x4c'),_0x339323);logger['info'](JSON[_0x5d2c('0x32')](_0x27593c[_0x2892bc]));BPromise[_0x5d2c('0x4d')]()['then'](handleJob(_0x27593c[_0x2892bc]));logger[_0x5d2c('0x33')](_0x5d2c('0x4e'),_0x27593c[_0x2892bc][_0x5d2c('0x1b')],_0x27593c[_0x2892bc]['cron']);}else if(_0x27593c[_0x2892bc][_0x5d2c('0x4f')]&&_0x27593c[_0x2892bc][_0x5d2c('0x50')]&&moment()[_0x5d2c('0x51')](_0x27593c[_0x2892bc][_0x5d2c('0x52')],_0x27593c[_0x2892bc][_0x5d2c('0x53')])){manager[_0x5d2c('0x54')](_0x2892bc,_0x27593c[_0x2892bc]['cron'],handleJob(_0x27593c[_0x2892bc]));manager[_0x5d2c('0x55')](_0x2892bc);logger[_0x5d2c('0x33')](_0x5d2c('0x56'),_0x27593c[_0x2892bc][_0x5d2c('0x1b')],_0x27593c[_0x2892bc][_0x5d2c('0x4f')]);}else if(manager['exists'](_0x2892bc)){manager['stop'](_0x2892bc);manager[_0x5d2c('0x48')](_0x2892bc);logger[_0x5d2c('0x33')](_0x5d2c('0x57'),_0x27593c[_0x2892bc][_0x5d2c('0x1b')],_0x27593c[_0x2892bc]['cron']);}}for(_0x321847=0x0,_0x2892bc;_0x321847<_0x40a3c4[_0x5d2c('0x4a')]&&!_0x339323;_0x321847+=0x1){_0x2892bc=_0x40a3c4[_0x321847][_0x5d2c('0x44')]();if(manager['exists'](_0x2892bc)){if(_0x27593c[_0x2892bc]['cron']&&_0x27593c[_0x2892bc][_0x5d2c('0x50')]&&moment()[_0x5d2c('0x51')](_0x27593c[_0x2892bc]['startAt'],_0x27593c[_0x2892bc][_0x5d2c('0x53')])){manager[_0x5d2c('0x58')](_0x2892bc,_0x27593c[_0x2892bc][_0x5d2c('0x4f')],handleJob(_0x27593c[_0x2892bc]));logger[_0x5d2c('0x33')]('update\x20cron',_0x27593c[_0x2892bc][_0x5d2c('0x1b')],_0x27593c[_0x2892bc][_0x5d2c('0x4f')]);}else{manager[_0x5d2c('0x47')](_0x2892bc);manager[_0x5d2c('0x48')](_0x2892bc);logger[_0x5d2c('0x33')](_0x5d2c('0x57'),_0x27593c[_0x2892bc][_0x5d2c('0x1b')],_0x27593c[_0x2892bc][_0x5d2c('0x4f')]);}}}})[_0x5d2c('0x34')](function(_0x28a2ea){logger[_0x5d2c('0x30')](JSON[_0x5d2c('0x32')](_0x28a2ea));});}exports[_0x5d2c('0x59')]=function(_0x27e164){return getJobs(_0x27e164);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};