039f147ac94308406f18f0e92f27e4d6ffc4fc1d
[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 _0xc025=['subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','keyBy','toString','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','run\x20job','cron','active','isBetween','startAt','add','stop\x20cron','endAt','update','update\x20cron','run','path','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','user','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','status','Sent','attachments','text','stringify','message','empty\x20file,\x20email\x20not\x20sent','request','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber'];(function(_0x43925b,_0x54da58){var _0x4a0f4a=function(_0x4dc332){while(--_0x4dc332){_0x43925b['push'](_0x43925b['shift']());}};_0x4a0f4a(++_0x54da58);}(_0xc025,0x12e));var _0x5c02=function(_0x58863d,_0x2da4b4){_0x58863d=_0x58863d-0x0;var _0x177fa1=_0xc025[_0x58863d];return _0x177fa1;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x5c02('0x0'));var _=require('lodash');var moment=require(_0x5c02('0x1'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x5c02('0x2'));var BPromise=require(_0x5c02('0x3'));var logger=require(_0x5c02('0x4'))(_0x5c02('0x5'));var db=require(_0x5c02('0x6'))['db'];var analyticCustomReportController=require(_0x5c02('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x5c02('0x8')][_0x5c02('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x36ad44,_0x48ae73){return function(){logger[_0x5c02('0xa')](_0x5c02('0xb'),_0x36ad44[_0x5c02('0xc')]);var _0x5e842b=!![];var _0x20aa84={'tls':{'rejectUnauthorized':![]}};if(_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')][_0x5c02('0xf')]){_0x20aa84[_0x5c02('0xf')]=_0x36ad44['MailAccount'][_0x5c02('0xe')][_0x5c02('0xf')];}else{_0x20aa84[_0x5c02('0x10')]=_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')]['host'];_0x20aa84[_0x5c02('0x11')]=_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')][_0x5c02('0x11')];_0x20aa84[_0x5c02('0x12')]=_0x36ad44[_0x5c02('0xd')]['Smtp'][_0x5c02('0x12')];}if(_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')][_0x5c02('0x13')]){_0x20aa84['auth']={'user':_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')][_0x5c02('0x14')],'pass':_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')]['pass']};}var _0x15960d={'account':_0x20aa84,'message':{'from':util['format'](_0x5c02('0x15'),_0x36ad44['MailAccount'][_0x5c02('0x16')],_0x36ad44['MailAccount'][_0x5c02('0xc')]||_0x36ad44[_0x5c02('0xd')][_0x5c02('0xe')]['user']),'to':_0x36ad44[_0x5c02('0xc')],'cc':_0x36ad44['cc'],'bcc':_0x36ad44[_0x5c02('0x17')],'subject':util[_0x5c02('0x18')](_0x5c02('0x19'),_0x48ae73['name'],_0x36ad44['subtractNumber'],_0x36ad44[_0x5c02('0x1a')])}};var _0x4cc3a2=path[_0x5c02('0x1b')](__dirname,_0x5c02('0x1c'));var _0x5d0de3=_0x48ae73[_0x5c02('0x1d')];var _0x5be0d4=util[_0x5c02('0x18')]('%s.%s',path[_0x5c02('0x1e')](_0x48ae73[_0x5c02('0x1d')],path[_0x5c02('0x1f')](_0x48ae73[_0x5c02('0x1d')])),_0x5c02('0x20'));var _0x1bfc9f=path[_0x5c02('0x1b')](_0x4cc3a2,_0x5d0de3);var _0x31512e=path[_0x5c02('0x1b')](_0x4cc3a2,_0x5be0d4);if(fs[_0x5c02('0x21')](_0x1bfc9f)){_0x48ae73[_0x5c02('0x22')]=_0x5c02('0x23');_0x15960d['message'][_0x5c02('0x24')]=[{'filename':_0x5d0de3,'path':_0x1bfc9f}];_0x15960d['message'][_0x5c02('0x25')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x5c02('0x26')](_0x48ae73,null,0x2));}else if(fs[_0x5c02('0x21')](_0x31512e)){_0x48ae73[_0x5c02('0x22')]=_0x5c02('0x23');_0x15960d['message']['attachments']=[{'filename':_0x5be0d4,'path':_0x31512e}];}else{_0x15960d[_0x5c02('0x27')][_0x5c02('0x25')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x36ad44['sendIfEmpty']){_0x5e842b=![];logger[_0x5c02('0xa')](_0x5c02('0x28'));}}if(_0x5e842b){return client[_0x5c02('0x29')]('SendMail',_0x15960d)[_0x5c02('0x2a')](function(_0x2dd75d){if(_0x2dd75d[_0x5c02('0x2b')]){return logger[_0x5c02('0x2b')](_0x5c02('0x2c'),JSON[_0x5c02('0x26')](_0x2dd75d));}return logger[_0x5c02('0xa')](_0x5c02('0x2d'));})[_0x5c02('0x2e')](function(_0x23411a){return logger[_0x5c02('0x2b')](_0x5c02('0x2c'),JSON[_0x5c02('0x26')](_0x23411a));});}};}function handleError(){return function(_0x2e2454){return logger[_0x5c02('0x2b')](JSON['stringify'](_0x2e2454));};}function handleResult(_0x54ddb0){return function(_0x3cfc84){logger['info'](_0x5c02('0x2f'),JSON['stringify'](_0x3cfc84));if(_0x54ddb0['MailAccount']&&_0x54ddb0[_0x5c02('0xd')][_0x5c02('0xe')]&&!_[_0x5c02('0x30')](_0x54ddb0['email'])){setTimeout(handleSendEmail(_0x54ddb0,_0x3cfc84),0x3c*0x3e8);}};}function handleJob(_0x415ea){return function(){try{if(_['isNil'](_0x415ea[_0x5c02('0x31')])){return logger['info'](_0x5c02('0x32'));}if(_[_0x5c02('0x30')](_0x415ea[_0x5c02('0x1a')])){return logger[_0x5c02('0xa')]('subtractUnit\x20null\x20or\x20undefined');}var _0x564cf2={'startDate':moment()[_0x5c02('0x33')](_0x415ea['subtractNumber'],_0x415ea[_0x5c02('0x1a')])['format'](_0x5c02('0x34')),'endDate':moment()[_0x5c02('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x5c02('0x35'),'output':_0x415ea[_0x5c02('0x36')],'name':_0x415ea[_0x5c02('0x16')]};if(!_['isNil'](_0x415ea['DefaultReportId'])){logger[_0x5c02('0xa')](_0x5c02('0x37'),_0x415ea[_0x5c02('0x38')]);return analyticDefaultReportController[_0x5c02('0x39')]({'id':_0x415ea[_0x5c02('0x38')]},_0x564cf2)[_0x5c02('0x2a')](handleResult(_0x415ea))['catch'](handleError());}if(!_[_0x5c02('0x30')](_0x415ea[_0x5c02('0x3a')])){logger[_0x5c02('0xa')]('exec\x20custom\x20report\x20id:%s',_0x415ea[_0x5c02('0x3a')]);return analyticCustomReportController[_0x5c02('0x39')]({'id':_0x415ea['CustomReportId']},_0x564cf2)[_0x5c02('0x2a')](handleResult(_0x415ea))['catch'](handleError());}}catch(_0x836be7){logger[_0x5c02('0x2b')](JSON['stringify'](_0x836be7));}return logger[_0x5c02('0xa')](_0x5c02('0x3b'));};}function getJobs(_0x2d1a31){var _0x3f60bb={};if(_0x2d1a31){_0x3f60bb['id']=_0x2d1a31;}return db[_0x5c02('0x3c')][_0x5c02('0x3d')]({'where':_0x3f60bb,'include':[{'model':db['MailAccount'],'attributes':['id',_0x5c02('0x16'),'email'],'include':[{'model':db[_0x5c02('0x3e')],'as':'Smtp'}]}]})['then'](function(_0x383ec2){var _0x3a76f2=_[_0x5c02('0x3f')](manager[_0x5c02('0x40')]);var _0x1a1f53=_[_0x5c02('0x41')](_0x383ec2,function(_0x14910b){return _0x14910b['id']['toString']();});var _0x1ef0d0=_[_0x5c02('0x42')](_0x383ec2,function(_0x486494){return _0x486494['id'][_0x5c02('0x43')]();});var _0xae7fb5=_0x2d1a31?_0x1a1f53:_[_0x5c02('0x44')](_0x1a1f53,_0x3a76f2);var _0x2194e2=_[_0x5c02('0x45')](_0x1a1f53,_0x3a76f2);var _0x202f01=_[_0x5c02('0x44')](_0x3a76f2,_0x1a1f53);var _0x3b2370;var _0x4df3f6;for(_0x3b2370=0x0;_0x3b2370<_0x202f01[_0x5c02('0x46')]&&!_0x2d1a31;_0x3b2370+=0x1){_0x4df3f6=_0x202f01[_0x3b2370][_0x5c02('0x43')]();if(manager[_0x5c02('0x47')](_0x4df3f6)){manager[_0x5c02('0x48')](_0x4df3f6);manager[_0x5c02('0x49')](_0x4df3f6);logger['info'](_0x5c02('0x4a'),_0x4df3f6);}}logger['info'](_0x5c02('0x4b'),JSON[_0x5c02('0x26')](_0xae7fb5));for(_0x3b2370=0x0;_0x3b2370<_0xae7fb5[_0x5c02('0x46')];_0x3b2370+=0x1){_0x4df3f6=_0xae7fb5[_0x3b2370][_0x5c02('0x43')]();logger[_0x5c02('0xa')]('index',_0x4df3f6);if(_0x2d1a31){logger[_0x5c02('0xa')](_0x5c02('0x4c'),_0x2d1a31);logger[_0x5c02('0xa')](JSON['stringify'](_0x1ef0d0[_0x4df3f6]));BPromise['resolve']()[_0x5c02('0x2a')](handleJob(_0x1ef0d0[_0x4df3f6]));logger[_0x5c02('0xa')](_0x5c02('0x4d'),_0x1ef0d0[_0x4df3f6]['name'],_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]);}else if(_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]&&_0x1ef0d0[_0x4df3f6][_0x5c02('0x4f')]&&moment()[_0x5c02('0x50')](_0x1ef0d0[_0x4df3f6][_0x5c02('0x51')],_0x1ef0d0[_0x4df3f6]['endAt'])){manager[_0x5c02('0x52')](_0x4df3f6,_0x1ef0d0[_0x4df3f6]['cron'],handleJob(_0x1ef0d0[_0x4df3f6]));manager['start'](_0x4df3f6);logger['info']('add\x20cron',_0x1ef0d0[_0x4df3f6][_0x5c02('0x16')],_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]);}else if(manager[_0x5c02('0x47')](_0x4df3f6)){manager['stop'](_0x4df3f6);manager[_0x5c02('0x49')](_0x4df3f6);logger[_0x5c02('0xa')](_0x5c02('0x53'),_0x1ef0d0[_0x4df3f6]['name'],_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]);}}for(_0x3b2370=0x0,_0x4df3f6;_0x3b2370<_0x2194e2[_0x5c02('0x46')]&&!_0x2d1a31;_0x3b2370+=0x1){_0x4df3f6=_0x2194e2[_0x3b2370][_0x5c02('0x43')]();if(manager[_0x5c02('0x47')](_0x4df3f6)){if(_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]&&_0x1ef0d0[_0x4df3f6][_0x5c02('0x4f')]&&moment()[_0x5c02('0x50')](_0x1ef0d0[_0x4df3f6][_0x5c02('0x51')],_0x1ef0d0[_0x4df3f6][_0x5c02('0x54')])){manager[_0x5c02('0x55')](_0x4df3f6,_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')],handleJob(_0x1ef0d0[_0x4df3f6]));logger[_0x5c02('0xa')](_0x5c02('0x56'),_0x1ef0d0[_0x4df3f6][_0x5c02('0x16')],_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]);}else{manager[_0x5c02('0x48')](_0x4df3f6);manager['deleteJob'](_0x4df3f6);logger['info'](_0x5c02('0x53'),_0x1ef0d0[_0x4df3f6][_0x5c02('0x16')],_0x1ef0d0[_0x4df3f6][_0x5c02('0x4e')]);}}}})[_0x5c02('0x2e')](function(_0x46af6b){logger[_0x5c02('0x2b')](JSON[_0x5c02('0x26')](_0x46af6b));});}exports[_0x5c02('0x57')]=function(_0x560250){return getJobs(_0x560250);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};