e2d69c9199a68aac78e9455683a3ad9a875d46af
[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 _0xa3c1=['subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','CloudProvider','keys','map','toString','keyBy','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','add','start','add\x20cron','stop\x20cron','startAt','endAt','update','update\x20cron','run','util','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','status','Sent','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','existsSync','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','then','error','error\x20mail','email\x20sent','catch','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined'];(function(_0x1b5191,_0x5649ee){var _0x19e29a=function(_0x1e7edc){while(--_0x1e7edc){_0x1b5191['push'](_0x1b5191['shift']());}};_0x19e29a(++_0x5649ee);}(_0xa3c1,0x12a));var _0x1a3c=function(_0x8263e5,_0x446309){_0x8263e5=_0x8263e5-0x0;var _0x43677b=_0xa3c1[_0x8263e5];return _0x43677b;};'use strict';var fs=require('fs');var util=require(_0x1a3c('0x0'));var path=require('path');var _=require('lodash');var moment=require(_0x1a3c('0x1'));var CronJobManager=require(_0x1a3c('0x2'));var jayson=require(_0x1a3c('0x3'));var BPromise=require(_0x1a3c('0x4'));var logger=require(_0x1a3c('0x5'))(_0x1a3c('0x6'));var db=require(_0x1a3c('0x7'))['db'];var analyticCustomReportController=require(_0x1a3c('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x1a3c('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x42cd07,_0x48fb34){return function(){logger[_0x1a3c('0xa')](_0x1a3c('0xb'),_0x42cd07[_0x1a3c('0xc')]);var _0x33435d=!![];var _0x1726ec=_0x42cd07[_0x1a3c('0xd')][_0x1a3c('0xe')]();var _0x38c1e3={'account':_0x1726ec,'message':{'from':util[_0x1a3c('0xf')]('\x22%s\x22\x20<%s>',_0x42cd07[_0x1a3c('0xd')]['name'],_0x42cd07[_0x1a3c('0xd')][_0x1a3c('0xc')]||_0x42cd07[_0x1a3c('0xd')]['Smtp']['user']),'to':_0x42cd07[_0x1a3c('0xc')],'cc':_0x42cd07['cc'],'bcc':_0x42cd07[_0x1a3c('0x10')],'subject':util[_0x1a3c('0xf')](_0x1a3c('0x11'),_0x48fb34[_0x1a3c('0x12')],_0x42cd07[_0x1a3c('0x13')],_0x42cd07[_0x1a3c('0x14')])}};var _0x355a72=path[_0x1a3c('0x15')](__dirname,'../../files/reports');var _0x1d9b12=_0x48fb34[_0x1a3c('0x16')];var _0x49abf6=util[_0x1a3c('0xf')](_0x1a3c('0x17'),path[_0x1a3c('0x18')](_0x48fb34[_0x1a3c('0x16')],path[_0x1a3c('0x19')](_0x48fb34['savename'])),'zip');var _0x1632b3=path[_0x1a3c('0x15')](_0x355a72,_0x1d9b12);var _0xcf08c6=path['join'](_0x355a72,_0x49abf6);if(fs['existsSync'](_0x1632b3)){_0x48fb34[_0x1a3c('0x1a')]=_0x1a3c('0x1b');_0x38c1e3[_0x1a3c('0x1c')][_0x1a3c('0x1d')]=[{'filename':_0x1d9b12,'path':_0x1632b3}];_0x38c1e3[_0x1a3c('0x1c')][_0x1a3c('0x1e')]=util[_0x1a3c('0xf')](_0x1a3c('0x1f'),JSON[_0x1a3c('0x20')](_0x48fb34,null,0x2));}else if(fs[_0x1a3c('0x21')](_0xcf08c6)){_0x48fb34[_0x1a3c('0x1a')]='Sent';_0x38c1e3[_0x1a3c('0x1c')][_0x1a3c('0x1d')]=[{'filename':_0x49abf6,'path':_0xcf08c6}];}else{_0x38c1e3['message'][_0x1a3c('0x1e')]=_0x1a3c('0x22');if(!_0x42cd07[_0x1a3c('0x23')]){_0x33435d=![];logger[_0x1a3c('0xa')](_0x1a3c('0x24'));}}if(_0x33435d){return client['request']('SendMail',_0x38c1e3)[_0x1a3c('0x25')](function(_0x185f87){if(_0x185f87['error']){return logger[_0x1a3c('0x26')](_0x1a3c('0x27'),JSON[_0x1a3c('0x20')](_0x185f87));}return logger[_0x1a3c('0xa')](_0x1a3c('0x28'));})[_0x1a3c('0x29')](function(_0x2da670){return logger['error']('error\x20mail',JSON['stringify'](_0x2da670));});}};}function handleError(){return function(_0x30d612){return logger['error'](JSON[_0x1a3c('0x20')](_0x30d612));};}function handleResult(_0x19f2ba){return function(_0x15aa8c){logger[_0x1a3c('0xa')](_0x1a3c('0x2a'),JSON['stringify'](_0x15aa8c));if(_0x19f2ba[_0x1a3c('0xd')]&&_0x19f2ba['MailAccount'][_0x1a3c('0x2b')]&&!_['isNil'](_0x19f2ba[_0x1a3c('0xc')])){setTimeout(handleSendEmail(_0x19f2ba,_0x15aa8c),0x3c*0x3e8);}};}function handleJob(_0x369ce8){return function(){try{if(_[_0x1a3c('0x2c')](_0x369ce8[_0x1a3c('0x13')])){return logger[_0x1a3c('0xa')](_0x1a3c('0x2d'));}if(_[_0x1a3c('0x2c')](_0x369ce8['subtractUnit'])){return logger[_0x1a3c('0xa')]('subtractUnit\x20null\x20or\x20undefined');}var _0x20645d={'startDate':moment()[_0x1a3c('0x2e')](_0x369ce8[_0x1a3c('0x13')],_0x369ce8[_0x1a3c('0x14')])['format'](_0x1a3c('0x2f')),'endDate':moment()['format'](_0x1a3c('0x2f')),'type':_0x1a3c('0x30'),'output':_0x369ce8[_0x1a3c('0x31')],'name':_0x369ce8[_0x1a3c('0x12')]};if(!_[_0x1a3c('0x2c')](_0x369ce8[_0x1a3c('0x32')])){logger[_0x1a3c('0xa')](_0x1a3c('0x33'),_0x369ce8[_0x1a3c('0x32')]);return analyticDefaultReportController[_0x1a3c('0x34')]({'id':_0x369ce8['DefaultReportId']},_0x20645d)[_0x1a3c('0x25')](handleResult(_0x369ce8))[_0x1a3c('0x29')](handleError());}if(!_[_0x1a3c('0x2c')](_0x369ce8[_0x1a3c('0x35')])){logger[_0x1a3c('0xa')](_0x1a3c('0x36'),_0x369ce8[_0x1a3c('0x35')]);return analyticCustomReportController[_0x1a3c('0x34')]({'id':_0x369ce8[_0x1a3c('0x35')]},_0x20645d)[_0x1a3c('0x25')](handleResult(_0x369ce8))[_0x1a3c('0x29')](handleError());}}catch(_0x3564e5){logger[_0x1a3c('0x26')](JSON[_0x1a3c('0x20')](_0x3564e5));}return logger[_0x1a3c('0xa')](_0x1a3c('0x37'));};}function getJobs(_0x1bbf3f){var _0x5dfaa2={};if(_0x1bbf3f){_0x5dfaa2['id']=_0x1bbf3f;}return db['Schedule'][_0x1a3c('0x38')]({'where':_0x5dfaa2,'include':[{'model':db[_0x1a3c('0xd')],'attributes':['id',_0x1a3c('0x12'),_0x1a3c('0xc')],'include':[{'model':db[_0x1a3c('0x39')],'as':_0x1a3c('0x2b'),'include':[{'model':db['CloudProvider'],'as':_0x1a3c('0x3a')}]}]}]})['then'](function(_0x118b31){var _0x40e62c=_[_0x1a3c('0x3b')](manager['jobs']);var _0x35efe0=_[_0x1a3c('0x3c')](_0x118b31,function(_0x51a611){return _0x51a611['id'][_0x1a3c('0x3d')]();});var _0x93fdca=_[_0x1a3c('0x3e')](_0x118b31,function(_0x3d4411){return _0x3d4411['id'][_0x1a3c('0x3d')]();});var _0x313d98=_0x1bbf3f?_0x35efe0:_[_0x1a3c('0x3f')](_0x35efe0,_0x40e62c);var _0x2c80ee=_['intersection'](_0x35efe0,_0x40e62c);var _0x1b003c=_[_0x1a3c('0x3f')](_0x40e62c,_0x35efe0);var _0x1c0b61;var _0x28c30b;for(_0x1c0b61=0x0;_0x1c0b61<_0x1b003c['length']&&!_0x1bbf3f;_0x1c0b61+=0x1){_0x28c30b=_0x1b003c[_0x1c0b61]['toString']();if(manager[_0x1a3c('0x40')](_0x28c30b)){manager[_0x1a3c('0x41')](_0x28c30b);manager[_0x1a3c('0x42')](_0x28c30b);logger[_0x1a3c('0xa')](_0x1a3c('0x43'),_0x28c30b);}}logger[_0x1a3c('0xa')](_0x1a3c('0x44'),JSON[_0x1a3c('0x20')](_0x313d98));for(_0x1c0b61=0x0;_0x1c0b61<_0x313d98[_0x1a3c('0x45')];_0x1c0b61+=0x1){_0x28c30b=_0x313d98[_0x1c0b61]['toString']();logger[_0x1a3c('0xa')](_0x1a3c('0x46'),_0x28c30b);if(_0x1bbf3f){logger[_0x1a3c('0xa')](_0x1a3c('0x47'),_0x1bbf3f);logger[_0x1a3c('0xa')](JSON[_0x1a3c('0x20')](_0x93fdca[_0x28c30b]));BPromise[_0x1a3c('0x48')]()[_0x1a3c('0x25')](handleJob(_0x93fdca[_0x28c30b]));logger[_0x1a3c('0xa')](_0x1a3c('0x49'),_0x93fdca[_0x28c30b][_0x1a3c('0x12')],_0x93fdca[_0x28c30b][_0x1a3c('0x4a')]);}else if(_0x93fdca[_0x28c30b][_0x1a3c('0x4a')]&&_0x93fdca[_0x28c30b][_0x1a3c('0x4b')]&&moment()[_0x1a3c('0x4c')](_0x93fdca[_0x28c30b]['startAt'],_0x93fdca[_0x28c30b]['endAt'])){manager[_0x1a3c('0x4d')](_0x28c30b,_0x93fdca[_0x28c30b][_0x1a3c('0x4a')],handleJob(_0x93fdca[_0x28c30b]));manager[_0x1a3c('0x4e')](_0x28c30b);logger[_0x1a3c('0xa')](_0x1a3c('0x4f'),_0x93fdca[_0x28c30b][_0x1a3c('0x12')],_0x93fdca[_0x28c30b]['cron']);}else if(manager[_0x1a3c('0x40')](_0x28c30b)){manager['stop'](_0x28c30b);manager[_0x1a3c('0x42')](_0x28c30b);logger['info'](_0x1a3c('0x50'),_0x93fdca[_0x28c30b][_0x1a3c('0x12')],_0x93fdca[_0x28c30b]['cron']);}}for(_0x1c0b61=0x0,_0x28c30b;_0x1c0b61<_0x2c80ee[_0x1a3c('0x45')]&&!_0x1bbf3f;_0x1c0b61+=0x1){_0x28c30b=_0x2c80ee[_0x1c0b61][_0x1a3c('0x3d')]();if(manager[_0x1a3c('0x40')](_0x28c30b)){if(_0x93fdca[_0x28c30b]['cron']&&_0x93fdca[_0x28c30b][_0x1a3c('0x4b')]&&moment()['isBetween'](_0x93fdca[_0x28c30b][_0x1a3c('0x51')],_0x93fdca[_0x28c30b][_0x1a3c('0x52')])){manager[_0x1a3c('0x53')](_0x28c30b,_0x93fdca[_0x28c30b]['cron'],handleJob(_0x93fdca[_0x28c30b]));logger[_0x1a3c('0xa')](_0x1a3c('0x54'),_0x93fdca[_0x28c30b]['name'],_0x93fdca[_0x28c30b][_0x1a3c('0x4a')]);}else{manager[_0x1a3c('0x41')](_0x28c30b);manager['deleteJob'](_0x28c30b);logger[_0x1a3c('0xa')]('stop\x20cron',_0x93fdca[_0x28c30b]['name'],_0x93fdca[_0x28c30b][_0x1a3c('0x4a')]);}}}})[_0x1a3c('0x29')](function(_0x57809a){logger['error'](JSON['stringify'](_0x57809a));});}exports[_0x1a3c('0x55')]=function(_0x200962){return getJobs(_0x200962);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};