Built motion from commit 43538d75.|2.5.35
[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 _0xec09=['\x22%s\x22\x20<%s>','name','bcc','format','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','extname','zip','existsSync','status','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','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','email\x20sent','catch','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','length','exists','stop','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','stop\x20cron','endAt','update','update\x20cron','deleteJob','run','util','path','lodash','moment','cron-job-manager','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass'];(function(_0x51ab2b,_0x3b00d1){var _0x1b3d5f=function(_0x22b37a){while(--_0x22b37a){_0x51ab2b['push'](_0x51ab2b['shift']());}};_0x1b3d5f(++_0x3b00d1);}(_0xec09,0xa1));var _0x9ec0=function(_0x5e9d78,_0x5dd16b){_0x5e9d78=_0x5e9d78-0x0;var _0x2705b5=_0xec09[_0x5e9d78];return _0x2705b5;};'use strict';var fs=require('fs');var util=require(_0x9ec0('0x0'));var path=require(_0x9ec0('0x1'));var _=require(_0x9ec0('0x2'));var moment=require(_0x9ec0('0x3'));var CronJobManager=require(_0x9ec0('0x4'));var jayson=require('jayson/promise');var BPromise=require(_0x9ec0('0x5'));var logger=require('../logger')(_0x9ec0('0x6'));var db=require(_0x9ec0('0x7'))['db'];var analyticCustomReportController=require(_0x9ec0('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x9ec0('0x9')][_0x9ec0('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4dec1a,_0x456c08){return function(){logger[_0x9ec0('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x4dec1a[_0x9ec0('0xc')]);var _0x465837=!![];var _0x2ee0ca={'tls':{'rejectUnauthorized':![]}};if(_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0xf')]){_0x2ee0ca[_0x9ec0('0xf')]=_0x4dec1a['MailAccount'][_0x9ec0('0xe')][_0x9ec0('0xf')];}else{_0x2ee0ca[_0x9ec0('0x10')]=_0x4dec1a['MailAccount'][_0x9ec0('0xe')][_0x9ec0('0x10')];_0x2ee0ca['port']=_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0x11')];_0x2ee0ca[_0x9ec0('0x12')]=_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0x12')];}if(_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0x13')]){_0x2ee0ca[_0x9ec0('0x14')]={'user':_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0x15')],'pass':_0x4dec1a['MailAccount'][_0x9ec0('0xe')][_0x9ec0('0x16')]};}var _0x30733a={'account':_0x2ee0ca,'message':{'from':util['format'](_0x9ec0('0x17'),_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0x18')],_0x4dec1a['MailAccount']['email']||_0x4dec1a[_0x9ec0('0xd')][_0x9ec0('0xe')][_0x9ec0('0x15')]),'to':_0x4dec1a['email'],'cc':_0x4dec1a['cc'],'bcc':_0x4dec1a[_0x9ec0('0x19')],'subject':util[_0x9ec0('0x1a')]('Report\x20%s\x20last\x20%s\x20%s',_0x456c08[_0x9ec0('0x18')],_0x4dec1a[_0x9ec0('0x1b')],_0x4dec1a[_0x9ec0('0x1c')])}};var _0xd35c8a=path[_0x9ec0('0x1d')](__dirname,_0x9ec0('0x1e'));var _0x462616=_0x456c08[_0x9ec0('0x1f')];var _0x5890e1=util['format'](_0x9ec0('0x20'),path['basename'](_0x456c08[_0x9ec0('0x1f')],path[_0x9ec0('0x21')](_0x456c08[_0x9ec0('0x1f')])),_0x9ec0('0x22'));var _0x34b32a=path[_0x9ec0('0x1d')](_0xd35c8a,_0x462616);var _0x51fd75=path['join'](_0xd35c8a,_0x5890e1);if(fs[_0x9ec0('0x23')](_0x34b32a)){_0x456c08[_0x9ec0('0x24')]='Sent';_0x30733a['message'][_0x9ec0('0x25')]=[{'filename':_0x462616,'path':_0x34b32a}];_0x30733a[_0x9ec0('0x26')][_0x9ec0('0x27')]=util['format'](_0x9ec0('0x28'),JSON['stringify'](_0x456c08,null,0x2));}else if(fs['existsSync'](_0x51fd75)){_0x456c08[_0x9ec0('0x24')]=_0x9ec0('0x29');_0x30733a['message'][_0x9ec0('0x25')]=[{'filename':_0x5890e1,'path':_0x51fd75}];}else{_0x30733a['message']['text']=_0x9ec0('0x2a');if(!_0x4dec1a[_0x9ec0('0x2b')]){_0x465837=![];logger[_0x9ec0('0xb')](_0x9ec0('0x2c'));}}if(_0x465837){return client['request'](_0x9ec0('0x2d'),_0x30733a)[_0x9ec0('0x2e')](function(_0x374b30){if(_0x374b30[_0x9ec0('0x2f')]){return logger[_0x9ec0('0x2f')](_0x9ec0('0x30'),JSON['stringify'](_0x374b30));}return logger[_0x9ec0('0xb')](_0x9ec0('0x31'));})[_0x9ec0('0x32')](function(_0x2e9ca3){return logger[_0x9ec0('0x2f')](_0x9ec0('0x30'),JSON[_0x9ec0('0x33')](_0x2e9ca3));});}};}function handleError(){return function(_0x3f4a98){return logger['error'](JSON[_0x9ec0('0x33')](_0x3f4a98));};}function handleResult(_0x4d2697){return function(_0x4256d4){logger[_0x9ec0('0xb')](_0x9ec0('0x34'),JSON[_0x9ec0('0x33')](_0x4256d4));if(_0x4d2697[_0x9ec0('0xd')]&&_0x4d2697[_0x9ec0('0xd')][_0x9ec0('0xe')]&&!_[_0x9ec0('0x35')](_0x4d2697[_0x9ec0('0xc')])){setTimeout(handleSendEmail(_0x4d2697,_0x4256d4),0x3c*0x3e8);}};}function handleJob(_0x416ee9){return function(){try{if(_[_0x9ec0('0x35')](_0x416ee9[_0x9ec0('0x1b')])){return logger[_0x9ec0('0xb')](_0x9ec0('0x36'));}if(_['isNil'](_0x416ee9[_0x9ec0('0x1c')])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x58ec3e={'startDate':moment()[_0x9ec0('0x37')](_0x416ee9['subtractNumber'],_0x416ee9['subtractUnit'])[_0x9ec0('0x1a')](_0x9ec0('0x38')),'endDate':moment()[_0x9ec0('0x1a')](_0x9ec0('0x38')),'type':_0x9ec0('0x39'),'output':_0x416ee9['output'],'name':_0x416ee9['name']};if(!_[_0x9ec0('0x35')](_0x416ee9[_0x9ec0('0x3a')])){logger[_0x9ec0('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x416ee9['DefaultReportId']);return analyticDefaultReportController[_0x9ec0('0x3b')]({'id':_0x416ee9[_0x9ec0('0x3a')]},_0x58ec3e)['then'](handleResult(_0x416ee9))[_0x9ec0('0x32')](handleError());}if(!_[_0x9ec0('0x35')](_0x416ee9['CustomReportId'])){logger[_0x9ec0('0xb')](_0x9ec0('0x3c'),_0x416ee9[_0x9ec0('0x3d')]);return analyticCustomReportController[_0x9ec0('0x3b')]({'id':_0x416ee9['CustomReportId']},_0x58ec3e)[_0x9ec0('0x2e')](handleResult(_0x416ee9))[_0x9ec0('0x32')](handleError());}}catch(_0x42f38c){logger[_0x9ec0('0x2f')](JSON[_0x9ec0('0x33')](_0x42f38c));}return logger[_0x9ec0('0xb')](_0x9ec0('0x3e'));};}function getJobs(_0x115f29){var _0x2db548={};if(_0x115f29){_0x2db548['id']=_0x115f29;}return db[_0x9ec0('0x3f')][_0x9ec0('0x40')]({'where':_0x2db548,'include':[{'model':db['MailAccount'],'attributes':['id','name','email'],'include':[{'model':db[_0x9ec0('0x41')],'as':'Smtp'}]}]})[_0x9ec0('0x2e')](function(_0x4f0f50){var _0xb16ee1=_[_0x9ec0('0x42')](manager[_0x9ec0('0x43')]);var _0x28163b=_['map'](_0x4f0f50,function(_0x491c1f){return _0x491c1f['id'][_0x9ec0('0x44')]();});var _0x37a037=_[_0x9ec0('0x45')](_0x4f0f50,function(_0x4de1e6){return _0x4de1e6['id']['toString']();});var _0x215ef8=_0x115f29?_0x28163b:_['difference'](_0x28163b,_0xb16ee1);var _0x208010=_['intersection'](_0x28163b,_0xb16ee1);var _0x3af124=_[_0x9ec0('0x46')](_0xb16ee1,_0x28163b);var _0x1fb39f;var _0x20690a;for(_0x1fb39f=0x0;_0x1fb39f<_0x3af124[_0x9ec0('0x47')]&&!_0x115f29;_0x1fb39f+=0x1){_0x20690a=_0x3af124[_0x1fb39f]['toString']();if(manager[_0x9ec0('0x48')](_0x20690a)){manager[_0x9ec0('0x49')](_0x20690a);manager['deleteJob'](_0x20690a);logger[_0x9ec0('0xb')](_0x9ec0('0x4a'),_0x20690a);}}logger[_0x9ec0('0xb')](_0x9ec0('0x4b'),JSON[_0x9ec0('0x33')](_0x215ef8));for(_0x1fb39f=0x0;_0x1fb39f<_0x215ef8[_0x9ec0('0x47')];_0x1fb39f+=0x1){_0x20690a=_0x215ef8[_0x1fb39f][_0x9ec0('0x44')]();logger['info']('index',_0x20690a);if(_0x115f29){logger['info'](_0x9ec0('0x4c'),_0x115f29);logger[_0x9ec0('0xb')](JSON[_0x9ec0('0x33')](_0x37a037[_0x20690a]));BPromise[_0x9ec0('0x4d')]()[_0x9ec0('0x2e')](handleJob(_0x37a037[_0x20690a]));logger['info'](_0x9ec0('0x4e'),_0x37a037[_0x20690a]['name'],_0x37a037[_0x20690a][_0x9ec0('0x4f')]);}else if(_0x37a037[_0x20690a][_0x9ec0('0x4f')]&&_0x37a037[_0x20690a][_0x9ec0('0x50')]&&moment()[_0x9ec0('0x51')](_0x37a037[_0x20690a][_0x9ec0('0x52')],_0x37a037[_0x20690a]['endAt'])){manager[_0x9ec0('0x53')](_0x20690a,_0x37a037[_0x20690a][_0x9ec0('0x4f')],handleJob(_0x37a037[_0x20690a]));manager[_0x9ec0('0x54')](_0x20690a);logger[_0x9ec0('0xb')](_0x9ec0('0x55'),_0x37a037[_0x20690a][_0x9ec0('0x18')],_0x37a037[_0x20690a][_0x9ec0('0x4f')]);}else if(manager[_0x9ec0('0x48')](_0x20690a)){manager[_0x9ec0('0x49')](_0x20690a);manager['deleteJob'](_0x20690a);logger['info'](_0x9ec0('0x56'),_0x37a037[_0x20690a][_0x9ec0('0x18')],_0x37a037[_0x20690a][_0x9ec0('0x4f')]);}}for(_0x1fb39f=0x0,_0x20690a;_0x1fb39f<_0x208010[_0x9ec0('0x47')]&&!_0x115f29;_0x1fb39f+=0x1){_0x20690a=_0x208010[_0x1fb39f][_0x9ec0('0x44')]();if(manager[_0x9ec0('0x48')](_0x20690a)){if(_0x37a037[_0x20690a][_0x9ec0('0x4f')]&&_0x37a037[_0x20690a][_0x9ec0('0x50')]&&moment()[_0x9ec0('0x51')](_0x37a037[_0x20690a][_0x9ec0('0x52')],_0x37a037[_0x20690a][_0x9ec0('0x57')])){manager[_0x9ec0('0x58')](_0x20690a,_0x37a037[_0x20690a]['cron'],handleJob(_0x37a037[_0x20690a]));logger[_0x9ec0('0xb')](_0x9ec0('0x59'),_0x37a037[_0x20690a][_0x9ec0('0x18')],_0x37a037[_0x20690a][_0x9ec0('0x4f')]);}else{manager[_0x9ec0('0x49')](_0x20690a);manager[_0x9ec0('0x5a')](_0x20690a);logger[_0x9ec0('0xb')](_0x9ec0('0x56'),_0x37a037[_0x20690a][_0x9ec0('0x18')],_0x37a037[_0x20690a][_0x9ec0('0x4f')]);}}}})['catch'](function(_0x336427){logger[_0x9ec0('0x2f')](JSON['stringify'](_0x336427));});}exports[_0x9ec0('0x5b')]=function(_0x2c341f){return getJobs(_0x2c341f);};exports[_0x9ec0('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};