4c96b8823698f7067f238c8b563174093ed102d1
[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 _0x73ce=['getSmtpOptions','\x22%s\x22\x20<%s>','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','format','%s.%s','basename','extname','zip','existsSync','status','Sent','message','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','request','SendMail','error','error\x20mail','stringify','catch','isNil','subtractNumber','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','then','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','map','toString','keyBy','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','cron','active','isBetween','startAt','endAt','add','update','run','start','path','lodash','moment','cron-job-manager','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount'];(function(_0x4767fb,_0x3842f7){var _0x3f9248=function(_0xb57694){while(--_0xb57694){_0x4767fb['push'](_0x4767fb['shift']());}};_0x3f9248(++_0x3842f7);}(_0x73ce,0x98));var _0xe73c=function(_0x5f03c9,_0xc0f24d){_0x5f03c9=_0x5f03c9-0x0;var _0x2fd02d=_0x73ce[_0x5f03c9];return _0x2fd02d;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xe73c('0x0'));var _=require(_0xe73c('0x1'));var moment=require(_0xe73c('0x2'));var CronJobManager=require(_0xe73c('0x3'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xe73c('0x4'))(_0xe73c('0x5'));var db=require(_0xe73c('0x6'))['db'];var analyticCustomReportController=require(_0xe73c('0x7'));var analyticDefaultReportController=require(_0xe73c('0x8'));var client=jayson[_0xe73c('0x9')][_0xe73c('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3086fa,_0x2569fc){return function(){logger['info'](_0xe73c('0xb'),_0x3086fa[_0xe73c('0xc')]);var _0x3e393e=!![];var _0x625dfb=_0x3086fa[_0xe73c('0xd')][_0xe73c('0xe')]();var _0x4cbaf2={'account':_0x625dfb,'message':{'from':util['format'](_0xe73c('0xf'),_0x3086fa[_0xe73c('0xd')][_0xe73c('0x10')],_0x3086fa['MailAccount'][_0xe73c('0xc')]||_0x3086fa[_0xe73c('0xd')][_0xe73c('0x11')][_0xe73c('0x12')]),'to':_0x3086fa['email'],'cc':_0x3086fa['cc'],'bcc':_0x3086fa['bcc'],'subject':util['format'](_0xe73c('0x13'),_0x2569fc[_0xe73c('0x10')],_0x3086fa['subtractNumber'],_0x3086fa[_0xe73c('0x14')])}};var _0x3a6853=path[_0xe73c('0x15')](__dirname,'../../files/reports');var _0x3c784e=_0x2569fc[_0xe73c('0x16')];var _0x4c212b=util[_0xe73c('0x17')](_0xe73c('0x18'),path[_0xe73c('0x19')](_0x2569fc[_0xe73c('0x16')],path[_0xe73c('0x1a')](_0x2569fc['savename'])),_0xe73c('0x1b'));var _0x1c4d8e=path[_0xe73c('0x15')](_0x3a6853,_0x3c784e);var _0x5e73e0=path[_0xe73c('0x15')](_0x3a6853,_0x4c212b);if(fs[_0xe73c('0x1c')](_0x1c4d8e)){_0x2569fc[_0xe73c('0x1d')]=_0xe73c('0x1e');_0x4cbaf2[_0xe73c('0x1f')]['attachments']=[{'filename':_0x3c784e,'path':_0x1c4d8e}];_0x4cbaf2[_0xe73c('0x1f')][_0xe73c('0x20')]=util[_0xe73c('0x17')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x2569fc,null,0x2));}else if(fs[_0xe73c('0x1c')](_0x5e73e0)){_0x2569fc[_0xe73c('0x1d')]='Sent';_0x4cbaf2[_0xe73c('0x1f')]['attachments']=[{'filename':_0x4c212b,'path':_0x5e73e0}];}else{_0x4cbaf2['message'][_0xe73c('0x20')]=_0xe73c('0x21');if(!_0x3086fa[_0xe73c('0x22')]){_0x3e393e=![];logger[_0xe73c('0x23')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x3e393e){return client[_0xe73c('0x24')](_0xe73c('0x25'),_0x4cbaf2)['then'](function(_0x3c782f){if(_0x3c782f[_0xe73c('0x26')]){return logger[_0xe73c('0x26')](_0xe73c('0x27'),JSON[_0xe73c('0x28')](_0x3c782f));}return logger[_0xe73c('0x23')]('email\x20sent');})[_0xe73c('0x29')](function(_0x2b9c09){return logger[_0xe73c('0x26')](_0xe73c('0x27'),JSON[_0xe73c('0x28')](_0x2b9c09));});}};}function handleError(){return function(_0x5b8a1e){return logger['error'](JSON[_0xe73c('0x28')](_0x5b8a1e));};}function handleResult(_0x29ae83){return function(_0x4fc7b9){logger[_0xe73c('0x23')]('data',JSON[_0xe73c('0x28')](_0x4fc7b9));if(_0x29ae83[_0xe73c('0xd')]&&_0x29ae83[_0xe73c('0xd')][_0xe73c('0x11')]&&!_[_0xe73c('0x2a')](_0x29ae83['email'])){setTimeout(handleSendEmail(_0x29ae83,_0x4fc7b9),0x3c*0x3e8);}};}function handleJob(_0x2495b1){return function(){try{if(_['isNil'](_0x2495b1[_0xe73c('0x2b')])){return logger[_0xe73c('0x23')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xe73c('0x2a')](_0x2495b1[_0xe73c('0x14')])){return logger[_0xe73c('0x23')](_0xe73c('0x2c'));}var _0x3b22c9={'startDate':moment()[_0xe73c('0x2d')](_0x2495b1[_0xe73c('0x2b')],_0x2495b1['subtractUnit'])[_0xe73c('0x17')](_0xe73c('0x2e')),'endDate':moment()[_0xe73c('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xe73c('0x2f'),'output':_0x2495b1[_0xe73c('0x30')],'name':_0x2495b1[_0xe73c('0x10')]};if(!_[_0xe73c('0x2a')](_0x2495b1[_0xe73c('0x31')])){logger[_0xe73c('0x23')](_0xe73c('0x32'),_0x2495b1[_0xe73c('0x31')]);return analyticDefaultReportController['runReport']({'id':_0x2495b1[_0xe73c('0x31')]},_0x3b22c9)[_0xe73c('0x33')](handleResult(_0x2495b1))['catch'](handleError());}if(!_[_0xe73c('0x2a')](_0x2495b1[_0xe73c('0x34')])){logger[_0xe73c('0x23')](_0xe73c('0x35'),_0x2495b1[_0xe73c('0x34')]);return analyticCustomReportController[_0xe73c('0x36')]({'id':_0x2495b1[_0xe73c('0x34')]},_0x3b22c9)[_0xe73c('0x33')](handleResult(_0x2495b1))[_0xe73c('0x29')](handleError());}}catch(_0x249b37){logger['error'](JSON[_0xe73c('0x28')](_0x249b37));}return logger[_0xe73c('0x23')](_0xe73c('0x37'));};}function getJobs(_0x232326){var _0x2b0ad0={};if(_0x232326){_0x2b0ad0['id']=_0x232326;}return db[_0xe73c('0x38')][_0xe73c('0x39')]({'where':_0x2b0ad0,'include':[{'model':db['MailAccount'],'attributes':['id',_0xe73c('0x10'),_0xe73c('0xc')],'include':[{'model':db[_0xe73c('0x3a')],'as':_0xe73c('0x11'),'include':[{'model':db[_0xe73c('0x3b')],'as':'CloudProvider'}]}]}]})['then'](function(_0x18f67b){var _0x41c40f=_['keys'](manager[_0xe73c('0x3c')]);var _0x318eee=_[_0xe73c('0x3d')](_0x18f67b,function(_0x3c61e2){return _0x3c61e2['id'][_0xe73c('0x3e')]();});var _0x30cab6=_[_0xe73c('0x3f')](_0x18f67b,function(_0x5d8497){return _0x5d8497['id'][_0xe73c('0x3e')]();});var _0x18ad81=_0x232326?_0x318eee:_[_0xe73c('0x40')](_0x318eee,_0x41c40f);var _0x427b55=_[_0xe73c('0x41')](_0x318eee,_0x41c40f);var _0x2fd55c=_['difference'](_0x41c40f,_0x318eee);var _0x486b61;var _0x11463d;for(_0x486b61=0x0;_0x486b61<_0x2fd55c[_0xe73c('0x42')]&&!_0x232326;_0x486b61+=0x1){_0x11463d=_0x2fd55c[_0x486b61][_0xe73c('0x3e')]();if(manager[_0xe73c('0x43')](_0x11463d)){manager['stop'](_0x11463d);manager[_0xe73c('0x44')](_0x11463d);logger[_0xe73c('0x23')](_0xe73c('0x45'),_0x11463d);}}logger[_0xe73c('0x23')](_0xe73c('0x46'),JSON[_0xe73c('0x28')](_0x18ad81));for(_0x486b61=0x0;_0x486b61<_0x18ad81[_0xe73c('0x42')];_0x486b61+=0x1){_0x11463d=_0x18ad81[_0x486b61][_0xe73c('0x3e')]();logger[_0xe73c('0x23')](_0xe73c('0x47'),_0x11463d);if(_0x232326){logger['info'](_0xe73c('0x48'),_0x232326);logger[_0xe73c('0x23')](JSON[_0xe73c('0x28')](_0x30cab6[_0x11463d]));BPromise[_0xe73c('0x49')]()[_0xe73c('0x33')](handleJob(_0x30cab6[_0x11463d]));logger[_0xe73c('0x23')]('run\x20job',_0x30cab6[_0x11463d][_0xe73c('0x10')],_0x30cab6[_0x11463d]['cron']);}else if(_0x30cab6[_0x11463d][_0xe73c('0x4a')]&&_0x30cab6[_0x11463d][_0xe73c('0x4b')]&&moment()[_0xe73c('0x4c')](_0x30cab6[_0x11463d][_0xe73c('0x4d')],_0x30cab6[_0x11463d][_0xe73c('0x4e')])){manager[_0xe73c('0x4f')](_0x11463d,_0x30cab6[_0x11463d][_0xe73c('0x4a')],handleJob(_0x30cab6[_0x11463d]));manager['start'](_0x11463d);logger[_0xe73c('0x23')]('add\x20cron',_0x30cab6[_0x11463d][_0xe73c('0x10')],_0x30cab6[_0x11463d][_0xe73c('0x4a')]);}else if(manager[_0xe73c('0x43')](_0x11463d)){manager['stop'](_0x11463d);manager[_0xe73c('0x44')](_0x11463d);logger[_0xe73c('0x23')]('stop\x20cron',_0x30cab6[_0x11463d][_0xe73c('0x10')],_0x30cab6[_0x11463d][_0xe73c('0x4a')]);}}for(_0x486b61=0x0,_0x11463d;_0x486b61<_0x427b55[_0xe73c('0x42')]&&!_0x232326;_0x486b61+=0x1){_0x11463d=_0x427b55[_0x486b61][_0xe73c('0x3e')]();if(manager[_0xe73c('0x43')](_0x11463d)){if(_0x30cab6[_0x11463d][_0xe73c('0x4a')]&&_0x30cab6[_0x11463d][_0xe73c('0x4b')]&&moment()['isBetween'](_0x30cab6[_0x11463d][_0xe73c('0x4d')],_0x30cab6[_0x11463d][_0xe73c('0x4e')])){manager[_0xe73c('0x50')](_0x11463d,_0x30cab6[_0x11463d]['cron'],handleJob(_0x30cab6[_0x11463d]));logger[_0xe73c('0x23')]('update\x20cron',_0x30cab6[_0x11463d]['name'],_0x30cab6[_0x11463d][_0xe73c('0x4a')]);}else{manager['stop'](_0x11463d);manager[_0xe73c('0x44')](_0x11463d);logger[_0xe73c('0x23')]('stop\x20cron',_0x30cab6[_0x11463d][_0xe73c('0x10')],_0x30cab6[_0x11463d]['cron']);}}}})[_0xe73c('0x29')](function(_0x222c8a){logger[_0xe73c('0x26')](JSON[_0xe73c('0x28')](_0x222c8a));});}exports[_0xe73c('0x51')]=function(_0x47c516){return getJobs(_0x47c516);};exports[_0xe73c('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};