1b069bbc5fde78ea018598137d4e22ab7971a4f5
[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 _0x5ae6=['\x22%s\x22\x20<%s>','name','email','bcc','format','subtractNumber','subtractUnit','join','../../files/reports','basename','savename','zip','existsSync','status','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','stringify','Sent','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','error\x20mail','email\x20sent','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','length','stop','deleteJob','delete\x20cron','toRun','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','exists','stop\x20cron','update','update\x20cron','start','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','secure','authentication','user'];(function(_0x24d589,_0x477bf2){var _0x17f3d8=function(_0x5c3e55){while(--_0x5c3e55){_0x24d589['push'](_0x24d589['shift']());}};_0x17f3d8(++_0x477bf2);}(_0x5ae6,0x192));var _0x65ae=function(_0x4e1a49,_0x4da738){_0x4e1a49=_0x4e1a49-0x0;var _0x136aae=_0x5ae6[_0x4e1a49];return _0x136aae;};'use strict';var fs=require('fs');var util=require(_0x65ae('0x0'));var path=require(_0x65ae('0x1'));var _=require(_0x65ae('0x2'));var moment=require(_0x65ae('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x65ae('0x4'));var BPromise=require(_0x65ae('0x5'));var logger=require(_0x65ae('0x6'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x65ae('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x65ae('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x28325f,_0x100772){return function(){logger[_0x65ae('0x9')](_0x65ae('0xa'),_0x28325f['email']);var _0x295b66=!![];var _0x15736e={'tls':{'rejectUnauthorized':![]}};if(_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')][_0x65ae('0xd')]){_0x15736e[_0x65ae('0xd')]=_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')][_0x65ae('0xd')];}else{_0x15736e[_0x65ae('0xe')]=_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')][_0x65ae('0xe')];_0x15736e['port']=_0x28325f[_0x65ae('0xb')]['Smtp']['port'];_0x15736e['secure']=_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')][_0x65ae('0xf')];}if(_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')][_0x65ae('0x10')]){_0x15736e['auth']={'user':_0x28325f[_0x65ae('0xb')]['Smtp'][_0x65ae('0x11')],'pass':_0x28325f[_0x65ae('0xb')]['Smtp']['pass']};}var _0x4c0854={'account':_0x15736e,'message':{'from':util['format'](_0x65ae('0x12'),_0x28325f[_0x65ae('0xb')][_0x65ae('0x13')],_0x28325f[_0x65ae('0xb')][_0x65ae('0x14')]||_0x28325f[_0x65ae('0xb')][_0x65ae('0xc')]['user']),'to':_0x28325f[_0x65ae('0x14')],'cc':_0x28325f['cc'],'bcc':_0x28325f[_0x65ae('0x15')],'subject':util[_0x65ae('0x16')]('Report\x20%s\x20last\x20%s\x20%s',_0x100772['name'],_0x28325f[_0x65ae('0x17')],_0x28325f[_0x65ae('0x18')])}};var _0x59c803=path[_0x65ae('0x19')](__dirname,_0x65ae('0x1a'));var _0x1ea8b7=_0x100772['savename'];var _0x10eede=util['format']('%s.%s',path[_0x65ae('0x1b')](_0x100772['savename'],path['extname'](_0x100772[_0x65ae('0x1c')])),_0x65ae('0x1d'));var _0x7a61e7=path['join'](_0x59c803,_0x1ea8b7);var _0x36cc7f=path[_0x65ae('0x19')](_0x59c803,_0x10eede);if(fs[_0x65ae('0x1e')](_0x7a61e7)){_0x100772[_0x65ae('0x1f')]='Sent';_0x4c0854[_0x65ae('0x20')]['attachments']=[{'filename':_0x1ea8b7,'path':_0x7a61e7}];_0x4c0854[_0x65ae('0x20')][_0x65ae('0x21')]=util[_0x65ae('0x16')](_0x65ae('0x22'),JSON[_0x65ae('0x23')](_0x100772,null,0x2));}else if(fs[_0x65ae('0x1e')](_0x36cc7f)){_0x100772[_0x65ae('0x1f')]=_0x65ae('0x24');_0x4c0854[_0x65ae('0x20')][_0x65ae('0x25')]=[{'filename':_0x10eede,'path':_0x36cc7f}];}else{_0x4c0854[_0x65ae('0x20')][_0x65ae('0x21')]=_0x65ae('0x26');if(!_0x28325f[_0x65ae('0x27')]){_0x295b66=![];logger[_0x65ae('0x9')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x295b66){return client[_0x65ae('0x28')](_0x65ae('0x29'),_0x4c0854)[_0x65ae('0x2a')](function(_0x42adc5){if(_0x42adc5[_0x65ae('0x2b')]){return logger['error'](_0x65ae('0x2c'),JSON[_0x65ae('0x23')](_0x42adc5));}return logger[_0x65ae('0x9')](_0x65ae('0x2d'));})['catch'](function(_0x1d5bbc){return logger['error'](_0x65ae('0x2c'),JSON[_0x65ae('0x23')](_0x1d5bbc));});}};}function handleError(){return function(_0x44c812){return logger[_0x65ae('0x2b')](JSON[_0x65ae('0x23')](_0x44c812));};}function handleResult(_0x2428ee){return function(_0x2c4495){logger[_0x65ae('0x9')]('data',JSON[_0x65ae('0x23')](_0x2c4495));if(_0x2428ee['MailAccount']&&_0x2428ee[_0x65ae('0xb')][_0x65ae('0xc')]&&!_[_0x65ae('0x2e')](_0x2428ee[_0x65ae('0x14')])){setTimeout(handleSendEmail(_0x2428ee,_0x2c4495),0x3c*0x3e8);}};}function handleJob(_0x471521){return function(){try{if(_[_0x65ae('0x2e')](_0x471521[_0x65ae('0x17')])){return logger['info']('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x65ae('0x2e')](_0x471521[_0x65ae('0x18')])){return logger[_0x65ae('0x9')](_0x65ae('0x2f'));}var _0x4a14b9={'startDate':moment()[_0x65ae('0x30')](_0x471521['subtractNumber'],_0x471521[_0x65ae('0x18')])[_0x65ae('0x16')](_0x65ae('0x31')),'endDate':moment()['format'](_0x65ae('0x31')),'type':'scheduled','output':_0x471521[_0x65ae('0x32')],'name':_0x471521[_0x65ae('0x13')]};if(!_[_0x65ae('0x2e')](_0x471521[_0x65ae('0x33')])){logger[_0x65ae('0x9')](_0x65ae('0x34'),_0x471521[_0x65ae('0x33')]);return analyticDefaultReportController[_0x65ae('0x35')]({'id':_0x471521[_0x65ae('0x33')]},_0x4a14b9)['then'](handleResult(_0x471521))[_0x65ae('0x36')](handleError());}if(!_[_0x65ae('0x2e')](_0x471521[_0x65ae('0x37')])){logger[_0x65ae('0x9')](_0x65ae('0x38'),_0x471521[_0x65ae('0x37')]);return analyticCustomReportController[_0x65ae('0x35')]({'id':_0x471521[_0x65ae('0x37')]},_0x4a14b9)[_0x65ae('0x2a')](handleResult(_0x471521))[_0x65ae('0x36')](handleError());}}catch(_0x3d7935){logger[_0x65ae('0x2b')](JSON[_0x65ae('0x23')](_0x3d7935));}return logger['info'](_0x65ae('0x39'));};}function getJobs(_0x470050){var _0x428987={};if(_0x470050){_0x428987['id']=_0x470050;}return db[_0x65ae('0x3a')][_0x65ae('0x3b')]({'where':_0x428987,'include':[{'model':db[_0x65ae('0xb')],'attributes':['id',_0x65ae('0x13'),_0x65ae('0x14')],'include':[{'model':db[_0x65ae('0x3c')],'as':_0x65ae('0xc')}]}]})['then'](function(_0x28d79d){var _0x123f9f=_[_0x65ae('0x3d')](manager[_0x65ae('0x3e')]);var _0x22a056=_['map'](_0x28d79d,function(_0x95e39b){return _0x95e39b['id'][_0x65ae('0x3f')]();});var _0xad6b95=_[_0x65ae('0x40')](_0x28d79d,function(_0x387f3d){return _0x387f3d['id'][_0x65ae('0x3f')]();});var _0x100d01=_0x470050?_0x22a056:_['difference'](_0x22a056,_0x123f9f);var _0x373aba=_['intersection'](_0x22a056,_0x123f9f);var _0x54aada=_[_0x65ae('0x41')](_0x123f9f,_0x22a056);var _0xbf1fad;var _0xf9ce1;for(_0xbf1fad=0x0;_0xbf1fad<_0x54aada[_0x65ae('0x42')]&&!_0x470050;_0xbf1fad+=0x1){_0xf9ce1=_0x54aada[_0xbf1fad][_0x65ae('0x3f')]();if(manager['exists'](_0xf9ce1)){manager[_0x65ae('0x43')](_0xf9ce1);manager[_0x65ae('0x44')](_0xf9ce1);logger[_0x65ae('0x9')](_0x65ae('0x45'),_0xf9ce1);}}logger['info'](_0x65ae('0x46'),JSON[_0x65ae('0x23')](_0x100d01));for(_0xbf1fad=0x0;_0xbf1fad<_0x100d01[_0x65ae('0x42')];_0xbf1fad+=0x1){_0xf9ce1=_0x100d01[_0xbf1fad][_0x65ae('0x3f')]();logger[_0x65ae('0x9')]('index',_0xf9ce1);if(_0x470050){logger[_0x65ae('0x9')]('my\x20id',_0x470050);logger[_0x65ae('0x9')](JSON[_0x65ae('0x23')](_0xad6b95[_0xf9ce1]));BPromise[_0x65ae('0x47')]()[_0x65ae('0x2a')](handleJob(_0xad6b95[_0xf9ce1]));logger[_0x65ae('0x9')](_0x65ae('0x48'),_0xad6b95[_0xf9ce1]['name'],_0xad6b95[_0xf9ce1]['cron']);}else if(_0xad6b95[_0xf9ce1][_0x65ae('0x49')]&&_0xad6b95[_0xf9ce1][_0x65ae('0x4a')]&&moment()[_0x65ae('0x4b')](_0xad6b95[_0xf9ce1][_0x65ae('0x4c')],_0xad6b95[_0xf9ce1][_0x65ae('0x4d')])){manager[_0x65ae('0x4e')](_0xf9ce1,_0xad6b95[_0xf9ce1][_0x65ae('0x49')],handleJob(_0xad6b95[_0xf9ce1]));manager['start'](_0xf9ce1);logger['info']('add\x20cron',_0xad6b95[_0xf9ce1][_0x65ae('0x13')],_0xad6b95[_0xf9ce1][_0x65ae('0x49')]);}else if(manager[_0x65ae('0x4f')](_0xf9ce1)){manager[_0x65ae('0x43')](_0xf9ce1);manager[_0x65ae('0x44')](_0xf9ce1);logger[_0x65ae('0x9')](_0x65ae('0x50'),_0xad6b95[_0xf9ce1][_0x65ae('0x13')],_0xad6b95[_0xf9ce1][_0x65ae('0x49')]);}}for(_0xbf1fad=0x0,_0xf9ce1;_0xbf1fad<_0x373aba['length']&&!_0x470050;_0xbf1fad+=0x1){_0xf9ce1=_0x373aba[_0xbf1fad][_0x65ae('0x3f')]();if(manager[_0x65ae('0x4f')](_0xf9ce1)){if(_0xad6b95[_0xf9ce1][_0x65ae('0x49')]&&_0xad6b95[_0xf9ce1][_0x65ae('0x4a')]&&moment()[_0x65ae('0x4b')](_0xad6b95[_0xf9ce1]['startAt'],_0xad6b95[_0xf9ce1][_0x65ae('0x4d')])){manager[_0x65ae('0x51')](_0xf9ce1,_0xad6b95[_0xf9ce1][_0x65ae('0x49')],handleJob(_0xad6b95[_0xf9ce1]));logger[_0x65ae('0x9')](_0x65ae('0x52'),_0xad6b95[_0xf9ce1][_0x65ae('0x13')],_0xad6b95[_0xf9ce1][_0x65ae('0x49')]);}else{manager[_0x65ae('0x43')](_0xf9ce1);manager[_0x65ae('0x44')](_0xf9ce1);logger['info']('stop\x20cron',_0xad6b95[_0xf9ce1][_0x65ae('0x13')],_0xad6b95[_0xf9ce1]['cron']);}}}})[_0x65ae('0x36')](function(_0x1e9bd6){logger[_0x65ae('0x2b')](JSON['stringify'](_0x1e9bd6));});}exports['run']=function(_0x4abc7b){return getJobs(_0x4abc7b);};exports[_0x65ae('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};