db6cfe6fa7e90d4b9f62f5decf9cd8e8a1ea2f37
[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 _0x8493=['name','DefaultReportId','runReport','then','exec\x20custom\x20report\x20id:%s','findAll','keys','jobs','toString','difference','intersection','length','exists','stop','toRun','my\x20id','cron','isBetween','startAt','endAt','start','active','update','update\x20cron','stop\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','pass','format','\x22%s\x22\x20<%s>','bcc','subtractNumber','subtractUnit','join','../../files/reports','savename','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','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','SendMail','error','error\x20mail','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output'];(function(_0x35a9ad,_0x46f8e0){var _0x390fc2=function(_0x216ab9){while(--_0x216ab9){_0x35a9ad['push'](_0x35a9ad['shift']());}};_0x390fc2(++_0x46f8e0);}(_0x8493,0x1aa));var _0x3849=function(_0x38854e,_0x23cbc9){_0x38854e=_0x38854e-0x0;var _0x3f8415=_0x8493[_0x38854e];return _0x3f8415;};'use strict';var fs=require('fs');var util=require(_0x3849('0x0'));var path=require('path');var _=require(_0x3849('0x1'));var moment=require(_0x3849('0x2'));var CronJobManager=require(_0x3849('0x3'));var jayson=require(_0x3849('0x4'));var BPromise=require('bluebird');var logger=require(_0x3849('0x5'))('schedule');var db=require(_0x3849('0x6'))['db'];var analyticCustomReportController=require(_0x3849('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x3849('0x8')][_0x3849('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x310d93,_0x156139){return function(){logger[_0x3849('0xa')](_0x3849('0xb'),_0x310d93[_0x3849('0xc')]);var _0x2aa3b4=!![];var _0x367294={'tls':{'rejectUnauthorized':![]}};if(_0x310d93['MailAccount'][_0x3849('0xd')][_0x3849('0xe')]){_0x367294['service']=_0x310d93[_0x3849('0xf')][_0x3849('0xd')]['service'];}else{_0x367294[_0x3849('0x10')]=_0x310d93[_0x3849('0xf')][_0x3849('0xd')]['host'];_0x367294[_0x3849('0x11')]=_0x310d93[_0x3849('0xf')][_0x3849('0xd')]['port'];_0x367294[_0x3849('0x12')]=_0x310d93[_0x3849('0xf')]['Smtp'][_0x3849('0x12')];}if(_0x310d93[_0x3849('0xf')][_0x3849('0xd')][_0x3849('0x13')]){_0x367294[_0x3849('0x14')]={'user':_0x310d93[_0x3849('0xf')][_0x3849('0xd')][_0x3849('0x15')],'pass':_0x310d93[_0x3849('0xf')][_0x3849('0xd')][_0x3849('0x16')]};}var _0x3c1e7c={'account':_0x367294,'message':{'from':util[_0x3849('0x17')](_0x3849('0x18'),_0x310d93[_0x3849('0xf')]['name'],_0x310d93[_0x3849('0xf')][_0x3849('0xc')]||_0x310d93[_0x3849('0xf')][_0x3849('0xd')][_0x3849('0x15')]),'to':_0x310d93[_0x3849('0xc')],'cc':_0x310d93['cc'],'bcc':_0x310d93[_0x3849('0x19')],'subject':util[_0x3849('0x17')]('Report\x20%s\x20last\x20%s\x20%s',_0x156139['name'],_0x310d93[_0x3849('0x1a')],_0x310d93[_0x3849('0x1b')])}};var _0x5e1298=path[_0x3849('0x1c')](__dirname,_0x3849('0x1d'));var _0x361573=_0x156139['savename'];var _0x1a594b=util[_0x3849('0x17')]('%s.%s',path['basename'](_0x156139['savename'],path['extname'](_0x156139[_0x3849('0x1e')])),_0x3849('0x1f'));var _0x5a66d9=path[_0x3849('0x1c')](_0x5e1298,_0x361573);var _0x4d5534=path[_0x3849('0x1c')](_0x5e1298,_0x1a594b);if(fs[_0x3849('0x20')](_0x5a66d9)){_0x156139[_0x3849('0x21')]=_0x3849('0x22');_0x3c1e7c['message'][_0x3849('0x23')]=[{'filename':_0x361573,'path':_0x5a66d9}];_0x3c1e7c[_0x3849('0x24')][_0x3849('0x25')]=util[_0x3849('0x17')](_0x3849('0x26'),JSON[_0x3849('0x27')](_0x156139,null,0x2));}else if(fs['existsSync'](_0x4d5534)){_0x156139[_0x3849('0x21')]=_0x3849('0x22');_0x3c1e7c['message'][_0x3849('0x23')]=[{'filename':_0x1a594b,'path':_0x4d5534}];}else{_0x3c1e7c[_0x3849('0x24')][_0x3849('0x25')]=_0x3849('0x28');if(!_0x310d93[_0x3849('0x29')]){_0x2aa3b4=![];logger[_0x3849('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x2aa3b4){return client['request'](_0x3849('0x2a'),_0x3c1e7c)['then'](function(_0x36f4c1){if(_0x36f4c1[_0x3849('0x2b')]){return logger[_0x3849('0x2b')](_0x3849('0x2c'),JSON['stringify'](_0x36f4c1));}return logger['info']('email\x20sent');})[_0x3849('0x2d')](function(_0x55a6b5){return logger['error'](_0x3849('0x2c'),JSON[_0x3849('0x27')](_0x55a6b5));});}};}function handleError(){return function(_0x10310f){return logger[_0x3849('0x2b')](JSON[_0x3849('0x27')](_0x10310f));};}function handleResult(_0x40cc85){return function(_0x526e09){logger['info'](_0x3849('0x2e'),JSON['stringify'](_0x526e09));if(_0x40cc85[_0x3849('0xf')]&&_0x40cc85[_0x3849('0xf')][_0x3849('0xd')]&&!_[_0x3849('0x2f')](_0x40cc85['email'])){setTimeout(handleSendEmail(_0x40cc85,_0x526e09),0x3c*0x3e8);}};}function handleJob(_0x504b7a){return function(){try{if(_[_0x3849('0x2f')](_0x504b7a[_0x3849('0x1a')])){return logger['info'](_0x3849('0x30'));}if(_['isNil'](_0x504b7a['subtractUnit'])){return logger[_0x3849('0xa')](_0x3849('0x31'));}var _0x231427={'startDate':moment()[_0x3849('0x32')](_0x504b7a['subtractNumber'],_0x504b7a['subtractUnit'])['format'](_0x3849('0x33')),'endDate':moment()[_0x3849('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x3849('0x34'),'output':_0x504b7a[_0x3849('0x35')],'name':_0x504b7a[_0x3849('0x36')]};if(!_[_0x3849('0x2f')](_0x504b7a[_0x3849('0x37')])){logger[_0x3849('0xa')]('exec\x20defaul\x20report\x20id:%s',_0x504b7a[_0x3849('0x37')]);return analyticDefaultReportController[_0x3849('0x38')]({'id':_0x504b7a[_0x3849('0x37')]},_0x231427)[_0x3849('0x39')](handleResult(_0x504b7a))[_0x3849('0x2d')](handleError());}if(!_['isNil'](_0x504b7a['CustomReportId'])){logger[_0x3849('0xa')](_0x3849('0x3a'),_0x504b7a['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x504b7a['CustomReportId']},_0x231427)[_0x3849('0x39')](handleResult(_0x504b7a))['catch'](handleError());}}catch(_0x2c1973){logger['error'](JSON['stringify'](_0x2c1973));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x29453e){var _0x11e817={};if(_0x29453e){_0x11e817['id']=_0x29453e;}return db['Schedule'][_0x3849('0x3b')]({'where':_0x11e817,'include':[{'model':db[_0x3849('0xf')],'attributes':['id','name',_0x3849('0xc')],'include':[{'model':db['MailServerOut'],'as':_0x3849('0xd')}]}]})[_0x3849('0x39')](function(_0x19c095){var _0x337b8a=_[_0x3849('0x3c')](manager[_0x3849('0x3d')]);var _0x5997f0=_['map'](_0x19c095,function(_0xef976c){return _0xef976c['id'][_0x3849('0x3e')]();});var _0xc7a716=_['keyBy'](_0x19c095,function(_0x578e1f){return _0x578e1f['id'][_0x3849('0x3e')]();});var _0x14eeba=_0x29453e?_0x5997f0:_[_0x3849('0x3f')](_0x5997f0,_0x337b8a);var _0x501b55=_[_0x3849('0x40')](_0x5997f0,_0x337b8a);var _0xf65293=_[_0x3849('0x3f')](_0x337b8a,_0x5997f0);var _0xa5d421;var _0x4531a7;for(_0xa5d421=0x0;_0xa5d421<_0xf65293[_0x3849('0x41')]&&!_0x29453e;_0xa5d421+=0x1){_0x4531a7=_0xf65293[_0xa5d421][_0x3849('0x3e')]();if(manager[_0x3849('0x42')](_0x4531a7)){manager[_0x3849('0x43')](_0x4531a7);manager['deleteJob'](_0x4531a7);logger['info']('delete\x20cron',_0x4531a7);}}logger['info'](_0x3849('0x44'),JSON[_0x3849('0x27')](_0x14eeba));for(_0xa5d421=0x0;_0xa5d421<_0x14eeba['length'];_0xa5d421+=0x1){_0x4531a7=_0x14eeba[_0xa5d421][_0x3849('0x3e')]();logger['info']('index',_0x4531a7);if(_0x29453e){logger[_0x3849('0xa')](_0x3849('0x45'),_0x29453e);logger[_0x3849('0xa')](JSON[_0x3849('0x27')](_0xc7a716[_0x4531a7]));BPromise['resolve']()[_0x3849('0x39')](handleJob(_0xc7a716[_0x4531a7]));logger[_0x3849('0xa')]('run\x20job',_0xc7a716[_0x4531a7]['name'],_0xc7a716[_0x4531a7]['cron']);}else if(_0xc7a716[_0x4531a7][_0x3849('0x46')]&&_0xc7a716[_0x4531a7]['active']&&moment()[_0x3849('0x47')](_0xc7a716[_0x4531a7][_0x3849('0x48')],_0xc7a716[_0x4531a7][_0x3849('0x49')])){manager['add'](_0x4531a7,_0xc7a716[_0x4531a7][_0x3849('0x46')],handleJob(_0xc7a716[_0x4531a7]));manager[_0x3849('0x4a')](_0x4531a7);logger['info']('add\x20cron',_0xc7a716[_0x4531a7]['name'],_0xc7a716[_0x4531a7][_0x3849('0x46')]);}else if(manager[_0x3849('0x42')](_0x4531a7)){manager[_0x3849('0x43')](_0x4531a7);manager['deleteJob'](_0x4531a7);logger[_0x3849('0xa')]('stop\x20cron',_0xc7a716[_0x4531a7][_0x3849('0x36')],_0xc7a716[_0x4531a7]['cron']);}}for(_0xa5d421=0x0,_0x4531a7;_0xa5d421<_0x501b55['length']&&!_0x29453e;_0xa5d421+=0x1){_0x4531a7=_0x501b55[_0xa5d421][_0x3849('0x3e')]();if(manager['exists'](_0x4531a7)){if(_0xc7a716[_0x4531a7][_0x3849('0x46')]&&_0xc7a716[_0x4531a7][_0x3849('0x4b')]&&moment()['isBetween'](_0xc7a716[_0x4531a7][_0x3849('0x48')],_0xc7a716[_0x4531a7][_0x3849('0x49')])){manager[_0x3849('0x4c')](_0x4531a7,_0xc7a716[_0x4531a7][_0x3849('0x46')],handleJob(_0xc7a716[_0x4531a7]));logger[_0x3849('0xa')](_0x3849('0x4d'),_0xc7a716[_0x4531a7][_0x3849('0x36')],_0xc7a716[_0x4531a7][_0x3849('0x46')]);}else{manager[_0x3849('0x43')](_0x4531a7);manager['deleteJob'](_0x4531a7);logger[_0x3849('0xa')](_0x3849('0x4e'),_0xc7a716[_0x4531a7][_0x3849('0x36')],_0xc7a716[_0x4531a7]['cron']);}}}})['catch'](function(_0x47423b){logger[_0x3849('0x2b')](JSON[_0x3849('0x27')](_0x47423b));});}exports[_0x3849('0x4f')]=function(_0x4ab5d4){return getJobs(_0x4ab5d4);};exports[_0x3849('0x4a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};