a3bb6544e761b94af4dc552a504a86e74d803cd5
[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 _0x8ade=['schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','%s.%s','basename','savename','extname','zip','join','existsSync','Sent','message','attachments','text','stringify','status','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\x20mail','email\x20sent','catch','error','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','map','length','toString','deleteJob','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','add','start','add\x20cron','exists','stop','stop\x20cron','update','update\x20cron','run','path','lodash','moment','cron-job-manager','jayson/promise','../logger'];(function(_0x59d369,_0x56a533){var _0x58c3eb=function(_0x2acb03){while(--_0x2acb03){_0x59d369['push'](_0x59d369['shift']());}};_0x58c3eb(++_0x56a533);}(_0x8ade,0x1a8));var _0xe8ad=function(_0x268e10,_0x264870){_0x268e10=_0x268e10-0x0;var _0x3fb95d=_0x8ade[_0x268e10];return _0x3fb95d;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xe8ad('0x0'));var _=require(_0xe8ad('0x1'));var moment=require(_0xe8ad('0x2'));var CronJobManager=require(_0xe8ad('0x3'));var jayson=require(_0xe8ad('0x4'));var BPromise=require('bluebird');var logger=require(_0xe8ad('0x5'))(_0xe8ad('0x6'));var db=require(_0xe8ad('0x7'))['db'];var analyticCustomReportController=require(_0xe8ad('0x8'));var analyticDefaultReportController=require(_0xe8ad('0x9'));var client=jayson['client'][_0xe8ad('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x88ace4,_0x3011db){return function(){logger['info'](_0xe8ad('0xb'),_0x88ace4[_0xe8ad('0xc')]);var _0x1c8dfe=!![];var _0x35633c=_0x88ace4[_0xe8ad('0xd')][_0xe8ad('0xe')]();var _0x583027={'account':_0x35633c,'message':{'from':util[_0xe8ad('0xf')](_0xe8ad('0x10'),_0x88ace4['MailAccount']['name'],_0x88ace4[_0xe8ad('0xd')][_0xe8ad('0xc')]||_0x88ace4[_0xe8ad('0xd')]['Smtp'][_0xe8ad('0x11')]),'to':_0x88ace4['email'],'cc':_0x88ace4['cc'],'bcc':_0x88ace4[_0xe8ad('0x12')],'subject':util['format'](_0xe8ad('0x13'),_0x3011db[_0xe8ad('0x14')],_0x88ace4[_0xe8ad('0x15')],_0x88ace4['subtractUnit'])}};var _0x2a4fb8=path['join'](__dirname,'../../files/reports');var _0x2678e4=_0x3011db['savename'];var _0x11c414=util[_0xe8ad('0xf')](_0xe8ad('0x16'),path[_0xe8ad('0x17')](_0x3011db[_0xe8ad('0x18')],path[_0xe8ad('0x19')](_0x3011db[_0xe8ad('0x18')])),_0xe8ad('0x1a'));var _0xa38b29=path[_0xe8ad('0x1b')](_0x2a4fb8,_0x2678e4);var _0x171e59=path[_0xe8ad('0x1b')](_0x2a4fb8,_0x11c414);if(fs[_0xe8ad('0x1c')](_0xa38b29)){_0x3011db['status']=_0xe8ad('0x1d');_0x583027[_0xe8ad('0x1e')][_0xe8ad('0x1f')]=[{'filename':_0x2678e4,'path':_0xa38b29}];_0x583027[_0xe8ad('0x1e')][_0xe8ad('0x20')]=util[_0xe8ad('0xf')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xe8ad('0x21')](_0x3011db,null,0x2));}else if(fs[_0xe8ad('0x1c')](_0x171e59)){_0x3011db[_0xe8ad('0x22')]=_0xe8ad('0x1d');_0x583027[_0xe8ad('0x1e')][_0xe8ad('0x1f')]=[{'filename':_0x11c414,'path':_0x171e59}];}else{_0x583027[_0xe8ad('0x1e')][_0xe8ad('0x20')]=_0xe8ad('0x23');if(!_0x88ace4['sendIfEmpty']){_0x1c8dfe=![];logger[_0xe8ad('0x24')](_0xe8ad('0x25'));}}if(_0x1c8dfe){return client[_0xe8ad('0x26')](_0xe8ad('0x27'),_0x583027)[_0xe8ad('0x28')](function(_0x4f1017){if(_0x4f1017['error']){return logger['error'](_0xe8ad('0x29'),JSON[_0xe8ad('0x21')](_0x4f1017));}return logger[_0xe8ad('0x24')](_0xe8ad('0x2a'));})[_0xe8ad('0x2b')](function(_0x286cb0){return logger[_0xe8ad('0x2c')](_0xe8ad('0x29'),JSON['stringify'](_0x286cb0));});}};}function handleError(){return function(_0x566eb8){return logger[_0xe8ad('0x2c')](JSON[_0xe8ad('0x21')](_0x566eb8));};}function handleResult(_0x2ea636){return function(_0x42bcb1){logger['info'](_0xe8ad('0x2d'),JSON[_0xe8ad('0x21')](_0x42bcb1));if(_0x2ea636[_0xe8ad('0xd')]&&_0x2ea636[_0xe8ad('0xd')][_0xe8ad('0x2e')]&&!_[_0xe8ad('0x2f')](_0x2ea636[_0xe8ad('0xc')])){setTimeout(handleSendEmail(_0x2ea636,_0x42bcb1),0x3c*0x3e8);}};}function handleJob(_0x119825){return function(){try{if(_[_0xe8ad('0x2f')](_0x119825['subtractNumber'])){return logger[_0xe8ad('0x24')](_0xe8ad('0x30'));}if(_[_0xe8ad('0x2f')](_0x119825[_0xe8ad('0x31')])){return logger[_0xe8ad('0x24')](_0xe8ad('0x32'));}var _0x2307a3={'startDate':moment()[_0xe8ad('0x33')](_0x119825['subtractNumber'],_0x119825[_0xe8ad('0x31')])['format'](_0xe8ad('0x34')),'endDate':moment()[_0xe8ad('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x119825[_0xe8ad('0x35')],'name':_0x119825['name']};if(!_[_0xe8ad('0x2f')](_0x119825[_0xe8ad('0x36')])){logger['info'](_0xe8ad('0x37'),_0x119825['DefaultReportId']);return analyticDefaultReportController[_0xe8ad('0x38')]({'id':_0x119825[_0xe8ad('0x36')]},_0x2307a3)[_0xe8ad('0x28')](handleResult(_0x119825))[_0xe8ad('0x2b')](handleError());}if(!_[_0xe8ad('0x2f')](_0x119825['CustomReportId'])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x119825['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x119825[_0xe8ad('0x39')]},_0x2307a3)[_0xe8ad('0x28')](handleResult(_0x119825))[_0xe8ad('0x2b')](handleError());}}catch(_0x1d2cd0){logger[_0xe8ad('0x2c')](JSON[_0xe8ad('0x21')](_0x1d2cd0));}return logger[_0xe8ad('0x24')](_0xe8ad('0x3a'));};}function getJobs(_0x2da84c){var _0x1047a4={};if(_0x2da84c){_0x1047a4['id']=_0x2da84c;}return db[_0xe8ad('0x3b')][_0xe8ad('0x3c')]({'where':_0x1047a4,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0xe8ad('0xc')],'include':[{'model':db[_0xe8ad('0x3d')],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0xe8ad('0x3e')}]}]}]})['then'](function(_0x1e0ca3){var _0x366227=_['keys'](manager[_0xe8ad('0x3f')]);var _0x5eb5fd=_[_0xe8ad('0x40')](_0x1e0ca3,function(_0x23a486){return _0x23a486['id']['toString']();});var _0x388fbc=_['keyBy'](_0x1e0ca3,function(_0x4dfdda){return _0x4dfdda['id']['toString']();});var _0x141aa1=_0x2da84c?_0x5eb5fd:_['difference'](_0x5eb5fd,_0x366227);var _0xb504a=_['intersection'](_0x5eb5fd,_0x366227);var _0x17ff32=_['difference'](_0x366227,_0x5eb5fd);var _0x2046c0;var _0xb8bf55;for(_0x2046c0=0x0;_0x2046c0<_0x17ff32[_0xe8ad('0x41')]&&!_0x2da84c;_0x2046c0+=0x1){_0xb8bf55=_0x17ff32[_0x2046c0][_0xe8ad('0x42')]();if(manager['exists'](_0xb8bf55)){manager['stop'](_0xb8bf55);manager[_0xe8ad('0x43')](_0xb8bf55);logger[_0xe8ad('0x24')]('delete\x20cron',_0xb8bf55);}}logger[_0xe8ad('0x24')](_0xe8ad('0x44'),JSON[_0xe8ad('0x21')](_0x141aa1));for(_0x2046c0=0x0;_0x2046c0<_0x141aa1[_0xe8ad('0x41')];_0x2046c0+=0x1){_0xb8bf55=_0x141aa1[_0x2046c0]['toString']();logger[_0xe8ad('0x24')](_0xe8ad('0x45'),_0xb8bf55);if(_0x2da84c){logger[_0xe8ad('0x24')](_0xe8ad('0x46'),_0x2da84c);logger[_0xe8ad('0x24')](JSON[_0xe8ad('0x21')](_0x388fbc[_0xb8bf55]));BPromise[_0xe8ad('0x47')]()[_0xe8ad('0x28')](handleJob(_0x388fbc[_0xb8bf55]));logger[_0xe8ad('0x24')](_0xe8ad('0x48'),_0x388fbc[_0xb8bf55][_0xe8ad('0x14')],_0x388fbc[_0xb8bf55][_0xe8ad('0x49')]);}else if(_0x388fbc[_0xb8bf55][_0xe8ad('0x49')]&&_0x388fbc[_0xb8bf55][_0xe8ad('0x4a')]&&moment()[_0xe8ad('0x4b')](_0x388fbc[_0xb8bf55][_0xe8ad('0x4c')],_0x388fbc[_0xb8bf55]['endAt'])){manager[_0xe8ad('0x4d')](_0xb8bf55,_0x388fbc[_0xb8bf55][_0xe8ad('0x49')],handleJob(_0x388fbc[_0xb8bf55]));manager[_0xe8ad('0x4e')](_0xb8bf55);logger[_0xe8ad('0x24')](_0xe8ad('0x4f'),_0x388fbc[_0xb8bf55][_0xe8ad('0x14')],_0x388fbc[_0xb8bf55][_0xe8ad('0x49')]);}else if(manager[_0xe8ad('0x50')](_0xb8bf55)){manager[_0xe8ad('0x51')](_0xb8bf55);manager[_0xe8ad('0x43')](_0xb8bf55);logger[_0xe8ad('0x24')](_0xe8ad('0x52'),_0x388fbc[_0xb8bf55][_0xe8ad('0x14')],_0x388fbc[_0xb8bf55]['cron']);}}for(_0x2046c0=0x0,_0xb8bf55;_0x2046c0<_0xb504a[_0xe8ad('0x41')]&&!_0x2da84c;_0x2046c0+=0x1){_0xb8bf55=_0xb504a[_0x2046c0][_0xe8ad('0x42')]();if(manager[_0xe8ad('0x50')](_0xb8bf55)){if(_0x388fbc[_0xb8bf55]['cron']&&_0x388fbc[_0xb8bf55][_0xe8ad('0x4a')]&&moment()['isBetween'](_0x388fbc[_0xb8bf55][_0xe8ad('0x4c')],_0x388fbc[_0xb8bf55]['endAt'])){manager[_0xe8ad('0x53')](_0xb8bf55,_0x388fbc[_0xb8bf55][_0xe8ad('0x49')],handleJob(_0x388fbc[_0xb8bf55]));logger['info'](_0xe8ad('0x54'),_0x388fbc[_0xb8bf55][_0xe8ad('0x14')],_0x388fbc[_0xb8bf55][_0xe8ad('0x49')]);}else{manager['stop'](_0xb8bf55);manager[_0xe8ad('0x43')](_0xb8bf55);logger[_0xe8ad('0x24')](_0xe8ad('0x52'),_0x388fbc[_0xb8bf55]['name'],_0x388fbc[_0xb8bf55][_0xe8ad('0x49')]);}}}})[_0xe8ad('0x2b')](function(_0x8b844a){logger[_0xe8ad('0x2c')](JSON[_0xe8ad('0x21')](_0x8b844a));});}exports[_0xe8ad('0x55')]=function(_0x44b0fc){return getJobs(_0x44b0fc);};exports[_0xe8ad('0x4e')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};