fdd20d4594e1f5ad2a2219522faab87a31c0336f
[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 _0x245f=['path','lodash','moment','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','Sent','message','text','stringify','existsSync','status','attachments','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','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','runReport','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','jobs','toString','keyBy','difference','intersection','length','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','start','stop','stop\x20cron','exists','update\x20cron','run'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x245f,0x114));var _0xf245=function(_0x1a9e0a,_0x43a0c1){_0x1a9e0a=_0x1a9e0a-0x0;var _0x2e7bcb=_0x245f[_0x1a9e0a];return _0x2e7bcb;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xf245('0x0'));var _=require(_0xf245('0x1'));var moment=require(_0xf245('0x2'));var CronJobManager=require(_0xf245('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0xf245('0x4'));var logger=require(_0xf245('0x5'))(_0xf245('0x6'));var db=require(_0xf245('0x7'))['db'];var analyticCustomReportController=require(_0xf245('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xf245('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x32e409,_0x5961f9){return function(){logger[_0xf245('0xa')](_0xf245('0xb'),_0x32e409[_0xf245('0xc')]);var _0x548875=!![];var _0x7e7108={'tls':{'rejectUnauthorized':![]}};if(_0x32e409[_0xf245('0xd')][_0xf245('0xe')][_0xf245('0xf')]){_0x7e7108[_0xf245('0xf')]=_0x32e409['MailAccount']['Smtp'][_0xf245('0xf')];}else{_0x7e7108['host']=_0x32e409[_0xf245('0xd')][_0xf245('0xe')][_0xf245('0x10')];_0x7e7108[_0xf245('0x11')]=_0x32e409[_0xf245('0xd')][_0xf245('0xe')][_0xf245('0x11')];_0x7e7108['secure']=_0x32e409[_0xf245('0xd')]['Smtp'][_0xf245('0x12')];}if(_0x32e409[_0xf245('0xd')][_0xf245('0xe')][_0xf245('0x13')]){_0x7e7108[_0xf245('0x14')]={'user':_0x32e409['MailAccount'][_0xf245('0xe')][_0xf245('0x15')],'pass':_0x32e409[_0xf245('0xd')][_0xf245('0xe')][_0xf245('0x16')]};}var _0x4053fc={'account':_0x7e7108,'message':{'from':util['format'](_0xf245('0x17'),_0x32e409['MailAccount'][_0xf245('0x18')],_0x32e409['MailAccount'][_0xf245('0xc')]||_0x32e409[_0xf245('0xd')]['Smtp'][_0xf245('0x15')]),'to':_0x32e409[_0xf245('0xc')],'cc':_0x32e409['cc'],'bcc':_0x32e409[_0xf245('0x19')],'subject':util[_0xf245('0x1a')](_0xf245('0x1b'),_0x5961f9[_0xf245('0x18')],_0x32e409['subtractNumber'],_0x32e409[_0xf245('0x1c')])}};var _0x24130d=path[_0xf245('0x1d')](__dirname,_0xf245('0x1e'));var _0x591a47=_0x5961f9[_0xf245('0x1f')];var _0x2009e0=util[_0xf245('0x1a')](_0xf245('0x20'),path[_0xf245('0x21')](_0x5961f9[_0xf245('0x1f')],path[_0xf245('0x22')](_0x5961f9[_0xf245('0x1f')])),_0xf245('0x23'));var _0xe40df1=path[_0xf245('0x1d')](_0x24130d,_0x591a47);var _0x12b48c=path[_0xf245('0x1d')](_0x24130d,_0x2009e0);if(fs['existsSync'](_0xe40df1)){_0x5961f9['status']=_0xf245('0x24');_0x4053fc['message']['attachments']=[{'filename':_0x591a47,'path':_0xe40df1}];_0x4053fc[_0xf245('0x25')][_0xf245('0x26')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xf245('0x27')](_0x5961f9,null,0x2));}else if(fs[_0xf245('0x28')](_0x12b48c)){_0x5961f9[_0xf245('0x29')]='Sent';_0x4053fc[_0xf245('0x25')][_0xf245('0x2a')]=[{'filename':_0x2009e0,'path':_0x12b48c}];}else{_0x4053fc['message'][_0xf245('0x26')]=_0xf245('0x2b');if(!_0x32e409[_0xf245('0x2c')]){_0x548875=![];logger[_0xf245('0xa')](_0xf245('0x2d'));}}if(_0x548875){return client[_0xf245('0x2e')](_0xf245('0x2f'),_0x4053fc)[_0xf245('0x30')](function(_0x480999){if(_0x480999[_0xf245('0x31')]){return logger['error'](_0xf245('0x32'),JSON[_0xf245('0x27')](_0x480999));}return logger['info'](_0xf245('0x33'));})[_0xf245('0x34')](function(_0x418a63){return logger['error'](_0xf245('0x32'),JSON[_0xf245('0x27')](_0x418a63));});}};}function handleError(){return function(_0x4031a4){return logger['error'](JSON[_0xf245('0x27')](_0x4031a4));};}function handleResult(_0x4685ed){return function(_0x435eaf){logger[_0xf245('0xa')](_0xf245('0x35'),JSON[_0xf245('0x27')](_0x435eaf));if(_0x4685ed[_0xf245('0xd')]&&_0x4685ed[_0xf245('0xd')][_0xf245('0xe')]&&!_[_0xf245('0x36')](_0x4685ed['email'])){setTimeout(handleSendEmail(_0x4685ed,_0x435eaf),0x3c*0x3e8);}};}function handleJob(_0x49ce15){return function(){try{if(_[_0xf245('0x36')](_0x49ce15[_0xf245('0x37')])){return logger[_0xf245('0xa')](_0xf245('0x38'));}if(_[_0xf245('0x36')](_0x49ce15[_0xf245('0x1c')])){return logger[_0xf245('0xa')](_0xf245('0x39'));}var _0x4ef5eb={'startDate':moment()['subtract'](_0x49ce15[_0xf245('0x37')],_0x49ce15[_0xf245('0x1c')])['format'](_0xf245('0x3a')),'endDate':moment()['format'](_0xf245('0x3a')),'type':_0xf245('0x3b'),'output':_0x49ce15[_0xf245('0x3c')],'name':_0x49ce15[_0xf245('0x18')]};if(!_['isNil'](_0x49ce15['DefaultReportId'])){logger[_0xf245('0xa')](_0xf245('0x3d'),_0x49ce15['DefaultReportId']);return analyticDefaultReportController[_0xf245('0x3e')]({'id':_0x49ce15[_0xf245('0x3f')]},_0x4ef5eb)[_0xf245('0x30')](handleResult(_0x49ce15))[_0xf245('0x34')](handleError());}if(!_[_0xf245('0x36')](_0x49ce15[_0xf245('0x40')])){logger[_0xf245('0xa')](_0xf245('0x41'),_0x49ce15['CustomReportId']);return analyticCustomReportController[_0xf245('0x3e')]({'id':_0x49ce15['CustomReportId']},_0x4ef5eb)[_0xf245('0x30')](handleResult(_0x49ce15))[_0xf245('0x34')](handleError());}}catch(_0x17a675){logger['error'](JSON[_0xf245('0x27')](_0x17a675));}return logger[_0xf245('0xa')](_0xf245('0x42'));};}function getJobs(_0xae083d){var _0x225292={};if(_0xae083d){_0x225292['id']=_0xae083d;}return db['Schedule'][_0xf245('0x43')]({'where':_0x225292,'include':[{'model':db['MailAccount'],'attributes':['id',_0xf245('0x18'),_0xf245('0xc')],'include':[{'model':db[_0xf245('0x44')],'as':_0xf245('0xe')}]}]})['then'](function(_0x45393e){var _0x555010=_['keys'](manager[_0xf245('0x45')]);var _0x56ba92=_['map'](_0x45393e,function(_0x2e2671){return _0x2e2671['id'][_0xf245('0x46')]();});var _0x19049a=_[_0xf245('0x47')](_0x45393e,function(_0x1fa7de){return _0x1fa7de['id']['toString']();});var _0x137522=_0xae083d?_0x56ba92:_[_0xf245('0x48')](_0x56ba92,_0x555010);var _0x3ce261=_[_0xf245('0x49')](_0x56ba92,_0x555010);var _0x3dee71=_[_0xf245('0x48')](_0x555010,_0x56ba92);var _0x5c0d3e;var _0x2c4ba1;for(_0x5c0d3e=0x0;_0x5c0d3e<_0x3dee71[_0xf245('0x4a')]&&!_0xae083d;_0x5c0d3e+=0x1){_0x2c4ba1=_0x3dee71[_0x5c0d3e][_0xf245('0x46')]();if(manager['exists'](_0x2c4ba1)){manager['stop'](_0x2c4ba1);manager[_0xf245('0x4b')](_0x2c4ba1);logger['info'](_0xf245('0x4c'),_0x2c4ba1);}}logger['info'](_0xf245('0x4d'),JSON['stringify'](_0x137522));for(_0x5c0d3e=0x0;_0x5c0d3e<_0x137522['length'];_0x5c0d3e+=0x1){_0x2c4ba1=_0x137522[_0x5c0d3e][_0xf245('0x46')]();logger[_0xf245('0xa')](_0xf245('0x4e'),_0x2c4ba1);if(_0xae083d){logger[_0xf245('0xa')](_0xf245('0x4f'),_0xae083d);logger[_0xf245('0xa')](JSON[_0xf245('0x27')](_0x19049a[_0x2c4ba1]));BPromise[_0xf245('0x50')]()[_0xf245('0x30')](handleJob(_0x19049a[_0x2c4ba1]));logger[_0xf245('0xa')](_0xf245('0x51'),_0x19049a[_0x2c4ba1][_0xf245('0x18')],_0x19049a[_0x2c4ba1][_0xf245('0x52')]);}else if(_0x19049a[_0x2c4ba1]['cron']&&_0x19049a[_0x2c4ba1][_0xf245('0x53')]&&moment()[_0xf245('0x54')](_0x19049a[_0x2c4ba1]['startAt'],_0x19049a[_0x2c4ba1][_0xf245('0x55')])){manager['add'](_0x2c4ba1,_0x19049a[_0x2c4ba1]['cron'],handleJob(_0x19049a[_0x2c4ba1]));manager[_0xf245('0x56')](_0x2c4ba1);logger['info']('add\x20cron',_0x19049a[_0x2c4ba1]['name'],_0x19049a[_0x2c4ba1]['cron']);}else if(manager['exists'](_0x2c4ba1)){manager[_0xf245('0x57')](_0x2c4ba1);manager['deleteJob'](_0x2c4ba1);logger[_0xf245('0xa')](_0xf245('0x58'),_0x19049a[_0x2c4ba1][_0xf245('0x18')],_0x19049a[_0x2c4ba1]['cron']);}}for(_0x5c0d3e=0x0,_0x2c4ba1;_0x5c0d3e<_0x3ce261[_0xf245('0x4a')]&&!_0xae083d;_0x5c0d3e+=0x1){_0x2c4ba1=_0x3ce261[_0x5c0d3e][_0xf245('0x46')]();if(manager[_0xf245('0x59')](_0x2c4ba1)){if(_0x19049a[_0x2c4ba1]['cron']&&_0x19049a[_0x2c4ba1]['active']&&moment()[_0xf245('0x54')](_0x19049a[_0x2c4ba1]['startAt'],_0x19049a[_0x2c4ba1]['endAt'])){manager['update'](_0x2c4ba1,_0x19049a[_0x2c4ba1][_0xf245('0x52')],handleJob(_0x19049a[_0x2c4ba1]));logger[_0xf245('0xa')](_0xf245('0x5a'),_0x19049a[_0x2c4ba1][_0xf245('0x18')],_0x19049a[_0x2c4ba1]['cron']);}else{manager[_0xf245('0x57')](_0x2c4ba1);manager[_0xf245('0x4b')](_0x2c4ba1);logger['info']('stop\x20cron',_0x19049a[_0x2c4ba1][_0xf245('0x18')],_0x19049a[_0x2c4ba1][_0xf245('0x52')]);}}}})['catch'](function(_0x38a727){logger[_0xf245('0x31')](JSON[_0xf245('0x27')](_0x38a727));});}exports[_0xf245('0x5b')]=function(_0x2887d2){return getJobs(_0x2887d2);};exports[_0xf245('0x56')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};