1517f3547fee00ed615b5b4dea4f6bd4ca14b95b
[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 _0x7fbd=['empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','no\x20report\x20id','Schedule','MailServerOut','keys','jobs','map','toString','difference','length','exists','delete\x20cron','index','my\x20id','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','stop','deleteJob','stop\x20cron','update\x20cron','util','lodash','moment','cron-job-manager','jayson/promise','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','info','email','MailAccount','Smtp','service','host','port','secure','authentication','user','pass','format','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','savename','basename','join','existsSync','status','Sent','message','attachments','text','stringify','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty'];(function(_0x448659,_0x14144e){var _0x4fafeb=function(_0x1764da){while(--_0x1764da){_0x448659['push'](_0x448659['shift']());}};_0x4fafeb(++_0x14144e);}(_0x7fbd,0x170));var _0xd7fb=function(_0x195f3f,_0x9b2710){_0x195f3f=_0x195f3f-0x0;var _0x3c36b3=_0x7fbd[_0x195f3f];return _0x3c36b3;};'use strict';var fs=require('fs');var util=require(_0xd7fb('0x0'));var path=require('path');var _=require(_0xd7fb('0x1'));var moment=require(_0xd7fb('0x2'));var CronJobManager=require(_0xd7fb('0x3'));var jayson=require(_0xd7fb('0x4'));var BPromise=require('bluebird');var logger=require(_0xd7fb('0x5'))('schedule');var db=require(_0xd7fb('0x6'))['db'];var analyticCustomReportController=require(_0xd7fb('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xd7fb('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x52b184,_0x5c76ce){return function(){logger[_0xd7fb('0x9')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x52b184[_0xd7fb('0xa')]);var _0xe6fb58=!![];var _0x596bbb={'tls':{'rejectUnauthorized':![]}};if(_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')][_0xd7fb('0xd')]){_0x596bbb['service']=_0x52b184['MailAccount']['Smtp'][_0xd7fb('0xd')];}else{_0x596bbb[_0xd7fb('0xe')]=_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')]['host'];_0x596bbb['port']=_0x52b184['MailAccount']['Smtp'][_0xd7fb('0xf')];_0x596bbb[_0xd7fb('0x10')]=_0x52b184['MailAccount'][_0xd7fb('0xc')]['secure'];}if(_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')][_0xd7fb('0x11')]){_0x596bbb['auth']={'user':_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')][_0xd7fb('0x12')],'pass':_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')][_0xd7fb('0x13')]};}var _0x28a500={'account':_0x596bbb,'message':{'from':util[_0xd7fb('0x14')]('\x22%s\x22\x20<%s>',_0x52b184[_0xd7fb('0xb')][_0xd7fb('0x15')],_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xa')]||_0x52b184[_0xd7fb('0xb')][_0xd7fb('0xc')][_0xd7fb('0x12')]),'to':_0x52b184[_0xd7fb('0xa')],'cc':_0x52b184['cc'],'bcc':_0x52b184[_0xd7fb('0x16')],'subject':util[_0xd7fb('0x14')](_0xd7fb('0x17'),_0x5c76ce[_0xd7fb('0x15')],_0x52b184[_0xd7fb('0x18')],_0x52b184['subtractUnit'])}};var _0x4859b4=path['join'](__dirname,'../../files/reports');var _0x48e2c4=_0x5c76ce[_0xd7fb('0x19')];var _0x112db6=util[_0xd7fb('0x14')]('%s.%s',path[_0xd7fb('0x1a')](_0x5c76ce[_0xd7fb('0x19')],path['extname'](_0x5c76ce[_0xd7fb('0x19')])),'zip');var _0xd71b22=path[_0xd7fb('0x1b')](_0x4859b4,_0x48e2c4);var _0x5dadeb=path['join'](_0x4859b4,_0x112db6);if(fs[_0xd7fb('0x1c')](_0xd71b22)){_0x5c76ce[_0xd7fb('0x1d')]=_0xd7fb('0x1e');_0x28a500[_0xd7fb('0x1f')][_0xd7fb('0x20')]=[{'filename':_0x48e2c4,'path':_0xd71b22}];_0x28a500['message'][_0xd7fb('0x21')]=util[_0xd7fb('0x14')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xd7fb('0x22')](_0x5c76ce,null,0x2));}else if(fs[_0xd7fb('0x1c')](_0x5dadeb)){_0x5c76ce[_0xd7fb('0x1d')]='Sent';_0x28a500[_0xd7fb('0x1f')][_0xd7fb('0x20')]=[{'filename':_0x112db6,'path':_0x5dadeb}];}else{_0x28a500[_0xd7fb('0x1f')][_0xd7fb('0x21')]=_0xd7fb('0x23');if(!_0x52b184[_0xd7fb('0x24')]){_0xe6fb58=![];logger[_0xd7fb('0x9')](_0xd7fb('0x25'));}}if(_0xe6fb58){return client[_0xd7fb('0x26')](_0xd7fb('0x27'),_0x28a500)[_0xd7fb('0x28')](function(_0x1677d1){if(_0x1677d1['error']){return logger[_0xd7fb('0x29')](_0xd7fb('0x2a'),JSON[_0xd7fb('0x22')](_0x1677d1));}return logger[_0xd7fb('0x9')](_0xd7fb('0x2b'));})['catch'](function(_0x11c3ad){return logger[_0xd7fb('0x29')](_0xd7fb('0x2a'),JSON[_0xd7fb('0x22')](_0x11c3ad));});}};}function handleError(){return function(_0x1a9405){return logger[_0xd7fb('0x29')](JSON['stringify'](_0x1a9405));};}function handleResult(_0x274225){return function(_0x4ace9f){logger[_0xd7fb('0x9')](_0xd7fb('0x2c'),JSON[_0xd7fb('0x22')](_0x4ace9f));if(_0x274225[_0xd7fb('0xb')]&&_0x274225[_0xd7fb('0xb')][_0xd7fb('0xc')]&&!_[_0xd7fb('0x2d')](_0x274225[_0xd7fb('0xa')])){setTimeout(handleSendEmail(_0x274225,_0x4ace9f),0x3c*0x3e8);}};}function handleJob(_0x2ec3ef){return function(){try{if(_[_0xd7fb('0x2d')](_0x2ec3ef[_0xd7fb('0x18')])){return logger[_0xd7fb('0x9')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x2ec3ef[_0xd7fb('0x2e')])){return logger[_0xd7fb('0x9')](_0xd7fb('0x2f'));}var _0x1cc246={'startDate':moment()['subtract'](_0x2ec3ef[_0xd7fb('0x18')],_0x2ec3ef[_0xd7fb('0x2e')])[_0xd7fb('0x14')](_0xd7fb('0x30')),'endDate':moment()[_0xd7fb('0x14')](_0xd7fb('0x30')),'type':_0xd7fb('0x31'),'output':_0x2ec3ef[_0xd7fb('0x32')],'name':_0x2ec3ef['name']};if(!_[_0xd7fb('0x2d')](_0x2ec3ef[_0xd7fb('0x33')])){logger[_0xd7fb('0x9')](_0xd7fb('0x34'),_0x2ec3ef['DefaultReportId']);return analyticDefaultReportController[_0xd7fb('0x35')]({'id':_0x2ec3ef[_0xd7fb('0x33')]},_0x1cc246)[_0xd7fb('0x28')](handleResult(_0x2ec3ef))[_0xd7fb('0x36')](handleError());}if(!_[_0xd7fb('0x2d')](_0x2ec3ef['CustomReportId'])){logger[_0xd7fb('0x9')]('exec\x20custom\x20report\x20id:%s',_0x2ec3ef[_0xd7fb('0x37')]);return analyticCustomReportController[_0xd7fb('0x35')]({'id':_0x2ec3ef[_0xd7fb('0x37')]},_0x1cc246)[_0xd7fb('0x28')](handleResult(_0x2ec3ef))[_0xd7fb('0x36')](handleError());}}catch(_0x1fccef){logger[_0xd7fb('0x29')](JSON[_0xd7fb('0x22')](_0x1fccef));}return logger[_0xd7fb('0x9')](_0xd7fb('0x38'));};}function getJobs(_0x5002ce){var _0x25aaf0={};if(_0x5002ce){_0x25aaf0['id']=_0x5002ce;}return db[_0xd7fb('0x39')]['findAll']({'where':_0x25aaf0,'include':[{'model':db[_0xd7fb('0xb')],'attributes':['id',_0xd7fb('0x15'),_0xd7fb('0xa')],'include':[{'model':db[_0xd7fb('0x3a')],'as':_0xd7fb('0xc')}]}]})[_0xd7fb('0x28')](function(_0x1d0be8){var _0x180951=_[_0xd7fb('0x3b')](manager[_0xd7fb('0x3c')]);var _0x473c3f=_[_0xd7fb('0x3d')](_0x1d0be8,function(_0x4dc1db){return _0x4dc1db['id']['toString']();});var _0x3b3557=_['keyBy'](_0x1d0be8,function(_0x31d94e){return _0x31d94e['id'][_0xd7fb('0x3e')]();});var _0x8c7573=_0x5002ce?_0x473c3f:_[_0xd7fb('0x3f')](_0x473c3f,_0x180951);var _0x17d8ab=_['intersection'](_0x473c3f,_0x180951);var _0x478483=_['difference'](_0x180951,_0x473c3f);var _0xdb5ab9;var _0x13ff5e;for(_0xdb5ab9=0x0;_0xdb5ab9<_0x478483[_0xd7fb('0x40')]&&!_0x5002ce;_0xdb5ab9+=0x1){_0x13ff5e=_0x478483[_0xdb5ab9]['toString']();if(manager[_0xd7fb('0x41')](_0x13ff5e)){manager['stop'](_0x13ff5e);manager['deleteJob'](_0x13ff5e);logger[_0xd7fb('0x9')](_0xd7fb('0x42'),_0x13ff5e);}}logger[_0xd7fb('0x9')]('toRun',JSON[_0xd7fb('0x22')](_0x8c7573));for(_0xdb5ab9=0x0;_0xdb5ab9<_0x8c7573[_0xd7fb('0x40')];_0xdb5ab9+=0x1){_0x13ff5e=_0x8c7573[_0xdb5ab9][_0xd7fb('0x3e')]();logger[_0xd7fb('0x9')](_0xd7fb('0x43'),_0x13ff5e);if(_0x5002ce){logger['info'](_0xd7fb('0x44'),_0x5002ce);logger[_0xd7fb('0x9')](JSON[_0xd7fb('0x22')](_0x3b3557[_0x13ff5e]));BPromise['resolve']()['then'](handleJob(_0x3b3557[_0x13ff5e]));logger[_0xd7fb('0x9')]('run\x20job',_0x3b3557[_0x13ff5e][_0xd7fb('0x15')],_0x3b3557[_0x13ff5e][_0xd7fb('0x45')]);}else if(_0x3b3557[_0x13ff5e][_0xd7fb('0x45')]&&_0x3b3557[_0x13ff5e][_0xd7fb('0x46')]&&moment()[_0xd7fb('0x47')](_0x3b3557[_0x13ff5e][_0xd7fb('0x48')],_0x3b3557[_0x13ff5e][_0xd7fb('0x49')])){manager[_0xd7fb('0x4a')](_0x13ff5e,_0x3b3557[_0x13ff5e]['cron'],handleJob(_0x3b3557[_0x13ff5e]));manager[_0xd7fb('0x4b')](_0x13ff5e);logger['info'](_0xd7fb('0x4c'),_0x3b3557[_0x13ff5e][_0xd7fb('0x15')],_0x3b3557[_0x13ff5e][_0xd7fb('0x45')]);}else if(manager['exists'](_0x13ff5e)){manager[_0xd7fb('0x4d')](_0x13ff5e);manager[_0xd7fb('0x4e')](_0x13ff5e);logger['info'](_0xd7fb('0x4f'),_0x3b3557[_0x13ff5e]['name'],_0x3b3557[_0x13ff5e][_0xd7fb('0x45')]);}}for(_0xdb5ab9=0x0,_0x13ff5e;_0xdb5ab9<_0x17d8ab['length']&&!_0x5002ce;_0xdb5ab9+=0x1){_0x13ff5e=_0x17d8ab[_0xdb5ab9]['toString']();if(manager[_0xd7fb('0x41')](_0x13ff5e)){if(_0x3b3557[_0x13ff5e][_0xd7fb('0x45')]&&_0x3b3557[_0x13ff5e][_0xd7fb('0x46')]&&moment()['isBetween'](_0x3b3557[_0x13ff5e][_0xd7fb('0x48')],_0x3b3557[_0x13ff5e][_0xd7fb('0x49')])){manager['update'](_0x13ff5e,_0x3b3557[_0x13ff5e]['cron'],handleJob(_0x3b3557[_0x13ff5e]));logger[_0xd7fb('0x9')](_0xd7fb('0x50'),_0x3b3557[_0x13ff5e][_0xd7fb('0x15')],_0x3b3557[_0x13ff5e]['cron']);}else{manager[_0xd7fb('0x4d')](_0x13ff5e);manager[_0xd7fb('0x4e')](_0x13ff5e);logger['info'](_0xd7fb('0x4f'),_0x3b3557[_0x13ff5e][_0xd7fb('0x15')],_0x3b3557[_0x13ff5e]['cron']);}}}})[_0xd7fb('0x36')](function(_0x1558b5){logger[_0xd7fb('0x29')](JSON[_0xd7fb('0x22')](_0x1558b5));});}exports['run']=function(_0x3c7c3f){return getJobs(_0x3c7c3f);};exports[_0xd7fb('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};