a9258d8c8d740dfb6ee51cd6016664d8e22bad3a
[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 _0x1105=['subtractNumber\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','keyBy','toString','difference','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','update','update\x20cron','stop\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','user','email','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','../../files/reports','savename','%s.%s','basename','zip','join','existsSync','Sent','message','text','stringify','attachments','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','email\x20sent','catch','error\x20mail','data','Smtp','isNil','subtractNumber'];(function(_0x3763da,_0x58158b){var _0x5d192f=function(_0x329668){while(--_0x329668){_0x3763da['push'](_0x3763da['shift']());}};_0x5d192f(++_0x58158b);}(_0x1105,0x124));var _0x5110=function(_0x3939ff,_0x255995){_0x3939ff=_0x3939ff-0x0;var _0x57f27b=_0x1105[_0x3939ff];return _0x57f27b;};'use strict';var fs=require('fs');var util=require(_0x5110('0x0'));var path=require('path');var _=require(_0x5110('0x1'));var moment=require(_0x5110('0x2'));var CronJobManager=require(_0x5110('0x3'));var jayson=require(_0x5110('0x4'));var BPromise=require(_0x5110('0x5'));var logger=require(_0x5110('0x6'))('schedule');var db=require(_0x5110('0x7'))['db'];var analyticCustomReportController=require(_0x5110('0x8'));var analyticDefaultReportController=require(_0x5110('0x9'));var client=jayson[_0x5110('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3ac53f,_0x35d214){return function(){logger[_0x5110('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x3ac53f['email']);var _0x199d9f=!![];var _0x2a669c=_0x3ac53f[_0x5110('0xc')][_0x5110('0xd')]();var _0x577e66={'account':_0x2a669c,'message':{'from':util[_0x5110('0xe')](_0x5110('0xf'),_0x3ac53f['MailAccount']['name'],_0x3ac53f[_0x5110('0xc')]['email']||_0x3ac53f['MailAccount']['Smtp'][_0x5110('0x10')]),'to':_0x3ac53f[_0x5110('0x11')],'cc':_0x3ac53f['cc'],'bcc':_0x3ac53f[_0x5110('0x12')],'subject':util[_0x5110('0xe')](_0x5110('0x13'),_0x35d214[_0x5110('0x14')],_0x3ac53f['subtractNumber'],_0x3ac53f[_0x5110('0x15')])}};var _0x5220bd=path['join'](__dirname,_0x5110('0x16'));var _0x2b64c3=_0x35d214[_0x5110('0x17')];var _0x3d05ef=util[_0x5110('0xe')](_0x5110('0x18'),path[_0x5110('0x19')](_0x35d214['savename'],path['extname'](_0x35d214['savename'])),_0x5110('0x1a'));var _0x3aee41=path[_0x5110('0x1b')](_0x5220bd,_0x2b64c3);var _0x2d9e17=path['join'](_0x5220bd,_0x3d05ef);if(fs[_0x5110('0x1c')](_0x3aee41)){_0x35d214['status']=_0x5110('0x1d');_0x577e66[_0x5110('0x1e')]['attachments']=[{'filename':_0x2b64c3,'path':_0x3aee41}];_0x577e66[_0x5110('0x1e')][_0x5110('0x1f')]=util[_0x5110('0xe')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x5110('0x20')](_0x35d214,null,0x2));}else if(fs[_0x5110('0x1c')](_0x2d9e17)){_0x35d214['status']=_0x5110('0x1d');_0x577e66[_0x5110('0x1e')][_0x5110('0x21')]=[{'filename':_0x3d05ef,'path':_0x2d9e17}];}else{_0x577e66[_0x5110('0x1e')][_0x5110('0x1f')]=_0x5110('0x22');if(!_0x3ac53f[_0x5110('0x23')]){_0x199d9f=![];logger['info'](_0x5110('0x24'));}}if(_0x199d9f){return client[_0x5110('0x25')](_0x5110('0x26'),_0x577e66)[_0x5110('0x27')](function(_0x344a4c){if(_0x344a4c[_0x5110('0x28')]){return logger['error']('error\x20mail',JSON['stringify'](_0x344a4c));}return logger['info'](_0x5110('0x29'));})[_0x5110('0x2a')](function(_0x224ca2){return logger[_0x5110('0x28')](_0x5110('0x2b'),JSON[_0x5110('0x20')](_0x224ca2));});}};}function handleError(){return function(_0x20adef){return logger[_0x5110('0x28')](JSON[_0x5110('0x20')](_0x20adef));};}function handleResult(_0x2781a4){return function(_0x4ca968){logger[_0x5110('0xb')](_0x5110('0x2c'),JSON['stringify'](_0x4ca968));if(_0x2781a4[_0x5110('0xc')]&&_0x2781a4[_0x5110('0xc')][_0x5110('0x2d')]&&!_[_0x5110('0x2e')](_0x2781a4[_0x5110('0x11')])){setTimeout(handleSendEmail(_0x2781a4,_0x4ca968),0x3c*0x3e8);}};}function handleJob(_0x317abf){return function(){try{if(_['isNil'](_0x317abf[_0x5110('0x2f')])){return logger[_0x5110('0xb')](_0x5110('0x30'));}if(_[_0x5110('0x2e')](_0x317abf['subtractUnit'])){return logger[_0x5110('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0x4b7429={'startDate':moment()['subtract'](_0x317abf['subtractNumber'],_0x317abf[_0x5110('0x15')])['format'](_0x5110('0x31')),'endDate':moment()[_0x5110('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x5110('0x32'),'output':_0x317abf[_0x5110('0x33')],'name':_0x317abf[_0x5110('0x14')]};if(!_['isNil'](_0x317abf['DefaultReportId'])){logger[_0x5110('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x317abf[_0x5110('0x34')]);return analyticDefaultReportController[_0x5110('0x35')]({'id':_0x317abf[_0x5110('0x34')]},_0x4b7429)[_0x5110('0x27')](handleResult(_0x317abf))[_0x5110('0x2a')](handleError());}if(!_[_0x5110('0x2e')](_0x317abf[_0x5110('0x36')])){logger[_0x5110('0xb')]('exec\x20custom\x20report\x20id:%s',_0x317abf[_0x5110('0x36')]);return analyticCustomReportController[_0x5110('0x35')]({'id':_0x317abf['CustomReportId']},_0x4b7429)[_0x5110('0x27')](handleResult(_0x317abf))[_0x5110('0x2a')](handleError());}}catch(_0x217939){logger['error'](JSON[_0x5110('0x20')](_0x217939));}return logger[_0x5110('0xb')](_0x5110('0x37'));};}function getJobs(_0x595f51){var _0x5bdea6={};if(_0x595f51){_0x5bdea6['id']=_0x595f51;}return db[_0x5110('0x38')][_0x5110('0x39')]({'where':_0x5bdea6,'include':[{'model':db[_0x5110('0xc')],'attributes':['id',_0x5110('0x14'),_0x5110('0x11')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x5110('0x3a')],'as':'CloudProvider'}]}]}]})[_0x5110('0x27')](function(_0x5cfd77){var _0x14c4a1=_[_0x5110('0x3b')](manager[_0x5110('0x3c')]);var _0x123643=_[_0x5110('0x3d')](_0x5cfd77,function(_0x4867fb){return _0x4867fb['id']['toString']();});var _0xf96c0c=_[_0x5110('0x3e')](_0x5cfd77,function(_0x4c30e4){return _0x4c30e4['id'][_0x5110('0x3f')]();});var _0x12b5ef=_0x595f51?_0x123643:_[_0x5110('0x40')](_0x123643,_0x14c4a1);var _0x147bd8=_['intersection'](_0x123643,_0x14c4a1);var _0x5e7d57=_['difference'](_0x14c4a1,_0x123643);var _0xae5e5c;var _0x414fda;for(_0xae5e5c=0x0;_0xae5e5c<_0x5e7d57[_0x5110('0x41')]&&!_0x595f51;_0xae5e5c+=0x1){_0x414fda=_0x5e7d57[_0xae5e5c]['toString']();if(manager[_0x5110('0x42')](_0x414fda)){manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger[_0x5110('0xb')](_0x5110('0x45'),_0x414fda);}}logger[_0x5110('0xb')]('toRun',JSON['stringify'](_0x12b5ef));for(_0xae5e5c=0x0;_0xae5e5c<_0x12b5ef[_0x5110('0x41')];_0xae5e5c+=0x1){_0x414fda=_0x12b5ef[_0xae5e5c][_0x5110('0x3f')]();logger[_0x5110('0xb')](_0x5110('0x46'),_0x414fda);if(_0x595f51){logger[_0x5110('0xb')](_0x5110('0x47'),_0x595f51);logger[_0x5110('0xb')](JSON[_0x5110('0x20')](_0xf96c0c[_0x414fda]));BPromise[_0x5110('0x48')]()[_0x5110('0x27')](handleJob(_0xf96c0c[_0x414fda]));logger[_0x5110('0xb')](_0x5110('0x49'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else if(_0xf96c0c[_0x414fda][_0x5110('0x4a')]&&_0xf96c0c[_0x414fda][_0x5110('0x4b')]&&moment()[_0x5110('0x4c')](_0xf96c0c[_0x414fda][_0x5110('0x4d')],_0xf96c0c[_0x414fda]['endAt'])){manager[_0x5110('0x4e')](_0x414fda,_0xf96c0c[_0x414fda][_0x5110('0x4a')],handleJob(_0xf96c0c[_0x414fda]));manager[_0x5110('0x4f')](_0x414fda);logger[_0x5110('0xb')](_0x5110('0x50'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else if(manager[_0x5110('0x42')](_0x414fda)){manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger['info']('stop\x20cron',_0xf96c0c[_0x414fda]['name'],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}}for(_0xae5e5c=0x0,_0x414fda;_0xae5e5c<_0x147bd8[_0x5110('0x41')]&&!_0x595f51;_0xae5e5c+=0x1){_0x414fda=_0x147bd8[_0xae5e5c]['toString']();if(manager[_0x5110('0x42')](_0x414fda)){if(_0xf96c0c[_0x414fda][_0x5110('0x4a')]&&_0xf96c0c[_0x414fda][_0x5110('0x4b')]&&moment()[_0x5110('0x4c')](_0xf96c0c[_0x414fda][_0x5110('0x4d')],_0xf96c0c[_0x414fda]['endAt'])){manager[_0x5110('0x51')](_0x414fda,_0xf96c0c[_0x414fda][_0x5110('0x4a')],handleJob(_0xf96c0c[_0x414fda]));logger[_0x5110('0xb')](_0x5110('0x52'),_0xf96c0c[_0x414fda]['name'],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}else{manager[_0x5110('0x43')](_0x414fda);manager[_0x5110('0x44')](_0x414fda);logger['info'](_0x5110('0x53'),_0xf96c0c[_0x414fda][_0x5110('0x14')],_0xf96c0c[_0x414fda][_0x5110('0x4a')]);}}}})[_0x5110('0x2a')](function(_0x369d5c){logger['error'](JSON[_0x5110('0x20')](_0x369d5c));});}exports[_0x5110('0x54')]=function(_0x24220e){return getJobs(_0x24220e);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};