Built motion from commit f7863d46.|2.5.41
[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 _0xf746=['map','toString','keyBy','intersection','difference','exists','stop','delete\x20cron','toRun','length','index','resolve','run\x20job','cron','isBetween','add','start','add\x20cron','deleteJob','endAt','update','update\x20cron','stop\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','format','name','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','%s.%s','basename','savename','extname','zip','status','message','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','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','catch','findAll','keys','jobs'];(function(_0x598a6f,_0x263c42){var _0x47c368=function(_0x432628){while(--_0x432628){_0x598a6f['push'](_0x598a6f['shift']());}};_0x47c368(++_0x263c42);}(_0xf746,0x1da));var _0x6f74=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xf746[_0x279d37];return _0x530173;};'use strict';var fs=require('fs');var util=require(_0x6f74('0x0'));var path=require(_0x6f74('0x1'));var _=require(_0x6f74('0x2'));var moment=require(_0x6f74('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x6f74('0x4'));var BPromise=require(_0x6f74('0x5'));var logger=require('../logger')(_0x6f74('0x6'));var db=require(_0x6f74('0x7'))['db'];var analyticCustomReportController=require(_0x6f74('0x8'));var analyticDefaultReportController=require(_0x6f74('0x9'));var client=jayson['client'][_0x6f74('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x43465c,_0x2f6ddc){return function(){logger[_0x6f74('0xb')](_0x6f74('0xc'),_0x43465c[_0x6f74('0xd')]);var _0x109403=!![];var _0x1d5d56={'tls':{'rejectUnauthorized':![]}};if(_0x43465c[_0x6f74('0xe')][_0x6f74('0xf')][_0x6f74('0x10')]){_0x1d5d56[_0x6f74('0x10')]=_0x43465c[_0x6f74('0xe')]['Smtp'][_0x6f74('0x10')];}else{_0x1d5d56[_0x6f74('0x11')]=_0x43465c[_0x6f74('0xe')]['Smtp'][_0x6f74('0x11')];_0x1d5d56[_0x6f74('0x12')]=_0x43465c[_0x6f74('0xe')]['Smtp'][_0x6f74('0x12')];_0x1d5d56[_0x6f74('0x13')]=_0x43465c[_0x6f74('0xe')][_0x6f74('0xf')]['secure'];}if(_0x43465c[_0x6f74('0xe')][_0x6f74('0xf')][_0x6f74('0x14')]){_0x1d5d56[_0x6f74('0x15')]={'user':_0x43465c[_0x6f74('0xe')][_0x6f74('0xf')]['user'],'pass':_0x43465c[_0x6f74('0xe')]['Smtp'][_0x6f74('0x16')]};}var _0x4c1c6d={'account':_0x1d5d56,'message':{'from':util[_0x6f74('0x17')]('\x22%s\x22\x20<%s>',_0x43465c['MailAccount'][_0x6f74('0x18')],_0x43465c[_0x6f74('0xe')][_0x6f74('0xd')]||_0x43465c['MailAccount']['Smtp'][_0x6f74('0x19')]),'to':_0x43465c[_0x6f74('0xd')],'cc':_0x43465c['cc'],'bcc':_0x43465c['bcc'],'subject':util[_0x6f74('0x17')](_0x6f74('0x1a'),_0x2f6ddc[_0x6f74('0x18')],_0x43465c[_0x6f74('0x1b')],_0x43465c[_0x6f74('0x1c')])}};var _0x2ee0ae=path[_0x6f74('0x1d')](__dirname,_0x6f74('0x1e'));var _0x31ce24=_0x2f6ddc['savename'];var _0x282e7f=util['format'](_0x6f74('0x1f'),path[_0x6f74('0x20')](_0x2f6ddc[_0x6f74('0x21')],path[_0x6f74('0x22')](_0x2f6ddc['savename'])),_0x6f74('0x23'));var _0x3ad4d7=path[_0x6f74('0x1d')](_0x2ee0ae,_0x31ce24);var _0x3b1544=path[_0x6f74('0x1d')](_0x2ee0ae,_0x282e7f);if(fs['existsSync'](_0x3ad4d7)){_0x2f6ddc[_0x6f74('0x24')]='Sent';_0x4c1c6d[_0x6f74('0x25')][_0x6f74('0x26')]=[{'filename':_0x31ce24,'path':_0x3ad4d7}];_0x4c1c6d[_0x6f74('0x25')][_0x6f74('0x27')]=util[_0x6f74('0x17')](_0x6f74('0x28'),JSON[_0x6f74('0x29')](_0x2f6ddc,null,0x2));}else if(fs['existsSync'](_0x3b1544)){_0x2f6ddc[_0x6f74('0x24')]=_0x6f74('0x2a');_0x4c1c6d['message'][_0x6f74('0x26')]=[{'filename':_0x282e7f,'path':_0x3b1544}];}else{_0x4c1c6d[_0x6f74('0x25')][_0x6f74('0x27')]=_0x6f74('0x2b');if(!_0x43465c['sendIfEmpty']){_0x109403=![];logger[_0x6f74('0xb')](_0x6f74('0x2c'));}}if(_0x109403){return client[_0x6f74('0x2d')](_0x6f74('0x2e'),_0x4c1c6d)[_0x6f74('0x2f')](function(_0xa5849){if(_0xa5849[_0x6f74('0x30')]){return logger[_0x6f74('0x30')](_0x6f74('0x31'),JSON['stringify'](_0xa5849));}return logger[_0x6f74('0xb')]('email\x20sent');})['catch'](function(_0x383dbb){return logger[_0x6f74('0x30')](_0x6f74('0x31'),JSON[_0x6f74('0x29')](_0x383dbb));});}};}function handleError(){return function(_0x204dae){return logger[_0x6f74('0x30')](JSON[_0x6f74('0x29')](_0x204dae));};}function handleResult(_0x438067){return function(_0x46e53e){logger[_0x6f74('0xb')](_0x6f74('0x32'),JSON['stringify'](_0x46e53e));if(_0x438067['MailAccount']&&_0x438067['MailAccount'][_0x6f74('0xf')]&&!_[_0x6f74('0x33')](_0x438067[_0x6f74('0xd')])){setTimeout(handleSendEmail(_0x438067,_0x46e53e),0x3c*0x3e8);}};}function handleJob(_0x3c7955){return function(){try{if(_[_0x6f74('0x33')](_0x3c7955['subtractNumber'])){return logger[_0x6f74('0xb')](_0x6f74('0x34'));}if(_['isNil'](_0x3c7955[_0x6f74('0x1c')])){return logger[_0x6f74('0xb')](_0x6f74('0x35'));}var _0x77af45={'startDate':moment()[_0x6f74('0x36')](_0x3c7955[_0x6f74('0x1b')],_0x3c7955[_0x6f74('0x1c')])[_0x6f74('0x17')](_0x6f74('0x37')),'endDate':moment()[_0x6f74('0x17')](_0x6f74('0x37')),'type':_0x6f74('0x38'),'output':_0x3c7955['output'],'name':_0x3c7955['name']};if(!_[_0x6f74('0x33')](_0x3c7955[_0x6f74('0x39')])){logger[_0x6f74('0xb')](_0x6f74('0x3a'),_0x3c7955[_0x6f74('0x39')]);return analyticDefaultReportController[_0x6f74('0x3b')]({'id':_0x3c7955[_0x6f74('0x39')]},_0x77af45)[_0x6f74('0x2f')](handleResult(_0x3c7955))['catch'](handleError());}if(!_['isNil'](_0x3c7955['CustomReportId'])){logger['info'](_0x6f74('0x3c'),_0x3c7955[_0x6f74('0x3d')]);return analyticCustomReportController['runReport']({'id':_0x3c7955[_0x6f74('0x3d')]},_0x77af45)[_0x6f74('0x2f')](handleResult(_0x3c7955))[_0x6f74('0x3e')](handleError());}}catch(_0x2a8443){logger[_0x6f74('0x30')](JSON[_0x6f74('0x29')](_0x2a8443));}return logger[_0x6f74('0xb')]('no\x20report\x20id');};}function getJobs(_0x4fa398){var _0x4bd9b9={};if(_0x4fa398){_0x4bd9b9['id']=_0x4fa398;}return db['Schedule'][_0x6f74('0x3f')]({'where':_0x4bd9b9,'include':[{'model':db['MailAccount'],'attributes':['id',_0x6f74('0x18'),_0x6f74('0xd')],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]}]})[_0x6f74('0x2f')](function(_0x5bc617){var _0x4aaf14=_[_0x6f74('0x40')](manager[_0x6f74('0x41')]);var _0x1625bc=_[_0x6f74('0x42')](_0x5bc617,function(_0xeb91e5){return _0xeb91e5['id'][_0x6f74('0x43')]();});var _0x32d90b=_[_0x6f74('0x44')](_0x5bc617,function(_0x182dcf){return _0x182dcf['id']['toString']();});var _0x526fdc=_0x4fa398?_0x1625bc:_['difference'](_0x1625bc,_0x4aaf14);var _0x4d3a30=_[_0x6f74('0x45')](_0x1625bc,_0x4aaf14);var _0x232c05=_[_0x6f74('0x46')](_0x4aaf14,_0x1625bc);var _0x2cf03b;var _0x4b15af;for(_0x2cf03b=0x0;_0x2cf03b<_0x232c05['length']&&!_0x4fa398;_0x2cf03b+=0x1){_0x4b15af=_0x232c05[_0x2cf03b][_0x6f74('0x43')]();if(manager[_0x6f74('0x47')](_0x4b15af)){manager[_0x6f74('0x48')](_0x4b15af);manager['deleteJob'](_0x4b15af);logger[_0x6f74('0xb')](_0x6f74('0x49'),_0x4b15af);}}logger[_0x6f74('0xb')](_0x6f74('0x4a'),JSON[_0x6f74('0x29')](_0x526fdc));for(_0x2cf03b=0x0;_0x2cf03b<_0x526fdc[_0x6f74('0x4b')];_0x2cf03b+=0x1){_0x4b15af=_0x526fdc[_0x2cf03b][_0x6f74('0x43')]();logger[_0x6f74('0xb')](_0x6f74('0x4c'),_0x4b15af);if(_0x4fa398){logger[_0x6f74('0xb')]('my\x20id',_0x4fa398);logger[_0x6f74('0xb')](JSON[_0x6f74('0x29')](_0x32d90b[_0x4b15af]));BPromise[_0x6f74('0x4d')]()[_0x6f74('0x2f')](handleJob(_0x32d90b[_0x4b15af]));logger[_0x6f74('0xb')](_0x6f74('0x4e'),_0x32d90b[_0x4b15af][_0x6f74('0x18')],_0x32d90b[_0x4b15af][_0x6f74('0x4f')]);}else if(_0x32d90b[_0x4b15af][_0x6f74('0x4f')]&&_0x32d90b[_0x4b15af]['active']&&moment()[_0x6f74('0x50')](_0x32d90b[_0x4b15af]['startAt'],_0x32d90b[_0x4b15af]['endAt'])){manager[_0x6f74('0x51')](_0x4b15af,_0x32d90b[_0x4b15af]['cron'],handleJob(_0x32d90b[_0x4b15af]));manager[_0x6f74('0x52')](_0x4b15af);logger[_0x6f74('0xb')](_0x6f74('0x53'),_0x32d90b[_0x4b15af][_0x6f74('0x18')],_0x32d90b[_0x4b15af]['cron']);}else if(manager['exists'](_0x4b15af)){manager['stop'](_0x4b15af);manager[_0x6f74('0x54')](_0x4b15af);logger[_0x6f74('0xb')]('stop\x20cron',_0x32d90b[_0x4b15af]['name'],_0x32d90b[_0x4b15af][_0x6f74('0x4f')]);}}for(_0x2cf03b=0x0,_0x4b15af;_0x2cf03b<_0x4d3a30[_0x6f74('0x4b')]&&!_0x4fa398;_0x2cf03b+=0x1){_0x4b15af=_0x4d3a30[_0x2cf03b]['toString']();if(manager['exists'](_0x4b15af)){if(_0x32d90b[_0x4b15af]['cron']&&_0x32d90b[_0x4b15af]['active']&&moment()[_0x6f74('0x50')](_0x32d90b[_0x4b15af]['startAt'],_0x32d90b[_0x4b15af][_0x6f74('0x55')])){manager[_0x6f74('0x56')](_0x4b15af,_0x32d90b[_0x4b15af][_0x6f74('0x4f')],handleJob(_0x32d90b[_0x4b15af]));logger[_0x6f74('0xb')](_0x6f74('0x57'),_0x32d90b[_0x4b15af]['name'],_0x32d90b[_0x4b15af][_0x6f74('0x4f')]);}else{manager[_0x6f74('0x48')](_0x4b15af);manager[_0x6f74('0x54')](_0x4b15af);logger[_0x6f74('0xb')](_0x6f74('0x58'),_0x32d90b[_0x4b15af][_0x6f74('0x18')],_0x32d90b[_0x4b15af][_0x6f74('0x4f')]);}}}})[_0x6f74('0x3e')](function(_0x321fbe){logger['error'](JSON[_0x6f74('0x29')](_0x321fbe));});}exports[_0x6f74('0x59')]=function(_0x52b7e6){return getJobs(_0x52b7e6);};exports[_0x6f74('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};