Built motion from commit 639a1a7f.|2.6.19
[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 _0xb7eb=['runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','CloudProvider','jobs','map','toString','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','Smtp','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','savename','%s.%s','basename','extname','zip','join','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','SendMail','then','error','stringify','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s'];(function(_0x3010ac,_0x439bdf){var _0x50c290=function(_0x2068af){while(--_0x2068af){_0x3010ac['push'](_0x3010ac['shift']());}};_0x50c290(++_0x439bdf);}(_0xb7eb,0x124));var _0xbb7e=function(_0x17d6e3,_0x562811){_0x17d6e3=_0x17d6e3-0x0;var _0x17a10a=_0xb7eb[_0x17d6e3];return _0x17a10a;};'use strict';var fs=require('fs');var util=require(_0xbb7e('0x0'));var path=require(_0xbb7e('0x1'));var _=require(_0xbb7e('0x2'));var moment=require(_0xbb7e('0x3'));var CronJobManager=require(_0xbb7e('0x4'));var jayson=require(_0xbb7e('0x5'));var BPromise=require(_0xbb7e('0x6'));var logger=require(_0xbb7e('0x7'))(_0xbb7e('0x8'));var db=require(_0xbb7e('0x9'))['db'];var analyticCustomReportController=require(_0xbb7e('0xa'));var analyticDefaultReportController=require(_0xbb7e('0xb'));var client=jayson[_0xbb7e('0xc')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5429ac,_0x4f65b8){return function(){logger['info'](_0xbb7e('0xd'),_0x5429ac[_0xbb7e('0xe')]);var _0xde1af8=!![];var _0x18247c=_0x5429ac[_0xbb7e('0xf')][_0xbb7e('0x10')]();var _0x8e255d={'account':_0x18247c,'message':{'from':util[_0xbb7e('0x11')]('\x22%s\x22\x20<%s>',_0x5429ac[_0xbb7e('0xf')][_0xbb7e('0x12')],_0x5429ac[_0xbb7e('0xf')][_0xbb7e('0xe')]||_0x5429ac['MailAccount'][_0xbb7e('0x13')]['user']),'to':_0x5429ac[_0xbb7e('0xe')],'cc':_0x5429ac['cc'],'bcc':_0x5429ac[_0xbb7e('0x14')],'subject':util[_0xbb7e('0x11')](_0xbb7e('0x15'),_0x4f65b8['name'],_0x5429ac[_0xbb7e('0x16')],_0x5429ac['subtractUnit'])}};var _0x46dc20=path['join'](__dirname,_0xbb7e('0x17'));var _0x4e0db2=_0x4f65b8[_0xbb7e('0x18')];var _0x30f4d9=util[_0xbb7e('0x11')](_0xbb7e('0x19'),path[_0xbb7e('0x1a')](_0x4f65b8[_0xbb7e('0x18')],path[_0xbb7e('0x1b')](_0x4f65b8[_0xbb7e('0x18')])),_0xbb7e('0x1c'));var _0x12556d=path[_0xbb7e('0x1d')](_0x46dc20,_0x4e0db2);var _0x44e6b0=path[_0xbb7e('0x1d')](_0x46dc20,_0x30f4d9);if(fs[_0xbb7e('0x1e')](_0x12556d)){_0x4f65b8[_0xbb7e('0x1f')]=_0xbb7e('0x20');_0x8e255d['message'][_0xbb7e('0x21')]=[{'filename':_0x4e0db2,'path':_0x12556d}];_0x8e255d[_0xbb7e('0x22')][_0xbb7e('0x23')]=util[_0xbb7e('0x11')](_0xbb7e('0x24'),JSON['stringify'](_0x4f65b8,null,0x2));}else if(fs['existsSync'](_0x44e6b0)){_0x4f65b8['status']=_0xbb7e('0x20');_0x8e255d['message']['attachments']=[{'filename':_0x30f4d9,'path':_0x44e6b0}];}else{_0x8e255d['message'][_0xbb7e('0x23')]=_0xbb7e('0x25');if(!_0x5429ac['sendIfEmpty']){_0xde1af8=![];logger[_0xbb7e('0x26')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0xde1af8){return client['request'](_0xbb7e('0x27'),_0x8e255d)[_0xbb7e('0x28')](function(_0x436d95){if(_0x436d95['error']){return logger[_0xbb7e('0x29')]('error\x20mail',JSON[_0xbb7e('0x2a')](_0x436d95));}return logger[_0xbb7e('0x26')](_0xbb7e('0x2b'));})[_0xbb7e('0x2c')](function(_0xc79d28){return logger[_0xbb7e('0x29')](_0xbb7e('0x2d'),JSON[_0xbb7e('0x2a')](_0xc79d28));});}};}function handleError(){return function(_0x537ab1){return logger[_0xbb7e('0x29')](JSON[_0xbb7e('0x2a')](_0x537ab1));};}function handleResult(_0x310880){return function(_0x1babc3){logger[_0xbb7e('0x26')](_0xbb7e('0x2e'),JSON['stringify'](_0x1babc3));if(_0x310880['MailAccount']&&_0x310880[_0xbb7e('0xf')]['Smtp']&&!_[_0xbb7e('0x2f')](_0x310880['email'])){setTimeout(handleSendEmail(_0x310880,_0x1babc3),0x3c*0x3e8);}};}function handleJob(_0x223b45){return function(){try{if(_[_0xbb7e('0x2f')](_0x223b45[_0xbb7e('0x16')])){return logger['info'](_0xbb7e('0x30'));}if(_[_0xbb7e('0x2f')](_0x223b45[_0xbb7e('0x31')])){return logger[_0xbb7e('0x26')](_0xbb7e('0x32'));}var _0x7dbfca={'startDate':moment()['subtract'](_0x223b45[_0xbb7e('0x16')],_0x223b45[_0xbb7e('0x31')])[_0xbb7e('0x11')](_0xbb7e('0x33')),'endDate':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xbb7e('0x34'),'output':_0x223b45[_0xbb7e('0x35')],'name':_0x223b45[_0xbb7e('0x12')]};if(!_[_0xbb7e('0x2f')](_0x223b45[_0xbb7e('0x36')])){logger[_0xbb7e('0x26')](_0xbb7e('0x37'),_0x223b45[_0xbb7e('0x36')]);return analyticDefaultReportController[_0xbb7e('0x38')]({'id':_0x223b45[_0xbb7e('0x36')]},_0x7dbfca)['then'](handleResult(_0x223b45))[_0xbb7e('0x2c')](handleError());}if(!_[_0xbb7e('0x2f')](_0x223b45[_0xbb7e('0x39')])){logger[_0xbb7e('0x26')](_0xbb7e('0x3a'),_0x223b45['CustomReportId']);return analyticCustomReportController[_0xbb7e('0x38')]({'id':_0x223b45[_0xbb7e('0x39')]},_0x7dbfca)[_0xbb7e('0x28')](handleResult(_0x223b45))[_0xbb7e('0x2c')](handleError());}}catch(_0x45ce9c){logger[_0xbb7e('0x29')](JSON['stringify'](_0x45ce9c));}return logger[_0xbb7e('0x26')](_0xbb7e('0x3b'));};}function getJobs(_0x52a64e){var _0x501a13={};if(_0x52a64e){_0x501a13['id']=_0x52a64e;}return db['Schedule'][_0xbb7e('0x3c')]({'where':_0x501a13,'include':[{'model':db['MailAccount'],'attributes':['id',_0xbb7e('0x12'),_0xbb7e('0xe')],'include':[{'model':db[_0xbb7e('0x3d')],'as':_0xbb7e('0x13'),'include':[{'model':db[_0xbb7e('0x3e')],'as':_0xbb7e('0x3e')}]}]}]})['then'](function(_0x208306){var _0x2435de=_['keys'](manager[_0xbb7e('0x3f')]);var _0x3f8ecf=_[_0xbb7e('0x40')](_0x208306,function(_0x4d450e){return _0x4d450e['id']['toString']();});var _0x1a3524=_['keyBy'](_0x208306,function(_0x16fe2d){return _0x16fe2d['id'][_0xbb7e('0x41')]();});var _0x4e59fa=_0x52a64e?_0x3f8ecf:_[_0xbb7e('0x42')](_0x3f8ecf,_0x2435de);var _0xe28321=_['intersection'](_0x3f8ecf,_0x2435de);var _0x1fa3db=_[_0xbb7e('0x42')](_0x2435de,_0x3f8ecf);var _0x1ce61a;var _0x1a1f23;for(_0x1ce61a=0x0;_0x1ce61a<_0x1fa3db[_0xbb7e('0x43')]&&!_0x52a64e;_0x1ce61a+=0x1){_0x1a1f23=_0x1fa3db[_0x1ce61a][_0xbb7e('0x41')]();if(manager[_0xbb7e('0x44')](_0x1a1f23)){manager[_0xbb7e('0x45')](_0x1a1f23);manager[_0xbb7e('0x46')](_0x1a1f23);logger['info'](_0xbb7e('0x47'),_0x1a1f23);}}logger['info'](_0xbb7e('0x48'),JSON[_0xbb7e('0x2a')](_0x4e59fa));for(_0x1ce61a=0x0;_0x1ce61a<_0x4e59fa[_0xbb7e('0x43')];_0x1ce61a+=0x1){_0x1a1f23=_0x4e59fa[_0x1ce61a]['toString']();logger['info'](_0xbb7e('0x49'),_0x1a1f23);if(_0x52a64e){logger[_0xbb7e('0x26')](_0xbb7e('0x4a'),_0x52a64e);logger[_0xbb7e('0x26')](JSON[_0xbb7e('0x2a')](_0x1a3524[_0x1a1f23]));BPromise[_0xbb7e('0x4b')]()[_0xbb7e('0x28')](handleJob(_0x1a3524[_0x1a1f23]));logger['info'](_0xbb7e('0x4c'),_0x1a3524[_0x1a1f23][_0xbb7e('0x12')],_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]);}else if(_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]&&_0x1a3524[_0x1a1f23][_0xbb7e('0x4e')]&&moment()[_0xbb7e('0x4f')](_0x1a3524[_0x1a1f23][_0xbb7e('0x50')],_0x1a3524[_0x1a1f23][_0xbb7e('0x51')])){manager['add'](_0x1a1f23,_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')],handleJob(_0x1a3524[_0x1a1f23]));manager[_0xbb7e('0x52')](_0x1a1f23);logger[_0xbb7e('0x26')](_0xbb7e('0x53'),_0x1a3524[_0x1a1f23][_0xbb7e('0x12')],_0x1a3524[_0x1a1f23]['cron']);}else if(manager[_0xbb7e('0x44')](_0x1a1f23)){manager[_0xbb7e('0x45')](_0x1a1f23);manager[_0xbb7e('0x46')](_0x1a1f23);logger['info'](_0xbb7e('0x54'),_0x1a3524[_0x1a1f23]['name'],_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]);}}for(_0x1ce61a=0x0,_0x1a1f23;_0x1ce61a<_0xe28321[_0xbb7e('0x43')]&&!_0x52a64e;_0x1ce61a+=0x1){_0x1a1f23=_0xe28321[_0x1ce61a]['toString']();if(manager['exists'](_0x1a1f23)){if(_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]&&_0x1a3524[_0x1a1f23][_0xbb7e('0x4e')]&&moment()[_0xbb7e('0x4f')](_0x1a3524[_0x1a1f23]['startAt'],_0x1a3524[_0x1a1f23]['endAt'])){manager['update'](_0x1a1f23,_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')],handleJob(_0x1a3524[_0x1a1f23]));logger[_0xbb7e('0x26')](_0xbb7e('0x55'),_0x1a3524[_0x1a1f23][_0xbb7e('0x12')],_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]);}else{manager[_0xbb7e('0x45')](_0x1a1f23);manager['deleteJob'](_0x1a1f23);logger[_0xbb7e('0x26')](_0xbb7e('0x54'),_0x1a3524[_0x1a1f23][_0xbb7e('0x12')],_0x1a3524[_0x1a1f23][_0xbb7e('0x4d')]);}}}})['catch'](function(_0x5c3032){logger[_0xbb7e('0x29')](JSON[_0xbb7e('0x2a')](_0x5c3032));});}exports[_0xbb7e('0x56')]=function(_0x1601b9){return getJobs(_0x1601b9);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};