16f3a4c37e9405421bf3b189c1db521c6d23d10a
[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 _0xe35f=['user','pass','\x22%s\x22\x20<%s>','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','%s.%s','basename','extname','existsSync','status','message','attachments','stringify','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','no\x20report\x20id','Schedule','findAll','name','MailServerOut','keys','jobs','map','keyBy','difference','intersection','toString','stop','toRun','length','index','resolve','cron','active','startAt','endAt','add','add\x20cron','deleteJob','stop\x20cron','update\x20cron','run','start','util','path','lodash','cron-job-manager','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','service','MailAccount','Smtp','host','port','secure','authentication'];(function(_0x20a4dc,_0x2bd7c7){var _0x49000f=function(_0x2246e7){while(--_0x2246e7){_0x20a4dc['push'](_0x20a4dc['shift']());}};_0x49000f(++_0x2bd7c7);}(_0xe35f,0xf2));var _0xfe35=function(_0x126398,_0x604247){_0x126398=_0x126398-0x0;var _0x5d2933=_0xe35f[_0x126398];return _0x5d2933;};'use strict';var fs=require('fs');var util=require(_0xfe35('0x0'));var path=require(_0xfe35('0x1'));var _=require(_0xfe35('0x2'));var moment=require('moment');var CronJobManager=require(_0xfe35('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0xfe35('0x4'));var logger=require(_0xfe35('0x5'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xfe35('0x6'));var analyticDefaultReportController=require(_0xfe35('0x7'));var client=jayson[_0xfe35('0x8')][_0xfe35('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x491437,_0x176892){return function(){logger['info'](_0xfe35('0xa'),_0x491437[_0xfe35('0xb')]);var _0x48d554=!![];var _0x1bf0ef={'tls':{'rejectUnauthorized':![]}};if(_0x491437['MailAccount']['Smtp'][_0xfe35('0xc')]){_0x1bf0ef[_0xfe35('0xc')]=_0x491437[_0xfe35('0xd')][_0xfe35('0xe')][_0xfe35('0xc')];}else{_0x1bf0ef[_0xfe35('0xf')]=_0x491437['MailAccount'][_0xfe35('0xe')]['host'];_0x1bf0ef[_0xfe35('0x10')]=_0x491437['MailAccount']['Smtp']['port'];_0x1bf0ef[_0xfe35('0x11')]=_0x491437[_0xfe35('0xd')]['Smtp'][_0xfe35('0x11')];}if(_0x491437[_0xfe35('0xd')][_0xfe35('0xe')][_0xfe35('0x12')]){_0x1bf0ef['auth']={'user':_0x491437[_0xfe35('0xd')][_0xfe35('0xe')][_0xfe35('0x13')],'pass':_0x491437[_0xfe35('0xd')][_0xfe35('0xe')][_0xfe35('0x14')]};}var _0x2012e3={'account':_0x1bf0ef,'message':{'from':util['format'](_0xfe35('0x15'),_0x491437[_0xfe35('0xd')]['name'],_0x491437[_0xfe35('0xd')][_0xfe35('0xb')]||_0x491437[_0xfe35('0xd')]['Smtp'][_0xfe35('0x13')]),'to':_0x491437[_0xfe35('0xb')],'cc':_0x491437['cc'],'bcc':_0x491437['bcc'],'subject':util[_0xfe35('0x16')](_0xfe35('0x17'),_0x176892['name'],_0x491437['subtractNumber'],_0x491437[_0xfe35('0x18')])}};var _0x1d9f19=path[_0xfe35('0x19')](__dirname,'../../files/reports');var _0x194e86=_0x176892[_0xfe35('0x1a')];var _0x1be6dd=util[_0xfe35('0x16')](_0xfe35('0x1b'),path[_0xfe35('0x1c')](_0x176892[_0xfe35('0x1a')],path[_0xfe35('0x1d')](_0x176892[_0xfe35('0x1a')])),'zip');var _0x232040=path[_0xfe35('0x19')](_0x1d9f19,_0x194e86);var _0x46e373=path['join'](_0x1d9f19,_0x1be6dd);if(fs[_0xfe35('0x1e')](_0x232040)){_0x176892[_0xfe35('0x1f')]='Sent';_0x2012e3[_0xfe35('0x20')][_0xfe35('0x21')]=[{'filename':_0x194e86,'path':_0x232040}];_0x2012e3['message']['text']=util[_0xfe35('0x16')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xfe35('0x22')](_0x176892,null,0x2));}else if(fs[_0xfe35('0x1e')](_0x46e373)){_0x176892['status']=_0xfe35('0x23');_0x2012e3[_0xfe35('0x20')][_0xfe35('0x21')]=[{'filename':_0x1be6dd,'path':_0x46e373}];}else{_0x2012e3['message']['text']=_0xfe35('0x24');if(!_0x491437['sendIfEmpty']){_0x48d554=![];logger[_0xfe35('0x25')](_0xfe35('0x26'));}}if(_0x48d554){return client[_0xfe35('0x27')](_0xfe35('0x28'),_0x2012e3)[_0xfe35('0x29')](function(_0x2d6cd1){if(_0x2d6cd1[_0xfe35('0x2a')]){return logger['error'](_0xfe35('0x2b'),JSON[_0xfe35('0x22')](_0x2d6cd1));}return logger[_0xfe35('0x25')](_0xfe35('0x2c'));})['catch'](function(_0x104c72){return logger['error'](_0xfe35('0x2b'),JSON[_0xfe35('0x22')](_0x104c72));});}};}function handleError(){return function(_0x37d828){return logger['error'](JSON['stringify'](_0x37d828));};}function handleResult(_0x5aba05){return function(_0x18f90a){logger[_0xfe35('0x25')](_0xfe35('0x2d'),JSON[_0xfe35('0x22')](_0x18f90a));if(_0x5aba05[_0xfe35('0xd')]&&_0x5aba05[_0xfe35('0xd')][_0xfe35('0xe')]&&!_[_0xfe35('0x2e')](_0x5aba05[_0xfe35('0xb')])){setTimeout(handleSendEmail(_0x5aba05,_0x18f90a),0x3c*0x3e8);}};}function handleJob(_0x3074b0){return function(){try{if(_[_0xfe35('0x2e')](_0x3074b0[_0xfe35('0x2f')])){return logger[_0xfe35('0x25')](_0xfe35('0x30'));}if(_[_0xfe35('0x2e')](_0x3074b0[_0xfe35('0x18')])){return logger[_0xfe35('0x25')](_0xfe35('0x31'));}var _0x153ac3={'startDate':moment()[_0xfe35('0x32')](_0x3074b0[_0xfe35('0x2f')],_0x3074b0['subtractUnit'])[_0xfe35('0x16')](_0xfe35('0x33')),'endDate':moment()[_0xfe35('0x16')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x3074b0[_0xfe35('0x34')],'name':_0x3074b0['name']};if(!_[_0xfe35('0x2e')](_0x3074b0[_0xfe35('0x35')])){logger[_0xfe35('0x25')](_0xfe35('0x36'),_0x3074b0[_0xfe35('0x35')]);return analyticDefaultReportController['runReport']({'id':_0x3074b0[_0xfe35('0x35')]},_0x153ac3)[_0xfe35('0x29')](handleResult(_0x3074b0))[_0xfe35('0x37')](handleError());}if(!_['isNil'](_0x3074b0[_0xfe35('0x38')])){logger[_0xfe35('0x25')](_0xfe35('0x39'),_0x3074b0['CustomReportId']);return analyticCustomReportController[_0xfe35('0x3a')]({'id':_0x3074b0[_0xfe35('0x38')]},_0x153ac3)[_0xfe35('0x29')](handleResult(_0x3074b0))[_0xfe35('0x37')](handleError());}}catch(_0x507bb1){logger[_0xfe35('0x2a')](JSON['stringify'](_0x507bb1));}return logger[_0xfe35('0x25')](_0xfe35('0x3b'));};}function getJobs(_0x4badf){var _0x344a4e={};if(_0x4badf){_0x344a4e['id']=_0x4badf;}return db[_0xfe35('0x3c')][_0xfe35('0x3d')]({'where':_0x344a4e,'include':[{'model':db[_0xfe35('0xd')],'attributes':['id',_0xfe35('0x3e'),_0xfe35('0xb')],'include':[{'model':db[_0xfe35('0x3f')],'as':_0xfe35('0xe')}]}]})[_0xfe35('0x29')](function(_0x4da204){var _0x318a2b=_[_0xfe35('0x40')](manager[_0xfe35('0x41')]);var _0x199e48=_[_0xfe35('0x42')](_0x4da204,function(_0x436775){return _0x436775['id']['toString']();});var _0x4f82cd=_[_0xfe35('0x43')](_0x4da204,function(_0x20de43){return _0x20de43['id']['toString']();});var _0x821bee=_0x4badf?_0x199e48:_[_0xfe35('0x44')](_0x199e48,_0x318a2b);var _0x3ff615=_[_0xfe35('0x45')](_0x199e48,_0x318a2b);var _0x5c8056=_[_0xfe35('0x44')](_0x318a2b,_0x199e48);var _0x57b650;var _0x4f5547;for(_0x57b650=0x0;_0x57b650<_0x5c8056['length']&&!_0x4badf;_0x57b650+=0x1){_0x4f5547=_0x5c8056[_0x57b650][_0xfe35('0x46')]();if(manager['exists'](_0x4f5547)){manager[_0xfe35('0x47')](_0x4f5547);manager['deleteJob'](_0x4f5547);logger['info']('delete\x20cron',_0x4f5547);}}logger[_0xfe35('0x25')](_0xfe35('0x48'),JSON[_0xfe35('0x22')](_0x821bee));for(_0x57b650=0x0;_0x57b650<_0x821bee[_0xfe35('0x49')];_0x57b650+=0x1){_0x4f5547=_0x821bee[_0x57b650][_0xfe35('0x46')]();logger[_0xfe35('0x25')](_0xfe35('0x4a'),_0x4f5547);if(_0x4badf){logger[_0xfe35('0x25')]('my\x20id',_0x4badf);logger[_0xfe35('0x25')](JSON['stringify'](_0x4f82cd[_0x4f5547]));BPromise[_0xfe35('0x4b')]()[_0xfe35('0x29')](handleJob(_0x4f82cd[_0x4f5547]));logger['info']('run\x20job',_0x4f82cd[_0x4f5547][_0xfe35('0x3e')],_0x4f82cd[_0x4f5547][_0xfe35('0x4c')]);}else if(_0x4f82cd[_0x4f5547]['cron']&&_0x4f82cd[_0x4f5547][_0xfe35('0x4d')]&&moment()['isBetween'](_0x4f82cd[_0x4f5547][_0xfe35('0x4e')],_0x4f82cd[_0x4f5547][_0xfe35('0x4f')])){manager[_0xfe35('0x50')](_0x4f5547,_0x4f82cd[_0x4f5547]['cron'],handleJob(_0x4f82cd[_0x4f5547]));manager['start'](_0x4f5547);logger['info'](_0xfe35('0x51'),_0x4f82cd[_0x4f5547][_0xfe35('0x3e')],_0x4f82cd[_0x4f5547]['cron']);}else if(manager['exists'](_0x4f5547)){manager[_0xfe35('0x47')](_0x4f5547);manager[_0xfe35('0x52')](_0x4f5547);logger[_0xfe35('0x25')](_0xfe35('0x53'),_0x4f82cd[_0x4f5547][_0xfe35('0x3e')],_0x4f82cd[_0x4f5547][_0xfe35('0x4c')]);}}for(_0x57b650=0x0,_0x4f5547;_0x57b650<_0x3ff615[_0xfe35('0x49')]&&!_0x4badf;_0x57b650+=0x1){_0x4f5547=_0x3ff615[_0x57b650]['toString']();if(manager['exists'](_0x4f5547)){if(_0x4f82cd[_0x4f5547][_0xfe35('0x4c')]&&_0x4f82cd[_0x4f5547][_0xfe35('0x4d')]&&moment()['isBetween'](_0x4f82cd[_0x4f5547][_0xfe35('0x4e')],_0x4f82cd[_0x4f5547][_0xfe35('0x4f')])){manager['update'](_0x4f5547,_0x4f82cd[_0x4f5547][_0xfe35('0x4c')],handleJob(_0x4f82cd[_0x4f5547]));logger[_0xfe35('0x25')](_0xfe35('0x54'),_0x4f82cd[_0x4f5547]['name'],_0x4f82cd[_0x4f5547]['cron']);}else{manager[_0xfe35('0x47')](_0x4f5547);manager['deleteJob'](_0x4f5547);logger['info'](_0xfe35('0x53'),_0x4f82cd[_0x4f5547][_0xfe35('0x3e')],_0x4f82cd[_0x4f5547][_0xfe35('0x4c')]);}}}})['catch'](function(_0x29684c){logger['error'](JSON[_0xfe35('0x22')](_0x29684c));});}exports[_0xfe35('0x55')]=function(_0x18acae){return getJobs(_0x18acae);};exports[_0xfe35('0x56')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};