85691c14be0a9b7cf5f29de9871aeaae498b8394
[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 _0x14b7=['Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','\x22%s\x22\x20<%s>','name','bcc','format','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','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','stringify','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\x20mail','email\x20sent','catch','error','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','deleteJob','toRun','index','cron','active','isBetween','startAt','endAt','start','exists','update','stop\x20cron','run','util','lodash','cron-job-manager','jayson/promise','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info'];(function(_0x487af4,_0x265eb6){var _0x2e5cd5=function(_0xc3e619){while(--_0xc3e619){_0x487af4['push'](_0x487af4['shift']());}};_0x2e5cd5(++_0x265eb6);}(_0x14b7,0x14d));var _0x714b=function(_0x4969d0,_0x4a5788){_0x4969d0=_0x4969d0-0x0;var _0x754944=_0x14b7[_0x4969d0];return _0x754944;};'use strict';var fs=require('fs');var util=require(_0x714b('0x0'));var path=require('path');var _=require(_0x714b('0x1'));var moment=require('moment');var CronJobManager=require(_0x714b('0x2'));var jayson=require(_0x714b('0x3'));var BPromise=require('bluebird');var logger=require(_0x714b('0x4'))(_0x714b('0x5'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x714b('0x6'));var analyticDefaultReportController=require(_0x714b('0x7'));var client=jayson[_0x714b('0x8')][_0x714b('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x16ad16,_0xcfd70b){return function(){logger[_0x714b('0xa')](_0x714b('0xb'),_0x16ad16[_0x714b('0xc')]);var _0x5dd7e9=!![];var _0x13fa78={'tls':{'rejectUnauthorized':![]}};if(_0x16ad16['MailAccount'][_0x714b('0xd')][_0x714b('0xe')]){_0x13fa78['service']=_0x16ad16[_0x714b('0xf')][_0x714b('0xd')][_0x714b('0xe')];}else{_0x13fa78[_0x714b('0x10')]=_0x16ad16['MailAccount'][_0x714b('0xd')][_0x714b('0x10')];_0x13fa78[_0x714b('0x11')]=_0x16ad16[_0x714b('0xf')]['Smtp'][_0x714b('0x11')];_0x13fa78[_0x714b('0x12')]=_0x16ad16['MailAccount'][_0x714b('0xd')]['secure'];}if(_0x16ad16[_0x714b('0xf')]['Smtp'][_0x714b('0x13')]){_0x13fa78[_0x714b('0x14')]={'user':_0x16ad16[_0x714b('0xf')]['Smtp'][_0x714b('0x15')],'pass':_0x16ad16['MailAccount'][_0x714b('0xd')]['pass']};}var _0x44c05a={'account':_0x13fa78,'message':{'from':util['format'](_0x714b('0x16'),_0x16ad16[_0x714b('0xf')][_0x714b('0x17')],_0x16ad16['MailAccount'][_0x714b('0xc')]||_0x16ad16[_0x714b('0xf')][_0x714b('0xd')][_0x714b('0x15')]),'to':_0x16ad16[_0x714b('0xc')],'cc':_0x16ad16['cc'],'bcc':_0x16ad16[_0x714b('0x18')],'subject':util[_0x714b('0x19')]('Report\x20%s\x20last\x20%s\x20%s',_0xcfd70b[_0x714b('0x17')],_0x16ad16[_0x714b('0x1a')],_0x16ad16[_0x714b('0x1b')])}};var _0x2d163c=path[_0x714b('0x1c')](__dirname,_0x714b('0x1d'));var _0x589586=_0xcfd70b[_0x714b('0x1e')];var _0x68677a=util[_0x714b('0x19')](_0x714b('0x1f'),path[_0x714b('0x20')](_0xcfd70b[_0x714b('0x1e')],path[_0x714b('0x21')](_0xcfd70b['savename'])),_0x714b('0x22'));var _0x383d10=path[_0x714b('0x1c')](_0x2d163c,_0x589586);var _0x100267=path[_0x714b('0x1c')](_0x2d163c,_0x68677a);if(fs[_0x714b('0x23')](_0x383d10)){_0xcfd70b['status']=_0x714b('0x24');_0x44c05a['message'][_0x714b('0x25')]=[{'filename':_0x589586,'path':_0x383d10}];_0x44c05a[_0x714b('0x26')][_0x714b('0x27')]=util[_0x714b('0x19')](_0x714b('0x28'),JSON[_0x714b('0x29')](_0xcfd70b,null,0x2));}else if(fs[_0x714b('0x23')](_0x100267)){_0xcfd70b['status']=_0x714b('0x24');_0x44c05a[_0x714b('0x26')][_0x714b('0x25')]=[{'filename':_0x68677a,'path':_0x100267}];}else{_0x44c05a[_0x714b('0x26')]['text']=_0x714b('0x2a');if(!_0x16ad16[_0x714b('0x2b')]){_0x5dd7e9=![];logger[_0x714b('0xa')](_0x714b('0x2c'));}}if(_0x5dd7e9){return client[_0x714b('0x2d')](_0x714b('0x2e'),_0x44c05a)[_0x714b('0x2f')](function(_0x44e34d){if(_0x44e34d['error']){return logger['error'](_0x714b('0x30'),JSON['stringify'](_0x44e34d));}return logger[_0x714b('0xa')](_0x714b('0x31'));})[_0x714b('0x32')](function(_0x26adf9){return logger[_0x714b('0x33')]('error\x20mail',JSON[_0x714b('0x29')](_0x26adf9));});}};}function handleError(){return function(_0x1a450f){return logger[_0x714b('0x33')](JSON[_0x714b('0x29')](_0x1a450f));};}function handleResult(_0x358547){return function(_0x26bb9a){logger['info'](_0x714b('0x34'),JSON[_0x714b('0x29')](_0x26bb9a));if(_0x358547[_0x714b('0xf')]&&_0x358547[_0x714b('0xf')][_0x714b('0xd')]&&!_[_0x714b('0x35')](_0x358547[_0x714b('0xc')])){setTimeout(handleSendEmail(_0x358547,_0x26bb9a),0x3c*0x3e8);}};}function handleJob(_0x36d4f4){return function(){try{if(_[_0x714b('0x35')](_0x36d4f4['subtractNumber'])){return logger[_0x714b('0xa')](_0x714b('0x36'));}if(_[_0x714b('0x35')](_0x36d4f4[_0x714b('0x1b')])){return logger[_0x714b('0xa')](_0x714b('0x37'));}var _0x335211={'startDate':moment()[_0x714b('0x38')](_0x36d4f4[_0x714b('0x1a')],_0x36d4f4[_0x714b('0x1b')])[_0x714b('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x714b('0x39')),'type':_0x714b('0x3a'),'output':_0x36d4f4[_0x714b('0x3b')],'name':_0x36d4f4[_0x714b('0x17')]};if(!_[_0x714b('0x35')](_0x36d4f4['DefaultReportId'])){logger[_0x714b('0xa')]('exec\x20defaul\x20report\x20id:%s',_0x36d4f4[_0x714b('0x3c')]);return analyticDefaultReportController[_0x714b('0x3d')]({'id':_0x36d4f4['DefaultReportId']},_0x335211)['then'](handleResult(_0x36d4f4))[_0x714b('0x32')](handleError());}if(!_['isNil'](_0x36d4f4['CustomReportId'])){logger['info'](_0x714b('0x3e'),_0x36d4f4['CustomReportId']);return analyticCustomReportController[_0x714b('0x3d')]({'id':_0x36d4f4['CustomReportId']},_0x335211)[_0x714b('0x2f')](handleResult(_0x36d4f4))[_0x714b('0x32')](handleError());}}catch(_0x1ce1b7){logger['error'](JSON['stringify'](_0x1ce1b7));}return logger[_0x714b('0xa')](_0x714b('0x3f'));};}function getJobs(_0x309f02){var _0x17ec7d={};if(_0x309f02){_0x17ec7d['id']=_0x309f02;}return db[_0x714b('0x40')][_0x714b('0x41')]({'where':_0x17ec7d,'include':[{'model':db[_0x714b('0xf')],'attributes':['id',_0x714b('0x17'),_0x714b('0xc')],'include':[{'model':db[_0x714b('0x42')],'as':_0x714b('0xd')}]}]})[_0x714b('0x2f')](function(_0xb498e5){var _0x5294c2=_[_0x714b('0x43')](manager[_0x714b('0x44')]);var _0xb6d9b6=_[_0x714b('0x45')](_0xb498e5,function(_0x19385f){return _0x19385f['id'][_0x714b('0x46')]();});var _0x15efbd=_[_0x714b('0x47')](_0xb498e5,function(_0x2f0c33){return _0x2f0c33['id']['toString']();});var _0x27afa6=_0x309f02?_0xb6d9b6:_['difference'](_0xb6d9b6,_0x5294c2);var _0x2733cb=_['intersection'](_0xb6d9b6,_0x5294c2);var _0x2e4260=_[_0x714b('0x48')](_0x5294c2,_0xb6d9b6);var _0x8bdaee;var _0x10f5bb;for(_0x8bdaee=0x0;_0x8bdaee<_0x2e4260['length']&&!_0x309f02;_0x8bdaee+=0x1){_0x10f5bb=_0x2e4260[_0x8bdaee][_0x714b('0x46')]();if(manager['exists'](_0x10f5bb)){manager['stop'](_0x10f5bb);manager[_0x714b('0x49')](_0x10f5bb);logger[_0x714b('0xa')]('delete\x20cron',_0x10f5bb);}}logger[_0x714b('0xa')](_0x714b('0x4a'),JSON[_0x714b('0x29')](_0x27afa6));for(_0x8bdaee=0x0;_0x8bdaee<_0x27afa6['length'];_0x8bdaee+=0x1){_0x10f5bb=_0x27afa6[_0x8bdaee][_0x714b('0x46')]();logger[_0x714b('0xa')](_0x714b('0x4b'),_0x10f5bb);if(_0x309f02){logger[_0x714b('0xa')]('my\x20id',_0x309f02);logger[_0x714b('0xa')](JSON['stringify'](_0x15efbd[_0x10f5bb]));BPromise['resolve']()[_0x714b('0x2f')](handleJob(_0x15efbd[_0x10f5bb]));logger['info']('run\x20job',_0x15efbd[_0x10f5bb]['name'],_0x15efbd[_0x10f5bb][_0x714b('0x4c')]);}else if(_0x15efbd[_0x10f5bb][_0x714b('0x4c')]&&_0x15efbd[_0x10f5bb][_0x714b('0x4d')]&&moment()[_0x714b('0x4e')](_0x15efbd[_0x10f5bb][_0x714b('0x4f')],_0x15efbd[_0x10f5bb][_0x714b('0x50')])){manager['add'](_0x10f5bb,_0x15efbd[_0x10f5bb][_0x714b('0x4c')],handleJob(_0x15efbd[_0x10f5bb]));manager[_0x714b('0x51')](_0x10f5bb);logger[_0x714b('0xa')]('add\x20cron',_0x15efbd[_0x10f5bb][_0x714b('0x17')],_0x15efbd[_0x10f5bb][_0x714b('0x4c')]);}else if(manager[_0x714b('0x52')](_0x10f5bb)){manager['stop'](_0x10f5bb);manager[_0x714b('0x49')](_0x10f5bb);logger[_0x714b('0xa')]('stop\x20cron',_0x15efbd[_0x10f5bb]['name'],_0x15efbd[_0x10f5bb][_0x714b('0x4c')]);}}for(_0x8bdaee=0x0,_0x10f5bb;_0x8bdaee<_0x2733cb['length']&&!_0x309f02;_0x8bdaee+=0x1){_0x10f5bb=_0x2733cb[_0x8bdaee]['toString']();if(manager[_0x714b('0x52')](_0x10f5bb)){if(_0x15efbd[_0x10f5bb][_0x714b('0x4c')]&&_0x15efbd[_0x10f5bb][_0x714b('0x4d')]&&moment()[_0x714b('0x4e')](_0x15efbd[_0x10f5bb][_0x714b('0x4f')],_0x15efbd[_0x10f5bb]['endAt'])){manager[_0x714b('0x53')](_0x10f5bb,_0x15efbd[_0x10f5bb]['cron'],handleJob(_0x15efbd[_0x10f5bb]));logger['info']('update\x20cron',_0x15efbd[_0x10f5bb]['name'],_0x15efbd[_0x10f5bb]['cron']);}else{manager['stop'](_0x10f5bb);manager['deleteJob'](_0x10f5bb);logger[_0x714b('0xa')](_0x714b('0x54'),_0x15efbd[_0x10f5bb]['name'],_0x15efbd[_0x10f5bb][_0x714b('0x4c')]);}}}})['catch'](function(_0x4eb651){logger['error'](JSON[_0x714b('0x29')](_0x4eb651));});}exports[_0x714b('0x55')]=function(_0x3afb1f){return getJobs(_0x3afb1f);};exports[_0x714b('0x51')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};