Built motion from commit 25580385.|2.6.2
[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 _0xa95d=['Sent','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','catch','error\x20mail','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','toRun','index','resolve','cron','endAt','add','start','exists','stop\x20cron','run','path','moment','cron-job-manager','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','format','%s.%s','basename','extname','existsSync','status','attachments','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'];(function(_0x545460,_0x54abfc){var _0x30c1af=function(_0x1a811e){while(--_0x1a811e){_0x545460['push'](_0x545460['shift']());}};_0x30c1af(++_0x54abfc);}(_0xa95d,0x1b3));var _0xda95=function(_0x2b9847,_0x5b5294){_0x2b9847=_0x2b9847-0x0;var _0x4e393f=_0xa95d[_0x2b9847];return _0x4e393f;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xda95('0x0'));var _=require('lodash');var moment=require(_0xda95('0x1'));var CronJobManager=require(_0xda95('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0xda95('0x3'));var logger=require(_0xda95('0x4'))(_0xda95('0x5'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xda95('0x6'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xda95('0x7')][_0xda95('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1b34fe,_0x16453e){return function(){logger['info'](_0xda95('0x9'),_0x1b34fe[_0xda95('0xa')]);var _0x23a09c=!![];var _0x402613=_0x1b34fe[_0xda95('0xb')][_0xda95('0xc')]();var _0x439035={'account':_0x402613,'message':{'from':util['format'](_0xda95('0xd'),_0x1b34fe[_0xda95('0xb')][_0xda95('0xe')],_0x1b34fe['MailAccount'][_0xda95('0xa')]||_0x1b34fe[_0xda95('0xb')]['Smtp'][_0xda95('0xf')]),'to':_0x1b34fe[_0xda95('0xa')],'cc':_0x1b34fe['cc'],'bcc':_0x1b34fe[_0xda95('0x10')],'subject':util['format'](_0xda95('0x11'),_0x16453e[_0xda95('0xe')],_0x1b34fe[_0xda95('0x12')],_0x1b34fe[_0xda95('0x13')])}};var _0x3c7d9e=path[_0xda95('0x14')](__dirname,_0xda95('0x15'));var _0x181ed2=_0x16453e[_0xda95('0x16')];var _0x6cadfb=util[_0xda95('0x17')](_0xda95('0x18'),path[_0xda95('0x19')](_0x16453e[_0xda95('0x16')],path[_0xda95('0x1a')](_0x16453e[_0xda95('0x16')])),'zip');var _0x31a24d=path['join'](_0x3c7d9e,_0x181ed2);var _0x24fb76=path[_0xda95('0x14')](_0x3c7d9e,_0x6cadfb);if(fs[_0xda95('0x1b')](_0x31a24d)){_0x16453e[_0xda95('0x1c')]='Sent';_0x439035['message'][_0xda95('0x1d')]=[{'filename':_0x181ed2,'path':_0x31a24d}];_0x439035['message'][_0xda95('0x1e')]=util['format'](_0xda95('0x1f'),JSON[_0xda95('0x20')](_0x16453e,null,0x2));}else if(fs[_0xda95('0x1b')](_0x24fb76)){_0x16453e[_0xda95('0x1c')]=_0xda95('0x21');_0x439035[_0xda95('0x22')]['attachments']=[{'filename':_0x6cadfb,'path':_0x24fb76}];}else{_0x439035[_0xda95('0x22')]['text']=_0xda95('0x23');if(!_0x1b34fe['sendIfEmpty']){_0x23a09c=![];logger[_0xda95('0x24')](_0xda95('0x25'));}}if(_0x23a09c){return client[_0xda95('0x26')](_0xda95('0x27'),_0x439035)[_0xda95('0x28')](function(_0x20b9b4){if(_0x20b9b4[_0xda95('0x29')]){return logger[_0xda95('0x29')]('error\x20mail',JSON[_0xda95('0x20')](_0x20b9b4));}return logger[_0xda95('0x24')](_0xda95('0x2a'));})[_0xda95('0x2b')](function(_0x14850f){return logger[_0xda95('0x29')](_0xda95('0x2c'),JSON[_0xda95('0x20')](_0x14850f));});}};}function handleError(){return function(_0x4ccddd){return logger['error'](JSON[_0xda95('0x20')](_0x4ccddd));};}function handleResult(_0x2f29ff){return function(_0x49c49c){logger[_0xda95('0x24')](_0xda95('0x2d'),JSON['stringify'](_0x49c49c));if(_0x2f29ff[_0xda95('0xb')]&&_0x2f29ff['MailAccount'][_0xda95('0x2e')]&&!_[_0xda95('0x2f')](_0x2f29ff[_0xda95('0xa')])){setTimeout(handleSendEmail(_0x2f29ff,_0x49c49c),0x3c*0x3e8);}};}function handleJob(_0x3e27a8){return function(){try{if(_[_0xda95('0x2f')](_0x3e27a8[_0xda95('0x12')])){return logger[_0xda95('0x24')](_0xda95('0x30'));}if(_[_0xda95('0x2f')](_0x3e27a8['subtractUnit'])){return logger[_0xda95('0x24')](_0xda95('0x31'));}var _0x3e2b5f={'startDate':moment()['subtract'](_0x3e27a8[_0xda95('0x12')],_0x3e27a8['subtractUnit'])[_0xda95('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xda95('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xda95('0x32'),'output':_0x3e27a8[_0xda95('0x33')],'name':_0x3e27a8[_0xda95('0xe')]};if(!_['isNil'](_0x3e27a8[_0xda95('0x34')])){logger['info'](_0xda95('0x35'),_0x3e27a8[_0xda95('0x34')]);return analyticDefaultReportController[_0xda95('0x36')]({'id':_0x3e27a8[_0xda95('0x34')]},_0x3e2b5f)['then'](handleResult(_0x3e27a8))[_0xda95('0x2b')](handleError());}if(!_['isNil'](_0x3e27a8['CustomReportId'])){logger[_0xda95('0x24')]('exec\x20custom\x20report\x20id:%s',_0x3e27a8[_0xda95('0x37')]);return analyticCustomReportController[_0xda95('0x36')]({'id':_0x3e27a8[_0xda95('0x37')]},_0x3e2b5f)[_0xda95('0x28')](handleResult(_0x3e27a8))[_0xda95('0x2b')](handleError());}}catch(_0x209afb){logger[_0xda95('0x29')](JSON[_0xda95('0x20')](_0x209afb));}return logger[_0xda95('0x24')](_0xda95('0x38'));};}function getJobs(_0x438334){var _0x6ba455={};if(_0x438334){_0x6ba455['id']=_0x438334;}return db['Schedule']['findAll']({'where':_0x6ba455,'include':[{'model':db[_0xda95('0xb')],'attributes':['id','name',_0xda95('0xa')],'include':[{'model':db[_0xda95('0x39')],'as':_0xda95('0x2e'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})['then'](function(_0xb9fe7e){var _0x21b512=_[_0xda95('0x3a')](manager[_0xda95('0x3b')]);var _0x571a32=_[_0xda95('0x3c')](_0xb9fe7e,function(_0x54df5c){return _0x54df5c['id'][_0xda95('0x3d')]();});var _0x23cce2=_[_0xda95('0x3e')](_0xb9fe7e,function(_0x59b225){return _0x59b225['id'][_0xda95('0x3d')]();});var _0x9619a1=_0x438334?_0x571a32:_[_0xda95('0x3f')](_0x571a32,_0x21b512);var _0x49aa19=_[_0xda95('0x40')](_0x571a32,_0x21b512);var _0x3bbe4c=_[_0xda95('0x3f')](_0x21b512,_0x571a32);var _0x4e9df1;var _0x445fb9;for(_0x4e9df1=0x0;_0x4e9df1<_0x3bbe4c[_0xda95('0x41')]&&!_0x438334;_0x4e9df1+=0x1){_0x445fb9=_0x3bbe4c[_0x4e9df1]['toString']();if(manager['exists'](_0x445fb9)){manager[_0xda95('0x42')](_0x445fb9);manager[_0xda95('0x43')](_0x445fb9);logger['info']('delete\x20cron',_0x445fb9);}}logger[_0xda95('0x24')](_0xda95('0x44'),JSON[_0xda95('0x20')](_0x9619a1));for(_0x4e9df1=0x0;_0x4e9df1<_0x9619a1['length'];_0x4e9df1+=0x1){_0x445fb9=_0x9619a1[_0x4e9df1][_0xda95('0x3d')]();logger[_0xda95('0x24')](_0xda95('0x45'),_0x445fb9);if(_0x438334){logger['info']('my\x20id',_0x438334);logger[_0xda95('0x24')](JSON['stringify'](_0x23cce2[_0x445fb9]));BPromise[_0xda95('0x46')]()[_0xda95('0x28')](handleJob(_0x23cce2[_0x445fb9]));logger['info']('run\x20job',_0x23cce2[_0x445fb9]['name'],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}else if(_0x23cce2[_0x445fb9][_0xda95('0x47')]&&_0x23cce2[_0x445fb9]['active']&&moment()['isBetween'](_0x23cce2[_0x445fb9]['startAt'],_0x23cce2[_0x445fb9][_0xda95('0x48')])){manager[_0xda95('0x49')](_0x445fb9,_0x23cce2[_0x445fb9]['cron'],handleJob(_0x23cce2[_0x445fb9]));manager[_0xda95('0x4a')](_0x445fb9);logger[_0xda95('0x24')]('add\x20cron',_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}else if(manager[_0xda95('0x4b')](_0x445fb9)){manager[_0xda95('0x42')](_0x445fb9);manager['deleteJob'](_0x445fb9);logger[_0xda95('0x24')](_0xda95('0x4c'),_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}}for(_0x4e9df1=0x0,_0x445fb9;_0x4e9df1<_0x49aa19[_0xda95('0x41')]&&!_0x438334;_0x4e9df1+=0x1){_0x445fb9=_0x49aa19[_0x4e9df1][_0xda95('0x3d')]();if(manager[_0xda95('0x4b')](_0x445fb9)){if(_0x23cce2[_0x445fb9][_0xda95('0x47')]&&_0x23cce2[_0x445fb9]['active']&&moment()['isBetween'](_0x23cce2[_0x445fb9]['startAt'],_0x23cce2[_0x445fb9][_0xda95('0x48')])){manager['update'](_0x445fb9,_0x23cce2[_0x445fb9]['cron'],handleJob(_0x23cce2[_0x445fb9]));logger[_0xda95('0x24')]('update\x20cron',_0x23cce2[_0x445fb9]['name'],_0x23cce2[_0x445fb9]['cron']);}else{manager[_0xda95('0x42')](_0x445fb9);manager['deleteJob'](_0x445fb9);logger[_0xda95('0x24')](_0xda95('0x4c'),_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9]['cron']);}}}})[_0xda95('0x2b')](function(_0x174853){logger['error'](JSON[_0xda95('0x20')](_0x174853));});}exports[_0xda95('0x4d')]=function(_0x3ec4da){return getJobs(_0x3ec4da);};exports[_0xda95('0x4a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};