58b271edddd4dc608de6e59a2dc3c968107f2710
[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 _0xc7db=['resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','stop\x20cron','update','update\x20cron','run','start','util','path','lodash','jayson/promise','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','host','port','secure','authentication','auth','user','\x22%s\x22\x20<%s>','name','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','format','%s.%s','basename','extname','zip','existsSync','status','Sent','attachments','message','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','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','error','error\x20mail','email\x20sent','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','difference','intersection','length','exists','stop','deleteJob','toRun','index','my\x20id'];(function(_0x557513,_0x193d69){var _0x15204e=function(_0x5b623e){while(--_0x5b623e){_0x557513['push'](_0x557513['shift']());}};_0x15204e(++_0x193d69);}(_0xc7db,0x17a));var _0xbc7d=function(_0x400478,_0x3caee1){_0x400478=_0x400478-0x0;var _0x4d6fdd=_0xc7db[_0x400478];return _0x4d6fdd;};'use strict';var fs=require('fs');var util=require(_0xbc7d('0x0'));var path=require(_0xbc7d('0x1'));var _=require(_0xbc7d('0x2'));var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require(_0xbc7d('0x3'));var BPromise=require(_0xbc7d('0x4'));var logger=require(_0xbc7d('0x5'))(_0xbc7d('0x6'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xbc7d('0x7'));var analyticDefaultReportController=require(_0xbc7d('0x8'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5dbcb6,_0x1b3da1){return function(){logger[_0xbc7d('0x9')](_0xbc7d('0xa'),_0x5dbcb6[_0xbc7d('0xb')]);var _0x170eb9=!![];var _0x51f730={'tls':{'rejectUnauthorized':![]}};if(_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xd')]['service']){_0x51f730['service']=_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xd')]['service'];}else{_0x51f730['host']=_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xd')][_0xbc7d('0xe')];_0x51f730['port']=_0x5dbcb6['MailAccount'][_0xbc7d('0xd')][_0xbc7d('0xf')];_0x51f730[_0xbc7d('0x10')]=_0x5dbcb6[_0xbc7d('0xc')]['Smtp'][_0xbc7d('0x10')];}if(_0x5dbcb6['MailAccount']['Smtp'][_0xbc7d('0x11')]){_0x51f730[_0xbc7d('0x12')]={'user':_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xd')][_0xbc7d('0x13')],'pass':_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xd')]['pass']};}var _0x1f657a={'account':_0x51f730,'message':{'from':util['format'](_0xbc7d('0x14'),_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0x15')],_0x5dbcb6[_0xbc7d('0xc')][_0xbc7d('0xb')]||_0x5dbcb6[_0xbc7d('0xc')]['Smtp']['user']),'to':_0x5dbcb6['email'],'cc':_0x5dbcb6['cc'],'bcc':_0x5dbcb6['bcc'],'subject':util['format'](_0xbc7d('0x16'),_0x1b3da1[_0xbc7d('0x15')],_0x5dbcb6['subtractNumber'],_0x5dbcb6[_0xbc7d('0x17')])}};var _0x422e90=path[_0xbc7d('0x18')](__dirname,_0xbc7d('0x19'));var _0xc77a1b=_0x1b3da1['savename'];var _0x3572ba=util[_0xbc7d('0x1a')](_0xbc7d('0x1b'),path[_0xbc7d('0x1c')](_0x1b3da1['savename'],path[_0xbc7d('0x1d')](_0x1b3da1['savename'])),_0xbc7d('0x1e'));var _0x3aa9d6=path[_0xbc7d('0x18')](_0x422e90,_0xc77a1b);var _0x3161bb=path[_0xbc7d('0x18')](_0x422e90,_0x3572ba);if(fs[_0xbc7d('0x1f')](_0x3aa9d6)){_0x1b3da1[_0xbc7d('0x20')]=_0xbc7d('0x21');_0x1f657a['message'][_0xbc7d('0x22')]=[{'filename':_0xc77a1b,'path':_0x3aa9d6}];_0x1f657a[_0xbc7d('0x23')][_0xbc7d('0x24')]=util['format'](_0xbc7d('0x25'),JSON[_0xbc7d('0x26')](_0x1b3da1,null,0x2));}else if(fs['existsSync'](_0x3161bb)){_0x1b3da1[_0xbc7d('0x20')]='Sent';_0x1f657a['message'][_0xbc7d('0x22')]=[{'filename':_0x3572ba,'path':_0x3161bb}];}else{_0x1f657a[_0xbc7d('0x23')][_0xbc7d('0x24')]=_0xbc7d('0x27');if(!_0x5dbcb6[_0xbc7d('0x28')]){_0x170eb9=![];logger['info'](_0xbc7d('0x29'));}}if(_0x170eb9){return client[_0xbc7d('0x2a')](_0xbc7d('0x2b'),_0x1f657a)['then'](function(_0x48e88d){if(_0x48e88d[_0xbc7d('0x2c')]){return logger[_0xbc7d('0x2c')](_0xbc7d('0x2d'),JSON[_0xbc7d('0x26')](_0x48e88d));}return logger[_0xbc7d('0x9')](_0xbc7d('0x2e'));})['catch'](function(_0x8d6db3){return logger[_0xbc7d('0x2c')]('error\x20mail',JSON[_0xbc7d('0x26')](_0x8d6db3));});}};}function handleError(){return function(_0x3bfdca){return logger[_0xbc7d('0x2c')](JSON[_0xbc7d('0x26')](_0x3bfdca));};}function handleResult(_0x2443f9){return function(_0x1d7878){logger[_0xbc7d('0x9')]('data',JSON[_0xbc7d('0x26')](_0x1d7878));if(_0x2443f9['MailAccount']&&_0x2443f9[_0xbc7d('0xc')]['Smtp']&&!_['isNil'](_0x2443f9[_0xbc7d('0xb')])){setTimeout(handleSendEmail(_0x2443f9,_0x1d7878),0x3c*0x3e8);}};}function handleJob(_0x4e3e18){return function(){try{if(_[_0xbc7d('0x2f')](_0x4e3e18[_0xbc7d('0x30')])){return logger['info'](_0xbc7d('0x31'));}if(_[_0xbc7d('0x2f')](_0x4e3e18['subtractUnit'])){return logger[_0xbc7d('0x9')](_0xbc7d('0x32'));}var _0xd116a8={'startDate':moment()[_0xbc7d('0x33')](_0x4e3e18[_0xbc7d('0x30')],_0x4e3e18[_0xbc7d('0x17')])[_0xbc7d('0x1a')](_0xbc7d('0x34')),'endDate':moment()[_0xbc7d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x4e3e18[_0xbc7d('0x35')],'name':_0x4e3e18[_0xbc7d('0x15')]};if(!_[_0xbc7d('0x2f')](_0x4e3e18[_0xbc7d('0x36')])){logger[_0xbc7d('0x9')](_0xbc7d('0x37'),_0x4e3e18['DefaultReportId']);return analyticDefaultReportController[_0xbc7d('0x38')]({'id':_0x4e3e18[_0xbc7d('0x36')]},_0xd116a8)[_0xbc7d('0x39')](handleResult(_0x4e3e18))['catch'](handleError());}if(!_[_0xbc7d('0x2f')](_0x4e3e18[_0xbc7d('0x3a')])){logger[_0xbc7d('0x9')](_0xbc7d('0x3b'),_0x4e3e18['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x4e3e18[_0xbc7d('0x3a')]},_0xd116a8)[_0xbc7d('0x39')](handleResult(_0x4e3e18))[_0xbc7d('0x3c')](handleError());}}catch(_0x31b009){logger[_0xbc7d('0x2c')](JSON['stringify'](_0x31b009));}return logger[_0xbc7d('0x9')](_0xbc7d('0x3d'));};}function getJobs(_0x4fb795){var _0x1a351a={};if(_0x4fb795){_0x1a351a['id']=_0x4fb795;}return db[_0xbc7d('0x3e')][_0xbc7d('0x3f')]({'where':_0x1a351a,'include':[{'model':db[_0xbc7d('0xc')],'attributes':['id',_0xbc7d('0x15'),_0xbc7d('0xb')],'include':[{'model':db[_0xbc7d('0x40')],'as':_0xbc7d('0xd')}]}]})['then'](function(_0x4caa71){var _0x2b83ee=_[_0xbc7d('0x41')](manager[_0xbc7d('0x42')]);var _0x278451=_['map'](_0x4caa71,function(_0x163476){return _0x163476['id'][_0xbc7d('0x43')]();});var _0x1979d9=_['keyBy'](_0x4caa71,function(_0x5f4083){return _0x5f4083['id'][_0xbc7d('0x43')]();});var _0x27b603=_0x4fb795?_0x278451:_[_0xbc7d('0x44')](_0x278451,_0x2b83ee);var _0x4f74d3=_[_0xbc7d('0x45')](_0x278451,_0x2b83ee);var _0x57f75d=_[_0xbc7d('0x44')](_0x2b83ee,_0x278451);var _0xf985f6;var _0x3cb744;for(_0xf985f6=0x0;_0xf985f6<_0x57f75d[_0xbc7d('0x46')]&&!_0x4fb795;_0xf985f6+=0x1){_0x3cb744=_0x57f75d[_0xf985f6][_0xbc7d('0x43')]();if(manager[_0xbc7d('0x47')](_0x3cb744)){manager[_0xbc7d('0x48')](_0x3cb744);manager[_0xbc7d('0x49')](_0x3cb744);logger['info']('delete\x20cron',_0x3cb744);}}logger[_0xbc7d('0x9')](_0xbc7d('0x4a'),JSON[_0xbc7d('0x26')](_0x27b603));for(_0xf985f6=0x0;_0xf985f6<_0x27b603[_0xbc7d('0x46')];_0xf985f6+=0x1){_0x3cb744=_0x27b603[_0xf985f6][_0xbc7d('0x43')]();logger[_0xbc7d('0x9')](_0xbc7d('0x4b'),_0x3cb744);if(_0x4fb795){logger[_0xbc7d('0x9')](_0xbc7d('0x4c'),_0x4fb795);logger[_0xbc7d('0x9')](JSON[_0xbc7d('0x26')](_0x1979d9[_0x3cb744]));BPromise[_0xbc7d('0x4d')]()[_0xbc7d('0x39')](handleJob(_0x1979d9[_0x3cb744]));logger[_0xbc7d('0x9')](_0xbc7d('0x4e'),_0x1979d9[_0x3cb744][_0xbc7d('0x15')],_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]);}else if(_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]&&_0x1979d9[_0x3cb744][_0xbc7d('0x50')]&&moment()[_0xbc7d('0x51')](_0x1979d9[_0x3cb744][_0xbc7d('0x52')],_0x1979d9[_0x3cb744][_0xbc7d('0x53')])){manager[_0xbc7d('0x54')](_0x3cb744,_0x1979d9[_0x3cb744][_0xbc7d('0x4f')],handleJob(_0x1979d9[_0x3cb744]));manager['start'](_0x3cb744);logger[_0xbc7d('0x9')](_0xbc7d('0x55'),_0x1979d9[_0x3cb744]['name'],_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]);}else if(manager['exists'](_0x3cb744)){manager[_0xbc7d('0x48')](_0x3cb744);manager['deleteJob'](_0x3cb744);logger[_0xbc7d('0x9')](_0xbc7d('0x56'),_0x1979d9[_0x3cb744]['name'],_0x1979d9[_0x3cb744]['cron']);}}for(_0xf985f6=0x0,_0x3cb744;_0xf985f6<_0x4f74d3[_0xbc7d('0x46')]&&!_0x4fb795;_0xf985f6+=0x1){_0x3cb744=_0x4f74d3[_0xf985f6]['toString']();if(manager['exists'](_0x3cb744)){if(_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]&&_0x1979d9[_0x3cb744][_0xbc7d('0x50')]&&moment()[_0xbc7d('0x51')](_0x1979d9[_0x3cb744]['startAt'],_0x1979d9[_0x3cb744][_0xbc7d('0x53')])){manager[_0xbc7d('0x57')](_0x3cb744,_0x1979d9[_0x3cb744]['cron'],handleJob(_0x1979d9[_0x3cb744]));logger[_0xbc7d('0x9')](_0xbc7d('0x58'),_0x1979d9[_0x3cb744][_0xbc7d('0x15')],_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]);}else{manager['stop'](_0x3cb744);manager[_0xbc7d('0x49')](_0x3cb744);logger[_0xbc7d('0x9')](_0xbc7d('0x56'),_0x1979d9[_0x3cb744]['name'],_0x1979d9[_0x3cb744][_0xbc7d('0x4f')]);}}}})[_0xbc7d('0x3c')](function(_0x120198){logger['error'](JSON[_0xbc7d('0x26')](_0x120198));});}exports[_0xbc7d('0x59')]=function(_0x4618ad){return getJobs(_0x4618ad);};exports[_0xbc7d('0x5a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};