Built motion from commit 3e059bc2.|2.5.32
[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 _0xc9f1=['exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','jobs','keyBy','toString','difference','intersection','length','exists','toRun','index','my\x20id','resolve','cron','active','isBetween','startAt','endAt','add','add\x20cron','stop','deleteJob','stop\x20cron','update','update\x20cron','run','start','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Smtp','service','MailAccount','host','port','secure','authentication','auth','user','pass','\x22%s\x22\x20<%s>','name','email','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','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','status','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','info','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId'];(function(_0x4ff969,_0x48cdf3){var _0x2f17f7=function(_0x458b49){while(--_0x458b49){_0x4ff969['push'](_0x4ff969['shift']());}};_0x2f17f7(++_0x48cdf3);}(_0xc9f1,0x185));var _0x1c9f=function(_0x88d45a,_0x521cee){_0x88d45a=_0x88d45a-0x0;var _0x3d9ed2=_0xc9f1[_0x88d45a];return _0x3d9ed2;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x1c9f('0x0'));var _=require(_0x1c9f('0x1'));var moment=require(_0x1c9f('0x2'));var CronJobManager=require(_0x1c9f('0x3'));var jayson=require(_0x1c9f('0x4'));var BPromise=require(_0x1c9f('0x5'));var logger=require(_0x1c9f('0x6'))('schedule');var db=require(_0x1c9f('0x7'))['db'];var analyticCustomReportController=require(_0x1c9f('0x8'));var analyticDefaultReportController=require(_0x1c9f('0x9'));var client=jayson['client'][_0x1c9f('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x517abe,_0x2f14cd){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x517abe['email']);var _0x3b3cd5=!![];var _0x33ca7d={'tls':{'rejectUnauthorized':![]}};if(_0x517abe['MailAccount'][_0x1c9f('0xb')]['service']){_0x33ca7d[_0x1c9f('0xc')]=_0x517abe[_0x1c9f('0xd')][_0x1c9f('0xb')]['service'];}else{_0x33ca7d[_0x1c9f('0xe')]=_0x517abe[_0x1c9f('0xd')][_0x1c9f('0xb')][_0x1c9f('0xe')];_0x33ca7d[_0x1c9f('0xf')]=_0x517abe['MailAccount'][_0x1c9f('0xb')][_0x1c9f('0xf')];_0x33ca7d['secure']=_0x517abe['MailAccount']['Smtp'][_0x1c9f('0x10')];}if(_0x517abe['MailAccount'][_0x1c9f('0xb')][_0x1c9f('0x11')]){_0x33ca7d[_0x1c9f('0x12')]={'user':_0x517abe['MailAccount'][_0x1c9f('0xb')][_0x1c9f('0x13')],'pass':_0x517abe[_0x1c9f('0xd')][_0x1c9f('0xb')][_0x1c9f('0x14')]};}var _0x2ca00c={'account':_0x33ca7d,'message':{'from':util['format'](_0x1c9f('0x15'),_0x517abe[_0x1c9f('0xd')][_0x1c9f('0x16')],_0x517abe[_0x1c9f('0xd')][_0x1c9f('0x17')]||_0x517abe[_0x1c9f('0xd')]['Smtp'][_0x1c9f('0x13')]),'to':_0x517abe[_0x1c9f('0x17')],'cc':_0x517abe['cc'],'bcc':_0x517abe[_0x1c9f('0x18')],'subject':util[_0x1c9f('0x19')](_0x1c9f('0x1a'),_0x2f14cd[_0x1c9f('0x16')],_0x517abe[_0x1c9f('0x1b')],_0x517abe[_0x1c9f('0x1c')])}};var _0x4f0425=path[_0x1c9f('0x1d')](__dirname,'../../files/reports');var _0x30da37=_0x2f14cd[_0x1c9f('0x1e')];var _0x1a3a13=util['format'](_0x1c9f('0x1f'),path[_0x1c9f('0x20')](_0x2f14cd[_0x1c9f('0x1e')],path[_0x1c9f('0x21')](_0x2f14cd[_0x1c9f('0x1e')])),_0x1c9f('0x22'));var _0x54b9b3=path[_0x1c9f('0x1d')](_0x4f0425,_0x30da37);var _0x1a6420=path[_0x1c9f('0x1d')](_0x4f0425,_0x1a3a13);if(fs[_0x1c9f('0x23')](_0x54b9b3)){_0x2f14cd['status']=_0x1c9f('0x24');_0x2ca00c[_0x1c9f('0x25')][_0x1c9f('0x26')]=[{'filename':_0x30da37,'path':_0x54b9b3}];_0x2ca00c[_0x1c9f('0x25')][_0x1c9f('0x27')]=util['format'](_0x1c9f('0x28'),JSON[_0x1c9f('0x29')](_0x2f14cd,null,0x2));}else if(fs['existsSync'](_0x1a6420)){_0x2f14cd[_0x1c9f('0x2a')]=_0x1c9f('0x24');_0x2ca00c['message'][_0x1c9f('0x26')]=[{'filename':_0x1a3a13,'path':_0x1a6420}];}else{_0x2ca00c[_0x1c9f('0x25')][_0x1c9f('0x27')]=_0x1c9f('0x2b');if(!_0x517abe['sendIfEmpty']){_0x3b3cd5=![];logger['info'](_0x1c9f('0x2c'));}}if(_0x3b3cd5){return client[_0x1c9f('0x2d')](_0x1c9f('0x2e'),_0x2ca00c)[_0x1c9f('0x2f')](function(_0x2632d4){if(_0x2632d4['error']){return logger[_0x1c9f('0x30')](_0x1c9f('0x31'),JSON[_0x1c9f('0x29')](_0x2632d4));}return logger['info'](_0x1c9f('0x32'));})[_0x1c9f('0x33')](function(_0x42ecce){return logger[_0x1c9f('0x30')](_0x1c9f('0x31'),JSON[_0x1c9f('0x29')](_0x42ecce));});}};}function handleError(){return function(_0x4c190e){return logger[_0x1c9f('0x30')](JSON['stringify'](_0x4c190e));};}function handleResult(_0x455989){return function(_0x27876d){logger[_0x1c9f('0x34')](_0x1c9f('0x35'),JSON['stringify'](_0x27876d));if(_0x455989[_0x1c9f('0xd')]&&_0x455989[_0x1c9f('0xd')][_0x1c9f('0xb')]&&!_['isNil'](_0x455989[_0x1c9f('0x17')])){setTimeout(handleSendEmail(_0x455989,_0x27876d),0x3c*0x3e8);}};}function handleJob(_0x4ff9d8){return function(){try{if(_[_0x1c9f('0x36')](_0x4ff9d8[_0x1c9f('0x1b')])){return logger[_0x1c9f('0x34')](_0x1c9f('0x37'));}if(_[_0x1c9f('0x36')](_0x4ff9d8[_0x1c9f('0x1c')])){return logger[_0x1c9f('0x34')](_0x1c9f('0x38'));}var _0x452f9f={'startDate':moment()[_0x1c9f('0x39')](_0x4ff9d8[_0x1c9f('0x1b')],_0x4ff9d8[_0x1c9f('0x1c')])[_0x1c9f('0x19')](_0x1c9f('0x3a')),'endDate':moment()[_0x1c9f('0x19')](_0x1c9f('0x3a')),'type':'scheduled','output':_0x4ff9d8[_0x1c9f('0x3b')],'name':_0x4ff9d8[_0x1c9f('0x16')]};if(!_['isNil'](_0x4ff9d8[_0x1c9f('0x3c')])){logger[_0x1c9f('0x34')](_0x1c9f('0x3d'),_0x4ff9d8[_0x1c9f('0x3c')]);return analyticDefaultReportController[_0x1c9f('0x3e')]({'id':_0x4ff9d8[_0x1c9f('0x3c')]},_0x452f9f)[_0x1c9f('0x2f')](handleResult(_0x4ff9d8))[_0x1c9f('0x33')](handleError());}if(!_[_0x1c9f('0x36')](_0x4ff9d8[_0x1c9f('0x3f')])){logger[_0x1c9f('0x34')](_0x1c9f('0x40'),_0x4ff9d8['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x4ff9d8[_0x1c9f('0x3f')]},_0x452f9f)['then'](handleResult(_0x4ff9d8))[_0x1c9f('0x33')](handleError());}}catch(_0x43b35a){logger[_0x1c9f('0x30')](JSON['stringify'](_0x43b35a));}return logger[_0x1c9f('0x34')]('no\x20report\x20id');};}function getJobs(_0x2bb95d){var _0x2dbeb5={};if(_0x2bb95d){_0x2dbeb5['id']=_0x2bb95d;}return db['Schedule']['findAll']({'where':_0x2dbeb5,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0x1c9f('0x17')],'include':[{'model':db['MailServerOut'],'as':_0x1c9f('0xb')}]}]})[_0x1c9f('0x2f')](function(_0x504af3){var _0x2a0c16=_['keys'](manager[_0x1c9f('0x41')]);var _0x3b907d=_['map'](_0x504af3,function(_0xefd158){return _0xefd158['id']['toString']();});var _0x1a6868=_[_0x1c9f('0x42')](_0x504af3,function(_0x5764fc){return _0x5764fc['id'][_0x1c9f('0x43')]();});var _0x3c756f=_0x2bb95d?_0x3b907d:_[_0x1c9f('0x44')](_0x3b907d,_0x2a0c16);var _0x289c7d=_[_0x1c9f('0x45')](_0x3b907d,_0x2a0c16);var _0x416813=_['difference'](_0x2a0c16,_0x3b907d);var _0xb5d3f1;var _0x3ad211;for(_0xb5d3f1=0x0;_0xb5d3f1<_0x416813[_0x1c9f('0x46')]&&!_0x2bb95d;_0xb5d3f1+=0x1){_0x3ad211=_0x416813[_0xb5d3f1][_0x1c9f('0x43')]();if(manager[_0x1c9f('0x47')](_0x3ad211)){manager['stop'](_0x3ad211);manager['deleteJob'](_0x3ad211);logger[_0x1c9f('0x34')]('delete\x20cron',_0x3ad211);}}logger[_0x1c9f('0x34')](_0x1c9f('0x48'),JSON[_0x1c9f('0x29')](_0x3c756f));for(_0xb5d3f1=0x0;_0xb5d3f1<_0x3c756f[_0x1c9f('0x46')];_0xb5d3f1+=0x1){_0x3ad211=_0x3c756f[_0xb5d3f1]['toString']();logger[_0x1c9f('0x34')](_0x1c9f('0x49'),_0x3ad211);if(_0x2bb95d){logger[_0x1c9f('0x34')](_0x1c9f('0x4a'),_0x2bb95d);logger[_0x1c9f('0x34')](JSON[_0x1c9f('0x29')](_0x1a6868[_0x3ad211]));BPromise[_0x1c9f('0x4b')]()['then'](handleJob(_0x1a6868[_0x3ad211]));logger[_0x1c9f('0x34')]('run\x20job',_0x1a6868[_0x3ad211][_0x1c9f('0x16')],_0x1a6868[_0x3ad211][_0x1c9f('0x4c')]);}else if(_0x1a6868[_0x3ad211]['cron']&&_0x1a6868[_0x3ad211][_0x1c9f('0x4d')]&&moment()[_0x1c9f('0x4e')](_0x1a6868[_0x3ad211][_0x1c9f('0x4f')],_0x1a6868[_0x3ad211][_0x1c9f('0x50')])){manager[_0x1c9f('0x51')](_0x3ad211,_0x1a6868[_0x3ad211][_0x1c9f('0x4c')],handleJob(_0x1a6868[_0x3ad211]));manager['start'](_0x3ad211);logger[_0x1c9f('0x34')](_0x1c9f('0x52'),_0x1a6868[_0x3ad211][_0x1c9f('0x16')],_0x1a6868[_0x3ad211]['cron']);}else if(manager['exists'](_0x3ad211)){manager[_0x1c9f('0x53')](_0x3ad211);manager[_0x1c9f('0x54')](_0x3ad211);logger['info'](_0x1c9f('0x55'),_0x1a6868[_0x3ad211][_0x1c9f('0x16')],_0x1a6868[_0x3ad211][_0x1c9f('0x4c')]);}}for(_0xb5d3f1=0x0,_0x3ad211;_0xb5d3f1<_0x289c7d[_0x1c9f('0x46')]&&!_0x2bb95d;_0xb5d3f1+=0x1){_0x3ad211=_0x289c7d[_0xb5d3f1]['toString']();if(manager[_0x1c9f('0x47')](_0x3ad211)){if(_0x1a6868[_0x3ad211][_0x1c9f('0x4c')]&&_0x1a6868[_0x3ad211][_0x1c9f('0x4d')]&&moment()[_0x1c9f('0x4e')](_0x1a6868[_0x3ad211][_0x1c9f('0x4f')],_0x1a6868[_0x3ad211][_0x1c9f('0x50')])){manager[_0x1c9f('0x56')](_0x3ad211,_0x1a6868[_0x3ad211]['cron'],handleJob(_0x1a6868[_0x3ad211]));logger['info'](_0x1c9f('0x57'),_0x1a6868[_0x3ad211][_0x1c9f('0x16')],_0x1a6868[_0x3ad211][_0x1c9f('0x4c')]);}else{manager[_0x1c9f('0x53')](_0x3ad211);manager['deleteJob'](_0x3ad211);logger['info']('stop\x20cron',_0x1a6868[_0x3ad211]['name'],_0x1a6868[_0x3ad211][_0x1c9f('0x4c')]);}}}})['catch'](function(_0x166336){logger[_0x1c9f('0x30')](JSON[_0x1c9f('0x29')](_0x166336));});}exports[_0x1c9f('0x58')]=function(_0x2fa0b9){return getJobs(_0x2fa0b9);};exports[_0x1c9f('0x59')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};