88a7c6982ca724cb8f4fe430c0a78eb4e0939b7e
[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 _0x2a19=['Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','SendMail','then','error','error\x20mail','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','length','exists','deleteJob','delete\x20cron','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update\x20cron','stop','run','path','lodash','moment','jayson/promise','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','pass','format','\x22%s\x22\x20<%s>','name','user','subtractNumber','subtractUnit','join','savename','%s.%s','extname','zip','existsSync','status','Sent','message','text'];(function(_0x3ccc9c,_0x51e027){var _0x45973f=function(_0x38f1bb){while(--_0x38f1bb){_0x3ccc9c['push'](_0x3ccc9c['shift']());}};_0x45973f(++_0x51e027);}(_0x2a19,0x86));var _0x92a1=function(_0x4f8a4e,_0x51417f){_0x4f8a4e=_0x4f8a4e-0x0;var _0x4b1c99=_0x2a19[_0x4f8a4e];return _0x4b1c99;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x92a1('0x0'));var _=require(_0x92a1('0x1'));var moment=require(_0x92a1('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x92a1('0x3'));var BPromise=require(_0x92a1('0x4'));var logger=require(_0x92a1('0x5'))(_0x92a1('0x6'));var db=require(_0x92a1('0x7'))['db'];var analyticCustomReportController=require(_0x92a1('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x92a1('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4856bf,_0x5da3bb){return function(){logger[_0x92a1('0xa')](_0x92a1('0xb'),_0x4856bf[_0x92a1('0xc')]);var _0x4e2484=!![];var _0x4f4ae={'tls':{'rejectUnauthorized':![]}};if(_0x4856bf[_0x92a1('0xd')][_0x92a1('0xe')]['service']){_0x4f4ae[_0x92a1('0xf')]=_0x4856bf['MailAccount'][_0x92a1('0xe')][_0x92a1('0xf')];}else{_0x4f4ae[_0x92a1('0x10')]=_0x4856bf[_0x92a1('0xd')]['Smtp'][_0x92a1('0x10')];_0x4f4ae[_0x92a1('0x11')]=_0x4856bf['MailAccount'][_0x92a1('0xe')][_0x92a1('0x11')];_0x4f4ae[_0x92a1('0x12')]=_0x4856bf['MailAccount'][_0x92a1('0xe')]['secure'];}if(_0x4856bf[_0x92a1('0xd')]['Smtp'][_0x92a1('0x13')]){_0x4f4ae[_0x92a1('0x14')]={'user':_0x4856bf['MailAccount'][_0x92a1('0xe')]['user'],'pass':_0x4856bf[_0x92a1('0xd')]['Smtp'][_0x92a1('0x15')]};}var _0x4f05b6={'account':_0x4f4ae,'message':{'from':util[_0x92a1('0x16')](_0x92a1('0x17'),_0x4856bf[_0x92a1('0xd')][_0x92a1('0x18')],_0x4856bf['MailAccount'][_0x92a1('0xc')]||_0x4856bf[_0x92a1('0xd')]['Smtp'][_0x92a1('0x19')]),'to':_0x4856bf[_0x92a1('0xc')],'cc':_0x4856bf['cc'],'bcc':_0x4856bf['bcc'],'subject':util[_0x92a1('0x16')]('Report\x20%s\x20last\x20%s\x20%s',_0x5da3bb['name'],_0x4856bf[_0x92a1('0x1a')],_0x4856bf[_0x92a1('0x1b')])}};var _0x319f62=path[_0x92a1('0x1c')](__dirname,'../../files/reports');var _0x22bd34=_0x5da3bb[_0x92a1('0x1d')];var _0x2c423e=util['format'](_0x92a1('0x1e'),path['basename'](_0x5da3bb[_0x92a1('0x1d')],path[_0x92a1('0x1f')](_0x5da3bb['savename'])),_0x92a1('0x20'));var _0x33a612=path[_0x92a1('0x1c')](_0x319f62,_0x22bd34);var _0x30de79=path[_0x92a1('0x1c')](_0x319f62,_0x2c423e);if(fs[_0x92a1('0x21')](_0x33a612)){_0x5da3bb[_0x92a1('0x22')]=_0x92a1('0x23');_0x4f05b6['message']['attachments']=[{'filename':_0x22bd34,'path':_0x33a612}];_0x4f05b6[_0x92a1('0x24')][_0x92a1('0x25')]=util[_0x92a1('0x16')](_0x92a1('0x26'),JSON[_0x92a1('0x27')](_0x5da3bb,null,0x2));}else if(fs['existsSync'](_0x30de79)){_0x5da3bb['status']=_0x92a1('0x23');_0x4f05b6[_0x92a1('0x24')][_0x92a1('0x28')]=[{'filename':_0x2c423e,'path':_0x30de79}];}else{_0x4f05b6[_0x92a1('0x24')][_0x92a1('0x25')]=_0x92a1('0x29');if(!_0x4856bf[_0x92a1('0x2a')]){_0x4e2484=![];logger[_0x92a1('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x4e2484){return client['request'](_0x92a1('0x2b'),_0x4f05b6)[_0x92a1('0x2c')](function(_0x5e66ce){if(_0x5e66ce['error']){return logger[_0x92a1('0x2d')](_0x92a1('0x2e'),JSON[_0x92a1('0x27')](_0x5e66ce));}return logger['info'](_0x92a1('0x2f'));})[_0x92a1('0x30')](function(_0x5113f2){return logger[_0x92a1('0x2d')]('error\x20mail',JSON[_0x92a1('0x27')](_0x5113f2));});}};}function handleError(){return function(_0x3796f8){return logger[_0x92a1('0x2d')](JSON[_0x92a1('0x27')](_0x3796f8));};}function handleResult(_0x25a35e){return function(_0x30f786){logger[_0x92a1('0xa')]('data',JSON[_0x92a1('0x27')](_0x30f786));if(_0x25a35e[_0x92a1('0xd')]&&_0x25a35e['MailAccount'][_0x92a1('0xe')]&&!_[_0x92a1('0x31')](_0x25a35e[_0x92a1('0xc')])){setTimeout(handleSendEmail(_0x25a35e,_0x30f786),0x3c*0x3e8);}};}function handleJob(_0x1a3fbe){return function(){try{if(_[_0x92a1('0x31')](_0x1a3fbe['subtractNumber'])){return logger[_0x92a1('0xa')](_0x92a1('0x32'));}if(_['isNil'](_0x1a3fbe[_0x92a1('0x1b')])){return logger[_0x92a1('0xa')](_0x92a1('0x33'));}var _0x27c4ef={'startDate':moment()[_0x92a1('0x34')](_0x1a3fbe[_0x92a1('0x1a')],_0x1a3fbe[_0x92a1('0x1b')])[_0x92a1('0x16')](_0x92a1('0x35')),'endDate':moment()['format'](_0x92a1('0x35')),'type':'scheduled','output':_0x1a3fbe['output'],'name':_0x1a3fbe[_0x92a1('0x18')]};if(!_['isNil'](_0x1a3fbe[_0x92a1('0x36')])){logger[_0x92a1('0xa')](_0x92a1('0x37'),_0x1a3fbe['DefaultReportId']);return analyticDefaultReportController[_0x92a1('0x38')]({'id':_0x1a3fbe[_0x92a1('0x36')]},_0x27c4ef)[_0x92a1('0x2c')](handleResult(_0x1a3fbe))[_0x92a1('0x30')](handleError());}if(!_[_0x92a1('0x31')](_0x1a3fbe[_0x92a1('0x39')])){logger[_0x92a1('0xa')](_0x92a1('0x3a'),_0x1a3fbe[_0x92a1('0x39')]);return analyticCustomReportController[_0x92a1('0x38')]({'id':_0x1a3fbe['CustomReportId']},_0x27c4ef)[_0x92a1('0x2c')](handleResult(_0x1a3fbe))[_0x92a1('0x30')](handleError());}}catch(_0x21e25a){logger['error'](JSON[_0x92a1('0x27')](_0x21e25a));}return logger['info'](_0x92a1('0x3b'));};}function getJobs(_0xf0e969){var _0x119f1f={};if(_0xf0e969){_0x119f1f['id']=_0xf0e969;}return db['Schedule'][_0x92a1('0x3c')]({'where':_0x119f1f,'include':[{'model':db['MailAccount'],'attributes':['id',_0x92a1('0x18'),_0x92a1('0xc')],'include':[{'model':db[_0x92a1('0x3d')],'as':_0x92a1('0xe')}]}]})[_0x92a1('0x2c')](function(_0x44ac0b){var _0x411435=_[_0x92a1('0x3e')](manager[_0x92a1('0x3f')]);var _0x3f9dad=_[_0x92a1('0x40')](_0x44ac0b,function(_0x1e4dec){return _0x1e4dec['id'][_0x92a1('0x41')]();});var _0x4e8b17=_[_0x92a1('0x42')](_0x44ac0b,function(_0x53d294){return _0x53d294['id'][_0x92a1('0x41')]();});var _0x1f5da3=_0xf0e969?_0x3f9dad:_[_0x92a1('0x43')](_0x3f9dad,_0x411435);var _0x174a5c=_['intersection'](_0x3f9dad,_0x411435);var _0x142074=_['difference'](_0x411435,_0x3f9dad);var _0x2116ad;var _0x78317;for(_0x2116ad=0x0;_0x2116ad<_0x142074[_0x92a1('0x44')]&&!_0xf0e969;_0x2116ad+=0x1){_0x78317=_0x142074[_0x2116ad]['toString']();if(manager[_0x92a1('0x45')](_0x78317)){manager['stop'](_0x78317);manager[_0x92a1('0x46')](_0x78317);logger[_0x92a1('0xa')](_0x92a1('0x47'),_0x78317);}}logger[_0x92a1('0xa')]('toRun',JSON[_0x92a1('0x27')](_0x1f5da3));for(_0x2116ad=0x0;_0x2116ad<_0x1f5da3['length'];_0x2116ad+=0x1){_0x78317=_0x1f5da3[_0x2116ad][_0x92a1('0x41')]();logger['info'](_0x92a1('0x48'),_0x78317);if(_0xf0e969){logger[_0x92a1('0xa')](_0x92a1('0x49'),_0xf0e969);logger[_0x92a1('0xa')](JSON[_0x92a1('0x27')](_0x4e8b17[_0x78317]));BPromise['resolve']()['then'](handleJob(_0x4e8b17[_0x78317]));logger[_0x92a1('0xa')](_0x92a1('0x4a'),_0x4e8b17[_0x78317][_0x92a1('0x18')],_0x4e8b17[_0x78317]['cron']);}else if(_0x4e8b17[_0x78317][_0x92a1('0x4b')]&&_0x4e8b17[_0x78317][_0x92a1('0x4c')]&&moment()[_0x92a1('0x4d')](_0x4e8b17[_0x78317][_0x92a1('0x4e')],_0x4e8b17[_0x78317][_0x92a1('0x4f')])){manager['add'](_0x78317,_0x4e8b17[_0x78317][_0x92a1('0x4b')],handleJob(_0x4e8b17[_0x78317]));manager[_0x92a1('0x50')](_0x78317);logger[_0x92a1('0xa')](_0x92a1('0x51'),_0x4e8b17[_0x78317][_0x92a1('0x18')],_0x4e8b17[_0x78317][_0x92a1('0x4b')]);}else if(manager[_0x92a1('0x45')](_0x78317)){manager['stop'](_0x78317);manager[_0x92a1('0x46')](_0x78317);logger[_0x92a1('0xa')](_0x92a1('0x52'),_0x4e8b17[_0x78317]['name'],_0x4e8b17[_0x78317]['cron']);}}for(_0x2116ad=0x0,_0x78317;_0x2116ad<_0x174a5c[_0x92a1('0x44')]&&!_0xf0e969;_0x2116ad+=0x1){_0x78317=_0x174a5c[_0x2116ad]['toString']();if(manager[_0x92a1('0x45')](_0x78317)){if(_0x4e8b17[_0x78317]['cron']&&_0x4e8b17[_0x78317][_0x92a1('0x4c')]&&moment()[_0x92a1('0x4d')](_0x4e8b17[_0x78317][_0x92a1('0x4e')],_0x4e8b17[_0x78317]['endAt'])){manager['update'](_0x78317,_0x4e8b17[_0x78317][_0x92a1('0x4b')],handleJob(_0x4e8b17[_0x78317]));logger[_0x92a1('0xa')](_0x92a1('0x53'),_0x4e8b17[_0x78317]['name'],_0x4e8b17[_0x78317][_0x92a1('0x4b')]);}else{manager[_0x92a1('0x54')](_0x78317);manager['deleteJob'](_0x78317);logger[_0x92a1('0xa')](_0x92a1('0x52'),_0x4e8b17[_0x78317][_0x92a1('0x18')],_0x4e8b17[_0x78317][_0x92a1('0x4b')]);}}}})['catch'](function(_0x50b75e){logger['error'](JSON['stringify'](_0x50b75e));});}exports[_0x92a1('0x55')]=function(_0x4905d1){return getJobs(_0x4905d1);};exports[_0x92a1('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};