Built motion from commit 97153652.|2.6.26
[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 _0x6de5=['subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','toString','keyBy','difference','intersection','length','exists','delete\x20cron','toRun','index','my\x20id','resolve','isBetween','startAt','endAt','add','cron','start','add\x20cron','stop','update','deleteJob','run','util','cron-job-manager','jayson/promise','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','\x22%s\x22\x20<%s>','name','user','bcc','format','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','existsSync','status','Sent','message','attachments','stringify','text','empty\x20file,\x20email\x20not\x20sent','request','then','error','error\x20mail','email\x20sent','catch','Smtp','isNil'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x6de5,0xbb));var _0x56de=function(_0x404de9,_0x36533d){_0x404de9=_0x404de9-0x0;var _0x404c70=_0x6de5[_0x404de9];return _0x404c70;};'use strict';var fs=require('fs');var util=require(_0x56de('0x0'));var path=require('path');var _=require('lodash');var moment=require('moment');var CronJobManager=require(_0x56de('0x1'));var jayson=require(_0x56de('0x2'));var BPromise=require('bluebird');var logger=require(_0x56de('0x3'))(_0x56de('0x4'));var db=require(_0x56de('0x5'))['db'];var analyticCustomReportController=require(_0x56de('0x6'));var analyticDefaultReportController=require(_0x56de('0x7'));var client=jayson[_0x56de('0x8')][_0x56de('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x145ca5,_0x12b8b8){return function(){logger[_0x56de('0xa')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x145ca5[_0x56de('0xb')]);var _0x1efaac=!![];var _0x109283=_0x145ca5[_0x56de('0xc')]['getSmtpOptions']();var _0x451655={'account':_0x109283,'message':{'from':util['format'](_0x56de('0xd'),_0x145ca5[_0x56de('0xc')][_0x56de('0xe')],_0x145ca5[_0x56de('0xc')][_0x56de('0xb')]||_0x145ca5[_0x56de('0xc')]['Smtp'][_0x56de('0xf')]),'to':_0x145ca5[_0x56de('0xb')],'cc':_0x145ca5['cc'],'bcc':_0x145ca5[_0x56de('0x10')],'subject':util[_0x56de('0x11')]('Report\x20%s\x20last\x20%s\x20%s',_0x12b8b8[_0x56de('0xe')],_0x145ca5[_0x56de('0x12')],_0x145ca5[_0x56de('0x13')])}};var _0x4e38de=path[_0x56de('0x14')](__dirname,'../../files/reports');var _0x5b8321=_0x12b8b8[_0x56de('0x15')];var _0x453f2f=util[_0x56de('0x11')](_0x56de('0x16'),path[_0x56de('0x17')](_0x12b8b8[_0x56de('0x15')],path[_0x56de('0x18')](_0x12b8b8[_0x56de('0x15')])),'zip');var _0x1c9642=path[_0x56de('0x14')](_0x4e38de,_0x5b8321);var _0x434ace=path['join'](_0x4e38de,_0x453f2f);if(fs[_0x56de('0x19')](_0x1c9642)){_0x12b8b8[_0x56de('0x1a')]=_0x56de('0x1b');_0x451655[_0x56de('0x1c')][_0x56de('0x1d')]=[{'filename':_0x5b8321,'path':_0x1c9642}];_0x451655[_0x56de('0x1c')]['text']=util[_0x56de('0x11')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x56de('0x1e')](_0x12b8b8,null,0x2));}else if(fs['existsSync'](_0x434ace)){_0x12b8b8['status']=_0x56de('0x1b');_0x451655[_0x56de('0x1c')][_0x56de('0x1d')]=[{'filename':_0x453f2f,'path':_0x434ace}];}else{_0x451655[_0x56de('0x1c')][_0x56de('0x1f')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x145ca5['sendIfEmpty']){_0x1efaac=![];logger[_0x56de('0xa')](_0x56de('0x20'));}}if(_0x1efaac){return client[_0x56de('0x21')]('SendMail',_0x451655)[_0x56de('0x22')](function(_0x5e7b6a){if(_0x5e7b6a[_0x56de('0x23')]){return logger['error'](_0x56de('0x24'),JSON['stringify'](_0x5e7b6a));}return logger[_0x56de('0xa')](_0x56de('0x25'));})[_0x56de('0x26')](function(_0x4a63e3){return logger[_0x56de('0x23')]('error\x20mail',JSON['stringify'](_0x4a63e3));});}};}function handleError(){return function(_0x30b567){return logger[_0x56de('0x23')](JSON[_0x56de('0x1e')](_0x30b567));};}function handleResult(_0x400c65){return function(_0x4db815){logger[_0x56de('0xa')]('data',JSON[_0x56de('0x1e')](_0x4db815));if(_0x400c65[_0x56de('0xc')]&&_0x400c65[_0x56de('0xc')][_0x56de('0x27')]&&!_[_0x56de('0x28')](_0x400c65['email'])){setTimeout(handleSendEmail(_0x400c65,_0x4db815),0x3c*0x3e8);}};}function handleJob(_0x420ff9){return function(){try{if(_[_0x56de('0x28')](_0x420ff9['subtractNumber'])){return logger['info'](_0x56de('0x29'));}if(_[_0x56de('0x28')](_0x420ff9[_0x56de('0x13')])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x1a60b5={'startDate':moment()[_0x56de('0x2a')](_0x420ff9['subtractNumber'],_0x420ff9[_0x56de('0x13')])[_0x56de('0x11')](_0x56de('0x2b')),'endDate':moment()['format'](_0x56de('0x2b')),'type':_0x56de('0x2c'),'output':_0x420ff9['output'],'name':_0x420ff9[_0x56de('0xe')]};if(!_[_0x56de('0x28')](_0x420ff9['DefaultReportId'])){logger[_0x56de('0xa')]('exec\x20defaul\x20report\x20id:%s',_0x420ff9[_0x56de('0x2d')]);return analyticDefaultReportController['runReport']({'id':_0x420ff9['DefaultReportId']},_0x1a60b5)['then'](handleResult(_0x420ff9))[_0x56de('0x26')](handleError());}if(!_[_0x56de('0x28')](_0x420ff9[_0x56de('0x2e')])){logger[_0x56de('0xa')](_0x56de('0x2f'),_0x420ff9[_0x56de('0x2e')]);return analyticCustomReportController['runReport']({'id':_0x420ff9['CustomReportId']},_0x1a60b5)[_0x56de('0x22')](handleResult(_0x420ff9))[_0x56de('0x26')](handleError());}}catch(_0x1463d8){logger[_0x56de('0x23')](JSON[_0x56de('0x1e')](_0x1463d8));}return logger[_0x56de('0xa')](_0x56de('0x30'));};}function getJobs(_0xf15ee4){var _0x1f9766={};if(_0xf15ee4){_0x1f9766['id']=_0xf15ee4;}return db[_0x56de('0x31')][_0x56de('0x32')]({'where':_0x1f9766,'include':[{'model':db[_0x56de('0xc')],'attributes':['id',_0x56de('0xe'),_0x56de('0xb')],'include':[{'model':db[_0x56de('0x33')],'as':_0x56de('0x27'),'include':[{'model':db[_0x56de('0x34')],'as':_0x56de('0x34')}]}]}]})[_0x56de('0x22')](function(_0x11081e){var _0x382e0b=_['keys'](manager[_0x56de('0x35')]);var _0x2dacb2=_['map'](_0x11081e,function(_0x48fbb6){return _0x48fbb6['id'][_0x56de('0x36')]();});var _0x1d0088=_[_0x56de('0x37')](_0x11081e,function(_0x541585){return _0x541585['id'][_0x56de('0x36')]();});var _0x1545f7=_0xf15ee4?_0x2dacb2:_[_0x56de('0x38')](_0x2dacb2,_0x382e0b);var _0x2704bd=_[_0x56de('0x39')](_0x2dacb2,_0x382e0b);var _0x50780e=_[_0x56de('0x38')](_0x382e0b,_0x2dacb2);var _0x386fe2;var _0x428e23;for(_0x386fe2=0x0;_0x386fe2<_0x50780e[_0x56de('0x3a')]&&!_0xf15ee4;_0x386fe2+=0x1){_0x428e23=_0x50780e[_0x386fe2][_0x56de('0x36')]();if(manager[_0x56de('0x3b')](_0x428e23)){manager['stop'](_0x428e23);manager['deleteJob'](_0x428e23);logger[_0x56de('0xa')](_0x56de('0x3c'),_0x428e23);}}logger[_0x56de('0xa')](_0x56de('0x3d'),JSON[_0x56de('0x1e')](_0x1545f7));for(_0x386fe2=0x0;_0x386fe2<_0x1545f7[_0x56de('0x3a')];_0x386fe2+=0x1){_0x428e23=_0x1545f7[_0x386fe2][_0x56de('0x36')]();logger[_0x56de('0xa')](_0x56de('0x3e'),_0x428e23);if(_0xf15ee4){logger['info'](_0x56de('0x3f'),_0xf15ee4);logger['info'](JSON[_0x56de('0x1e')](_0x1d0088[_0x428e23]));BPromise[_0x56de('0x40')]()[_0x56de('0x22')](handleJob(_0x1d0088[_0x428e23]));logger[_0x56de('0xa')]('run\x20job',_0x1d0088[_0x428e23][_0x56de('0xe')],_0x1d0088[_0x428e23]['cron']);}else if(_0x1d0088[_0x428e23]['cron']&&_0x1d0088[_0x428e23]['active']&&moment()[_0x56de('0x41')](_0x1d0088[_0x428e23][_0x56de('0x42')],_0x1d0088[_0x428e23][_0x56de('0x43')])){manager[_0x56de('0x44')](_0x428e23,_0x1d0088[_0x428e23][_0x56de('0x45')],handleJob(_0x1d0088[_0x428e23]));manager[_0x56de('0x46')](_0x428e23);logger['info'](_0x56de('0x47'),_0x1d0088[_0x428e23]['name'],_0x1d0088[_0x428e23][_0x56de('0x45')]);}else if(manager[_0x56de('0x3b')](_0x428e23)){manager[_0x56de('0x48')](_0x428e23);manager['deleteJob'](_0x428e23);logger[_0x56de('0xa')]('stop\x20cron',_0x1d0088[_0x428e23][_0x56de('0xe')],_0x1d0088[_0x428e23][_0x56de('0x45')]);}}for(_0x386fe2=0x0,_0x428e23;_0x386fe2<_0x2704bd[_0x56de('0x3a')]&&!_0xf15ee4;_0x386fe2+=0x1){_0x428e23=_0x2704bd[_0x386fe2][_0x56de('0x36')]();if(manager[_0x56de('0x3b')](_0x428e23)){if(_0x1d0088[_0x428e23][_0x56de('0x45')]&&_0x1d0088[_0x428e23]['active']&&moment()[_0x56de('0x41')](_0x1d0088[_0x428e23][_0x56de('0x42')],_0x1d0088[_0x428e23][_0x56de('0x43')])){manager[_0x56de('0x49')](_0x428e23,_0x1d0088[_0x428e23][_0x56de('0x45')],handleJob(_0x1d0088[_0x428e23]));logger[_0x56de('0xa')]('update\x20cron',_0x1d0088[_0x428e23][_0x56de('0xe')],_0x1d0088[_0x428e23][_0x56de('0x45')]);}else{manager['stop'](_0x428e23);manager[_0x56de('0x4a')](_0x428e23);logger[_0x56de('0xa')]('stop\x20cron',_0x1d0088[_0x428e23]['name'],_0x1d0088[_0x428e23][_0x56de('0x45')]);}}}})[_0x56de('0x26')](function(_0x43d194){logger['error'](JSON[_0x56de('0x1e')](_0x43d194));});}exports[_0x56de('0x4b')]=function(_0x28242b){return getJobs(_0x28242b);};exports[_0x56de('0x46')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};