0ae1c631ce41995759282ab4327be1998abd5200
[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 _0x9db7=['status','Sent','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','format','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','length','exists','stop','delete\x20cron','my\x20id','resolve','cron','active','isBetween','startAt','add','start','add\x20cron','deleteJob','stop\x20cron','endAt','update\x20cron','run','path','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','service','Smtp','host','port','secure','authentication','pass','\x22%s\x22\x20<%s>','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','savename','%s.%s','basename','extname','zip','join','existsSync'];(function(_0x411c5b,_0x123603){var _0x39b37c=function(_0x785f30){while(--_0x785f30){_0x411c5b['push'](_0x411c5b['shift']());}};_0x39b37c(++_0x123603);}(_0x9db7,0x1ac));var _0x79db=function(_0xa279c,_0x3e5d65){_0xa279c=_0xa279c-0x0;var _0x18fe20=_0x9db7[_0xa279c];return _0x18fe20;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x79db('0x0'));var _=require('lodash');var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require(_0x79db('0x1'));var BPromise=require(_0x79db('0x2'));var logger=require('../logger')(_0x79db('0x3'));var db=require(_0x79db('0x4'))['db'];var analyticCustomReportController=require(_0x79db('0x5'));var analyticDefaultReportController=require(_0x79db('0x6'));var client=jayson[_0x79db('0x7')][_0x79db('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2b30cd,_0x42627d){return function(){logger[_0x79db('0x9')](_0x79db('0xa'),_0x2b30cd[_0x79db('0xb')]);var _0x277218=!![];var _0x30754e={'tls':{'rejectUnauthorized':![]}};if(_0x2b30cd[_0x79db('0xc')]['Smtp'][_0x79db('0xd')]){_0x30754e[_0x79db('0xd')]=_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0xd')];}else{_0x30754e[_0x79db('0xf')]=_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0xf')];_0x30754e['port']=_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0x10')];_0x30754e[_0x79db('0x11')]=_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0x11')];}if(_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0x12')]){_0x30754e['auth']={'user':_0x2b30cd['MailAccount']['Smtp']['user'],'pass':_0x2b30cd[_0x79db('0xc')]['Smtp'][_0x79db('0x13')]};}var _0x554ffb={'account':_0x30754e,'message':{'from':util['format'](_0x79db('0x14'),_0x2b30cd[_0x79db('0xc')][_0x79db('0x15')],_0x2b30cd[_0x79db('0xc')][_0x79db('0xb')]||_0x2b30cd[_0x79db('0xc')][_0x79db('0xe')][_0x79db('0x16')]),'to':_0x2b30cd[_0x79db('0xb')],'cc':_0x2b30cd['cc'],'bcc':_0x2b30cd[_0x79db('0x17')],'subject':util['format'](_0x79db('0x18'),_0x42627d[_0x79db('0x15')],_0x2b30cd['subtractNumber'],_0x2b30cd['subtractUnit'])}};var _0xbc5b3c=path['join'](__dirname,'../../files/reports');var _0x44599a=_0x42627d[_0x79db('0x19')];var _0x493a17=util['format'](_0x79db('0x1a'),path[_0x79db('0x1b')](_0x42627d[_0x79db('0x19')],path[_0x79db('0x1c')](_0x42627d[_0x79db('0x19')])),_0x79db('0x1d'));var _0x5c633a=path[_0x79db('0x1e')](_0xbc5b3c,_0x44599a);var _0xcc5652=path[_0x79db('0x1e')](_0xbc5b3c,_0x493a17);if(fs[_0x79db('0x1f')](_0x5c633a)){_0x42627d[_0x79db('0x20')]=_0x79db('0x21');_0x554ffb[_0x79db('0x22')]['attachments']=[{'filename':_0x44599a,'path':_0x5c633a}];_0x554ffb['message'][_0x79db('0x23')]=util['format'](_0x79db('0x24'),JSON[_0x79db('0x25')](_0x42627d,null,0x2));}else if(fs[_0x79db('0x1f')](_0xcc5652)){_0x42627d['status']=_0x79db('0x21');_0x554ffb[_0x79db('0x22')]['attachments']=[{'filename':_0x493a17,'path':_0xcc5652}];}else{_0x554ffb[_0x79db('0x22')]['text']=_0x79db('0x26');if(!_0x2b30cd[_0x79db('0x27')]){_0x277218=![];logger[_0x79db('0x9')](_0x79db('0x28'));}}if(_0x277218){return client[_0x79db('0x29')](_0x79db('0x2a'),_0x554ffb)[_0x79db('0x2b')](function(_0x2b2fc6){if(_0x2b2fc6[_0x79db('0x2c')]){return logger[_0x79db('0x2c')](_0x79db('0x2d'),JSON[_0x79db('0x25')](_0x2b2fc6));}return logger[_0x79db('0x9')](_0x79db('0x2e'));})['catch'](function(_0x1d80c7){return logger[_0x79db('0x2c')](_0x79db('0x2d'),JSON[_0x79db('0x25')](_0x1d80c7));});}};}function handleError(){return function(_0x51eeda){return logger[_0x79db('0x2c')](JSON['stringify'](_0x51eeda));};}function handleResult(_0x55866a){return function(_0x2474aa){logger['info'](_0x79db('0x2f'),JSON[_0x79db('0x25')](_0x2474aa));if(_0x55866a[_0x79db('0xc')]&&_0x55866a[_0x79db('0xc')][_0x79db('0xe')]&&!_[_0x79db('0x30')](_0x55866a[_0x79db('0xb')])){setTimeout(handleSendEmail(_0x55866a,_0x2474aa),0x3c*0x3e8);}};}function handleJob(_0x3f3018){return function(){try{if(_[_0x79db('0x30')](_0x3f3018[_0x79db('0x31')])){return logger[_0x79db('0x9')](_0x79db('0x32'));}if(_['isNil'](_0x3f3018[_0x79db('0x33')])){return logger[_0x79db('0x9')](_0x79db('0x34'));}var _0xd83ab4={'startDate':moment()[_0x79db('0x35')](_0x3f3018[_0x79db('0x31')],_0x3f3018[_0x79db('0x33')])[_0x79db('0x36')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x79db('0x36')](_0x79db('0x37')),'type':_0x79db('0x38'),'output':_0x3f3018[_0x79db('0x39')],'name':_0x3f3018['name']};if(!_[_0x79db('0x30')](_0x3f3018[_0x79db('0x3a')])){logger[_0x79db('0x9')](_0x79db('0x3b'),_0x3f3018[_0x79db('0x3a')]);return analyticDefaultReportController[_0x79db('0x3c')]({'id':_0x3f3018[_0x79db('0x3a')]},_0xd83ab4)[_0x79db('0x2b')](handleResult(_0x3f3018))[_0x79db('0x3d')](handleError());}if(!_[_0x79db('0x30')](_0x3f3018[_0x79db('0x3e')])){logger['info'](_0x79db('0x3f'),_0x3f3018[_0x79db('0x3e')]);return analyticCustomReportController[_0x79db('0x3c')]({'id':_0x3f3018[_0x79db('0x3e')]},_0xd83ab4)[_0x79db('0x2b')](handleResult(_0x3f3018))[_0x79db('0x3d')](handleError());}}catch(_0xe2eff6){logger[_0x79db('0x2c')](JSON[_0x79db('0x25')](_0xe2eff6));}return logger['info'](_0x79db('0x40'));};}function getJobs(_0x34d2f0){var _0x863407={};if(_0x34d2f0){_0x863407['id']=_0x34d2f0;}return db[_0x79db('0x41')][_0x79db('0x42')]({'where':_0x863407,'include':[{'model':db[_0x79db('0xc')],'attributes':['id','name',_0x79db('0xb')],'include':[{'model':db[_0x79db('0x43')],'as':_0x79db('0xe')}]}]})[_0x79db('0x2b')](function(_0x2ef910){var _0x373d8f=_[_0x79db('0x44')](manager[_0x79db('0x45')]);var _0x1c1e73=_[_0x79db('0x46')](_0x2ef910,function(_0x190fc7){return _0x190fc7['id'][_0x79db('0x47')]();});var _0x4db19b=_[_0x79db('0x48')](_0x2ef910,function(_0x4f052b){return _0x4f052b['id'][_0x79db('0x47')]();});var _0x299a96=_0x34d2f0?_0x1c1e73:_['difference'](_0x1c1e73,_0x373d8f);var _0x4bd669=_['intersection'](_0x1c1e73,_0x373d8f);var _0x31ef3c=_[_0x79db('0x49')](_0x373d8f,_0x1c1e73);var _0x1c0c60;var _0x72ebbc;for(_0x1c0c60=0x0;_0x1c0c60<_0x31ef3c[_0x79db('0x4a')]&&!_0x34d2f0;_0x1c0c60+=0x1){_0x72ebbc=_0x31ef3c[_0x1c0c60][_0x79db('0x47')]();if(manager[_0x79db('0x4b')](_0x72ebbc)){manager[_0x79db('0x4c')](_0x72ebbc);manager['deleteJob'](_0x72ebbc);logger[_0x79db('0x9')](_0x79db('0x4d'),_0x72ebbc);}}logger[_0x79db('0x9')]('toRun',JSON['stringify'](_0x299a96));for(_0x1c0c60=0x0;_0x1c0c60<_0x299a96[_0x79db('0x4a')];_0x1c0c60+=0x1){_0x72ebbc=_0x299a96[_0x1c0c60][_0x79db('0x47')]();logger[_0x79db('0x9')]('index',_0x72ebbc);if(_0x34d2f0){logger['info'](_0x79db('0x4e'),_0x34d2f0);logger['info'](JSON['stringify'](_0x4db19b[_0x72ebbc]));BPromise[_0x79db('0x4f')]()['then'](handleJob(_0x4db19b[_0x72ebbc]));logger[_0x79db('0x9')]('run\x20job',_0x4db19b[_0x72ebbc][_0x79db('0x15')],_0x4db19b[_0x72ebbc]['cron']);}else if(_0x4db19b[_0x72ebbc][_0x79db('0x50')]&&_0x4db19b[_0x72ebbc][_0x79db('0x51')]&&moment()[_0x79db('0x52')](_0x4db19b[_0x72ebbc][_0x79db('0x53')],_0x4db19b[_0x72ebbc]['endAt'])){manager[_0x79db('0x54')](_0x72ebbc,_0x4db19b[_0x72ebbc][_0x79db('0x50')],handleJob(_0x4db19b[_0x72ebbc]));manager[_0x79db('0x55')](_0x72ebbc);logger['info'](_0x79db('0x56'),_0x4db19b[_0x72ebbc][_0x79db('0x15')],_0x4db19b[_0x72ebbc][_0x79db('0x50')]);}else if(manager[_0x79db('0x4b')](_0x72ebbc)){manager[_0x79db('0x4c')](_0x72ebbc);manager[_0x79db('0x57')](_0x72ebbc);logger['info'](_0x79db('0x58'),_0x4db19b[_0x72ebbc][_0x79db('0x15')],_0x4db19b[_0x72ebbc][_0x79db('0x50')]);}}for(_0x1c0c60=0x0,_0x72ebbc;_0x1c0c60<_0x4bd669['length']&&!_0x34d2f0;_0x1c0c60+=0x1){_0x72ebbc=_0x4bd669[_0x1c0c60][_0x79db('0x47')]();if(manager[_0x79db('0x4b')](_0x72ebbc)){if(_0x4db19b[_0x72ebbc]['cron']&&_0x4db19b[_0x72ebbc][_0x79db('0x51')]&&moment()[_0x79db('0x52')](_0x4db19b[_0x72ebbc]['startAt'],_0x4db19b[_0x72ebbc][_0x79db('0x59')])){manager['update'](_0x72ebbc,_0x4db19b[_0x72ebbc][_0x79db('0x50')],handleJob(_0x4db19b[_0x72ebbc]));logger['info'](_0x79db('0x5a'),_0x4db19b[_0x72ebbc][_0x79db('0x15')],_0x4db19b[_0x72ebbc][_0x79db('0x50')]);}else{manager[_0x79db('0x4c')](_0x72ebbc);manager[_0x79db('0x57')](_0x72ebbc);logger['info'](_0x79db('0x58'),_0x4db19b[_0x72ebbc][_0x79db('0x15')],_0x4db19b[_0x72ebbc]['cron']);}}}})[_0x79db('0x3d')](function(_0x35cb56){logger[_0x79db('0x2c')](JSON['stringify'](_0x35cb56));});}exports[_0x79db('0x5b')]=function(_0x20782d){return getJobs(_0x20782d);};exports[_0x79db('0x55')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};