f4fdb0d169617014b35293e26df320b1eb04155f
[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 _0x6b84=['jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','run\x20job','cron','active','startAt','endAt','add','start','stop\x20cron','isBetween','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','email','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','savename','format','basename','extname','zip','join','existsSync','status','Sent','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','message','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','then','CustomReportId','runReport','no\x20report\x20id','Schedule','findAll','CloudProvider'];(function(_0x1a87b3,_0x45ba68){var _0x37e84d=function(_0x39f49e){while(--_0x39f49e){_0x1a87b3['push'](_0x1a87b3['shift']());}};_0x37e84d(++_0x45ba68);}(_0x6b84,0x6f));var _0x46b8=function(_0x406792,_0x19ac40){_0x406792=_0x406792-0x0;var _0x5623ce=_0x6b84[_0x406792];return _0x5623ce;};'use strict';var fs=require('fs');var util=require(_0x46b8('0x0'));var path=require(_0x46b8('0x1'));var _=require(_0x46b8('0x2'));var moment=require(_0x46b8('0x3'));var CronJobManager=require(_0x46b8('0x4'));var jayson=require(_0x46b8('0x5'));var BPromise=require(_0x46b8('0x6'));var logger=require('../logger')(_0x46b8('0x7'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x46b8('0x8'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x15fd1e,_0x41d02e){return function(){logger[_0x46b8('0x9')](_0x46b8('0xa'),_0x15fd1e['email']);var _0x51a82f=!![];var _0x5603b2=_0x15fd1e[_0x46b8('0xb')][_0x46b8('0xc')]();var _0x3753d3={'account':_0x5603b2,'message':{'from':util['format'](_0x46b8('0xd'),_0x15fd1e['MailAccount'][_0x46b8('0xe')],_0x15fd1e['MailAccount'][_0x46b8('0xf')]||_0x15fd1e[_0x46b8('0xb')][_0x46b8('0x10')][_0x46b8('0x11')]),'to':_0x15fd1e[_0x46b8('0xf')],'cc':_0x15fd1e['cc'],'bcc':_0x15fd1e[_0x46b8('0x12')],'subject':util['format'](_0x46b8('0x13'),_0x41d02e[_0x46b8('0xe')],_0x15fd1e[_0x46b8('0x14')],_0x15fd1e[_0x46b8('0x15')])}};var _0x39f22f=path['join'](__dirname,_0x46b8('0x16'));var _0x3608e9=_0x41d02e[_0x46b8('0x17')];var _0xfae042=util[_0x46b8('0x18')]('%s.%s',path[_0x46b8('0x19')](_0x41d02e[_0x46b8('0x17')],path[_0x46b8('0x1a')](_0x41d02e[_0x46b8('0x17')])),_0x46b8('0x1b'));var _0x4fae8d=path[_0x46b8('0x1c')](_0x39f22f,_0x3608e9);var _0x4e791b=path[_0x46b8('0x1c')](_0x39f22f,_0xfae042);if(fs[_0x46b8('0x1d')](_0x4fae8d)){_0x41d02e[_0x46b8('0x1e')]=_0x46b8('0x1f');_0x3753d3['message'][_0x46b8('0x20')]=[{'filename':_0x3608e9,'path':_0x4fae8d}];_0x3753d3['message'][_0x46b8('0x21')]=util['format'](_0x46b8('0x22'),JSON[_0x46b8('0x23')](_0x41d02e,null,0x2));}else if(fs['existsSync'](_0x4e791b)){_0x41d02e[_0x46b8('0x1e')]=_0x46b8('0x1f');_0x3753d3[_0x46b8('0x24')][_0x46b8('0x20')]=[{'filename':_0xfae042,'path':_0x4e791b}];}else{_0x3753d3[_0x46b8('0x24')][_0x46b8('0x21')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x15fd1e['sendIfEmpty']){_0x51a82f=![];logger[_0x46b8('0x9')](_0x46b8('0x25'));}}if(_0x51a82f){return client[_0x46b8('0x26')](_0x46b8('0x27'),_0x3753d3)['then'](function(_0x2a4c76){if(_0x2a4c76[_0x46b8('0x28')]){return logger['error']('error\x20mail',JSON['stringify'](_0x2a4c76));}return logger[_0x46b8('0x9')](_0x46b8('0x29'));})[_0x46b8('0x2a')](function(_0x4e5aca){return logger[_0x46b8('0x28')](_0x46b8('0x2b'),JSON[_0x46b8('0x23')](_0x4e5aca));});}};}function handleError(){return function(_0x7a4874){return logger[_0x46b8('0x28')](JSON[_0x46b8('0x23')](_0x7a4874));};}function handleResult(_0x39e837){return function(_0x307d7d){logger[_0x46b8('0x9')](_0x46b8('0x2c'),JSON[_0x46b8('0x23')](_0x307d7d));if(_0x39e837['MailAccount']&&_0x39e837[_0x46b8('0xb')][_0x46b8('0x10')]&&!_[_0x46b8('0x2d')](_0x39e837[_0x46b8('0xf')])){setTimeout(handleSendEmail(_0x39e837,_0x307d7d),0x3c*0x3e8);}};}function handleJob(_0x47d237){return function(){try{if(_[_0x46b8('0x2d')](_0x47d237['subtractNumber'])){return logger[_0x46b8('0x9')](_0x46b8('0x2e'));}if(_['isNil'](_0x47d237[_0x46b8('0x15')])){return logger[_0x46b8('0x9')](_0x46b8('0x2f'));}var _0x2baf33={'startDate':moment()[_0x46b8('0x30')](_0x47d237[_0x46b8('0x14')],_0x47d237[_0x46b8('0x15')])['format'](_0x46b8('0x31')),'endDate':moment()[_0x46b8('0x18')](_0x46b8('0x31')),'type':_0x46b8('0x32'),'output':_0x47d237[_0x46b8('0x33')],'name':_0x47d237[_0x46b8('0xe')]};if(!_[_0x46b8('0x2d')](_0x47d237[_0x46b8('0x34')])){logger[_0x46b8('0x9')](_0x46b8('0x35'),_0x47d237[_0x46b8('0x34')]);return analyticDefaultReportController['runReport']({'id':_0x47d237['DefaultReportId']},_0x2baf33)[_0x46b8('0x36')](handleResult(_0x47d237))[_0x46b8('0x2a')](handleError());}if(!_[_0x46b8('0x2d')](_0x47d237[_0x46b8('0x37')])){logger[_0x46b8('0x9')]('exec\x20custom\x20report\x20id:%s',_0x47d237['CustomReportId']);return analyticCustomReportController[_0x46b8('0x38')]({'id':_0x47d237['CustomReportId']},_0x2baf33)[_0x46b8('0x36')](handleResult(_0x47d237))['catch'](handleError());}}catch(_0x558bc9){logger['error'](JSON[_0x46b8('0x23')](_0x558bc9));}return logger[_0x46b8('0x9')](_0x46b8('0x39'));};}function getJobs(_0x486d0e){var _0x57faba={};if(_0x486d0e){_0x57faba['id']=_0x486d0e;}return db[_0x46b8('0x3a')][_0x46b8('0x3b')]({'where':_0x57faba,'include':[{'model':db[_0x46b8('0xb')],'attributes':['id',_0x46b8('0xe'),_0x46b8('0xf')],'include':[{'model':db['MailServerOut'],'as':_0x46b8('0x10'),'include':[{'model':db['CloudProvider'],'as':_0x46b8('0x3c')}]}]}]})[_0x46b8('0x36')](function(_0x3e55f4){var _0x57a9c7=_['keys'](manager[_0x46b8('0x3d')]);var _0x14f0b9=_[_0x46b8('0x3e')](_0x3e55f4,function(_0x13ccf6){return _0x13ccf6['id'][_0x46b8('0x3f')]();});var _0x8182d6=_[_0x46b8('0x40')](_0x3e55f4,function(_0x4b9a9d){return _0x4b9a9d['id'][_0x46b8('0x3f')]();});var _0x24ab40=_0x486d0e?_0x14f0b9:_[_0x46b8('0x41')](_0x14f0b9,_0x57a9c7);var _0x27f151=_[_0x46b8('0x42')](_0x14f0b9,_0x57a9c7);var _0x20061c=_[_0x46b8('0x41')](_0x57a9c7,_0x14f0b9);var _0x3aada5;var _0x1e3e69;for(_0x3aada5=0x0;_0x3aada5<_0x20061c[_0x46b8('0x43')]&&!_0x486d0e;_0x3aada5+=0x1){_0x1e3e69=_0x20061c[_0x3aada5][_0x46b8('0x3f')]();if(manager[_0x46b8('0x44')](_0x1e3e69)){manager[_0x46b8('0x45')](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger[_0x46b8('0x9')](_0x46b8('0x47'),_0x1e3e69);}}logger[_0x46b8('0x9')]('toRun',JSON[_0x46b8('0x23')](_0x24ab40));for(_0x3aada5=0x0;_0x3aada5<_0x24ab40['length'];_0x3aada5+=0x1){_0x1e3e69=_0x24ab40[_0x3aada5]['toString']();logger['info'](_0x46b8('0x48'),_0x1e3e69);if(_0x486d0e){logger[_0x46b8('0x9')](_0x46b8('0x49'),_0x486d0e);logger['info'](JSON[_0x46b8('0x23')](_0x8182d6[_0x1e3e69]));BPromise['resolve']()['then'](handleJob(_0x8182d6[_0x1e3e69]));logger['info'](_0x46b8('0x4a'),_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}else if(_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]&&_0x8182d6[_0x1e3e69][_0x46b8('0x4c')]&&moment()['isBetween'](_0x8182d6[_0x1e3e69][_0x46b8('0x4d')],_0x8182d6[_0x1e3e69][_0x46b8('0x4e')])){manager[_0x46b8('0x4f')](_0x1e3e69,_0x8182d6[_0x1e3e69][_0x46b8('0x4b')],handleJob(_0x8182d6[_0x1e3e69]));manager[_0x46b8('0x50')](_0x1e3e69);logger[_0x46b8('0x9')]('add\x20cron',_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69]['cron']);}else if(manager[_0x46b8('0x44')](_0x1e3e69)){manager[_0x46b8('0x45')](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger[_0x46b8('0x9')](_0x46b8('0x51'),_0x8182d6[_0x1e3e69]['name'],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}}for(_0x3aada5=0x0,_0x1e3e69;_0x3aada5<_0x27f151['length']&&!_0x486d0e;_0x3aada5+=0x1){_0x1e3e69=_0x27f151[_0x3aada5]['toString']();if(manager[_0x46b8('0x44')](_0x1e3e69)){if(_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]&&_0x8182d6[_0x1e3e69][_0x46b8('0x4c')]&&moment()[_0x46b8('0x52')](_0x8182d6[_0x1e3e69]['startAt'],_0x8182d6[_0x1e3e69][_0x46b8('0x4e')])){manager[_0x46b8('0x53')](_0x1e3e69,_0x8182d6[_0x1e3e69][_0x46b8('0x4b')],handleJob(_0x8182d6[_0x1e3e69]));logger[_0x46b8('0x9')](_0x46b8('0x54'),_0x8182d6[_0x1e3e69][_0x46b8('0xe')],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}else{manager['stop'](_0x1e3e69);manager[_0x46b8('0x46')](_0x1e3e69);logger['info'](_0x46b8('0x51'),_0x8182d6[_0x1e3e69]['name'],_0x8182d6[_0x1e3e69][_0x46b8('0x4b')]);}}}})[_0x46b8('0x2a')](function(_0x2f3702){logger['error'](JSON[_0x46b8('0x23')](_0x2f3702));});}exports[_0x46b8('0x55')]=function(_0x45d5fb){return getJobs(_0x45d5fb);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};