Built motion from commit 936e8062.|2.5.33
[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 _0xfaeb=['join','savename','basename','zip','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','empty\x20file,\x20email\x20not\x20sent','request','then','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','name','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','error','no\x20report\x20id','findAll','keys','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','resolve','cron','active','isBetween','startAt','add','start','add\x20cron','stop\x20cron','endAt','update','update\x20cron','run','util','path','moment','cron-job-manager','jayson/promise','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','Smtp','service','MailAccount','host','port','secure','authentication','auth','pass','bcc','format','subtractNumber','subtractUnit'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0xfaeb,0xe0));var _0xbfae=function(_0x14a0a0,_0x45d0cf){_0x14a0a0=_0x14a0a0-0x0;var _0x56b651=_0xfaeb[_0x14a0a0];return _0x56b651;};'use strict';var fs=require('fs');var util=require(_0xbfae('0x0'));var path=require(_0xbfae('0x1'));var _=require('lodash');var moment=require(_0xbfae('0x2'));var CronJobManager=require(_0xbfae('0x3'));var jayson=require(_0xbfae('0x4'));var BPromise=require('bluebird');var logger=require('../logger')('schedule');var db=require(_0xbfae('0x5'))['db'];var analyticCustomReportController=require(_0xbfae('0x6'));var analyticDefaultReportController=require(_0xbfae('0x7'));var client=jayson[_0xbfae('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3e981a,_0x41cdd3){return function(){logger[_0xbfae('0x9')](_0xbfae('0xa'),_0x3e981a[_0xbfae('0xb')]);var _0xa11675=!![];var _0x1a9f99={'tls':{'rejectUnauthorized':![]}};if(_0x3e981a['MailAccount'][_0xbfae('0xc')][_0xbfae('0xd')]){_0x1a9f99[_0xbfae('0xd')]=_0x3e981a[_0xbfae('0xe')][_0xbfae('0xc')][_0xbfae('0xd')];}else{_0x1a9f99[_0xbfae('0xf')]=_0x3e981a['MailAccount']['Smtp']['host'];_0x1a9f99[_0xbfae('0x10')]=_0x3e981a['MailAccount'][_0xbfae('0xc')][_0xbfae('0x10')];_0x1a9f99['secure']=_0x3e981a['MailAccount'][_0xbfae('0xc')][_0xbfae('0x11')];}if(_0x3e981a[_0xbfae('0xe')][_0xbfae('0xc')][_0xbfae('0x12')]){_0x1a9f99[_0xbfae('0x13')]={'user':_0x3e981a[_0xbfae('0xe')][_0xbfae('0xc')]['user'],'pass':_0x3e981a[_0xbfae('0xe')]['Smtp'][_0xbfae('0x14')]};}var _0x4d8a32={'account':_0x1a9f99,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x3e981a[_0xbfae('0xe')]['name'],_0x3e981a['MailAccount'][_0xbfae('0xb')]||_0x3e981a[_0xbfae('0xe')][_0xbfae('0xc')]['user']),'to':_0x3e981a[_0xbfae('0xb')],'cc':_0x3e981a['cc'],'bcc':_0x3e981a[_0xbfae('0x15')],'subject':util[_0xbfae('0x16')]('Report\x20%s\x20last\x20%s\x20%s',_0x41cdd3['name'],_0x3e981a[_0xbfae('0x17')],_0x3e981a[_0xbfae('0x18')])}};var _0xa143b9=path[_0xbfae('0x19')](__dirname,'../../files/reports');var _0x25619a=_0x41cdd3[_0xbfae('0x1a')];var _0x3d00dc=util['format']('%s.%s',path[_0xbfae('0x1b')](_0x41cdd3[_0xbfae('0x1a')],path['extname'](_0x41cdd3['savename'])),_0xbfae('0x1c'));var _0x27736d=path[_0xbfae('0x19')](_0xa143b9,_0x25619a);var _0x2bce44=path['join'](_0xa143b9,_0x3d00dc);if(fs[_0xbfae('0x1d')](_0x27736d)){_0x41cdd3[_0xbfae('0x1e')]=_0xbfae('0x1f');_0x4d8a32[_0xbfae('0x20')][_0xbfae('0x21')]=[{'filename':_0x25619a,'path':_0x27736d}];_0x4d8a32[_0xbfae('0x20')][_0xbfae('0x22')]=util[_0xbfae('0x16')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xbfae('0x23')](_0x41cdd3,null,0x2));}else if(fs['existsSync'](_0x2bce44)){_0x41cdd3[_0xbfae('0x1e')]=_0xbfae('0x1f');_0x4d8a32[_0xbfae('0x20')][_0xbfae('0x21')]=[{'filename':_0x3d00dc,'path':_0x2bce44}];}else{_0x4d8a32[_0xbfae('0x20')][_0xbfae('0x22')]=_0xbfae('0x24');if(!_0x3e981a['sendIfEmpty']){_0xa11675=![];logger[_0xbfae('0x9')](_0xbfae('0x25'));}}if(_0xa11675){return client[_0xbfae('0x26')]('SendMail',_0x4d8a32)[_0xbfae('0x27')](function(_0x44e401){if(_0x44e401['error']){return logger['error']('error\x20mail',JSON[_0xbfae('0x23')](_0x44e401));}return logger[_0xbfae('0x9')](_0xbfae('0x28'));})['catch'](function(_0x45ac6a){return logger['error']('error\x20mail',JSON[_0xbfae('0x23')](_0x45ac6a));});}};}function handleError(){return function(_0x51440b){return logger['error'](JSON[_0xbfae('0x23')](_0x51440b));};}function handleResult(_0x4588bc){return function(_0x1022ee){logger[_0xbfae('0x9')](_0xbfae('0x29'),JSON['stringify'](_0x1022ee));if(_0x4588bc[_0xbfae('0xe')]&&_0x4588bc[_0xbfae('0xe')][_0xbfae('0xc')]&&!_['isNil'](_0x4588bc['email'])){setTimeout(handleSendEmail(_0x4588bc,_0x1022ee),0x3c*0x3e8);}};}function handleJob(_0x48105f){return function(){try{if(_[_0xbfae('0x2a')](_0x48105f['subtractNumber'])){return logger[_0xbfae('0x9')](_0xbfae('0x2b'));}if(_[_0xbfae('0x2a')](_0x48105f[_0xbfae('0x18')])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x4c526e={'startDate':moment()[_0xbfae('0x2c')](_0x48105f[_0xbfae('0x17')],_0x48105f[_0xbfae('0x18')])[_0xbfae('0x16')](_0xbfae('0x2d')),'endDate':moment()[_0xbfae('0x16')](_0xbfae('0x2d')),'type':_0xbfae('0x2e'),'output':_0x48105f[_0xbfae('0x2f')],'name':_0x48105f[_0xbfae('0x30')]};if(!_[_0xbfae('0x2a')](_0x48105f[_0xbfae('0x31')])){logger[_0xbfae('0x9')](_0xbfae('0x32'),_0x48105f[_0xbfae('0x31')]);return analyticDefaultReportController[_0xbfae('0x33')]({'id':_0x48105f['DefaultReportId']},_0x4c526e)[_0xbfae('0x27')](handleResult(_0x48105f))[_0xbfae('0x34')](handleError());}if(!_[_0xbfae('0x2a')](_0x48105f[_0xbfae('0x35')])){logger[_0xbfae('0x9')](_0xbfae('0x36'),_0x48105f[_0xbfae('0x35')]);return analyticCustomReportController[_0xbfae('0x33')]({'id':_0x48105f[_0xbfae('0x35')]},_0x4c526e)[_0xbfae('0x27')](handleResult(_0x48105f))['catch'](handleError());}}catch(_0xd46110){logger[_0xbfae('0x37')](JSON[_0xbfae('0x23')](_0xd46110));}return logger[_0xbfae('0x9')](_0xbfae('0x38'));};}function getJobs(_0x4d8f7d){var _0x5905e9={};if(_0x4d8f7d){_0x5905e9['id']=_0x4d8f7d;}return db['Schedule'][_0xbfae('0x39')]({'where':_0x5905e9,'include':[{'model':db[_0xbfae('0xe')],'attributes':['id',_0xbfae('0x30'),'email'],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})['then'](function(_0x97427f){var _0x16bbaf=_[_0xbfae('0x3a')](manager['jobs']);var _0x4ae6e4=_[_0xbfae('0x3b')](_0x97427f,function(_0x1cc783){return _0x1cc783['id'][_0xbfae('0x3c')]();});var _0x418b97=_[_0xbfae('0x3d')](_0x97427f,function(_0x27b7e5){return _0x27b7e5['id']['toString']();});var _0x1a09fc=_0x4d8f7d?_0x4ae6e4:_[_0xbfae('0x3e')](_0x4ae6e4,_0x16bbaf);var _0x51fd7b=_[_0xbfae('0x3f')](_0x4ae6e4,_0x16bbaf);var _0x5f05db=_['difference'](_0x16bbaf,_0x4ae6e4);var _0x4a8f22;var _0x12c754;for(_0x4a8f22=0x0;_0x4a8f22<_0x5f05db[_0xbfae('0x40')]&&!_0x4d8f7d;_0x4a8f22+=0x1){_0x12c754=_0x5f05db[_0x4a8f22]['toString']();if(manager[_0xbfae('0x41')](_0x12c754)){manager[_0xbfae('0x42')](_0x12c754);manager[_0xbfae('0x43')](_0x12c754);logger[_0xbfae('0x9')](_0xbfae('0x44'),_0x12c754);}}logger[_0xbfae('0x9')]('toRun',JSON['stringify'](_0x1a09fc));for(_0x4a8f22=0x0;_0x4a8f22<_0x1a09fc['length'];_0x4a8f22+=0x1){_0x12c754=_0x1a09fc[_0x4a8f22][_0xbfae('0x3c')]();logger['info'](_0xbfae('0x45'),_0x12c754);if(_0x4d8f7d){logger[_0xbfae('0x9')]('my\x20id',_0x4d8f7d);logger[_0xbfae('0x9')](JSON[_0xbfae('0x23')](_0x418b97[_0x12c754]));BPromise[_0xbfae('0x46')]()['then'](handleJob(_0x418b97[_0x12c754]));logger['info']('run\x20job',_0x418b97[_0x12c754][_0xbfae('0x30')],_0x418b97[_0x12c754]['cron']);}else if(_0x418b97[_0x12c754][_0xbfae('0x47')]&&_0x418b97[_0x12c754][_0xbfae('0x48')]&&moment()[_0xbfae('0x49')](_0x418b97[_0x12c754][_0xbfae('0x4a')],_0x418b97[_0x12c754]['endAt'])){manager[_0xbfae('0x4b')](_0x12c754,_0x418b97[_0x12c754][_0xbfae('0x47')],handleJob(_0x418b97[_0x12c754]));manager[_0xbfae('0x4c')](_0x12c754);logger[_0xbfae('0x9')](_0xbfae('0x4d'),_0x418b97[_0x12c754][_0xbfae('0x30')],_0x418b97[_0x12c754]['cron']);}else if(manager[_0xbfae('0x41')](_0x12c754)){manager[_0xbfae('0x42')](_0x12c754);manager[_0xbfae('0x43')](_0x12c754);logger[_0xbfae('0x9')](_0xbfae('0x4e'),_0x418b97[_0x12c754][_0xbfae('0x30')],_0x418b97[_0x12c754][_0xbfae('0x47')]);}}for(_0x4a8f22=0x0,_0x12c754;_0x4a8f22<_0x51fd7b['length']&&!_0x4d8f7d;_0x4a8f22+=0x1){_0x12c754=_0x51fd7b[_0x4a8f22][_0xbfae('0x3c')]();if(manager[_0xbfae('0x41')](_0x12c754)){if(_0x418b97[_0x12c754][_0xbfae('0x47')]&&_0x418b97[_0x12c754][_0xbfae('0x48')]&&moment()[_0xbfae('0x49')](_0x418b97[_0x12c754][_0xbfae('0x4a')],_0x418b97[_0x12c754][_0xbfae('0x4f')])){manager[_0xbfae('0x50')](_0x12c754,_0x418b97[_0x12c754][_0xbfae('0x47')],handleJob(_0x418b97[_0x12c754]));logger['info'](_0xbfae('0x51'),_0x418b97[_0x12c754][_0xbfae('0x30')],_0x418b97[_0x12c754][_0xbfae('0x47')]);}else{manager[_0xbfae('0x42')](_0x12c754);manager[_0xbfae('0x43')](_0x12c754);logger[_0xbfae('0x9')](_0xbfae('0x4e'),_0x418b97[_0x12c754][_0xbfae('0x30')],_0x418b97[_0x12c754][_0xbfae('0x47')]);}}}})[_0xbfae('0x34')](function(_0x53975d){logger[_0xbfae('0x37')](JSON['stringify'](_0x53975d));});}exports[_0xbfae('0x52')]=function(_0x4b5e57){return getJobs(_0x4b5e57);};exports[_0xbfae('0x4c')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};