Built motion from commit 1fa89557.|2.6.10
[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 _0x3936=['savename','%s.%s','basename','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','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','runReport','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','map','toString','difference','intersection','length','stop','deleteJob','toRun','index','my\x20id','cron','isBetween','startAt','endAt','add\x20cron','exists','update\x20cron','stop\x20cron','run','start','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','format','\x22%s\x22\x20<%s>','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports'];(function(_0x535d2e,_0x5392e1){var _0x1bdca5=function(_0x920f8b){while(--_0x920f8b){_0x535d2e['push'](_0x535d2e['shift']());}};_0x1bdca5(++_0x5392e1);}(_0x3936,0x8c));var _0x6393=function(_0xa3d9a7,_0x1cf219){_0xa3d9a7=_0xa3d9a7-0x0;var _0x48080a=_0x3936[_0xa3d9a7];return _0x48080a;};'use strict';var fs=require('fs');var util=require(_0x6393('0x0'));var path=require(_0x6393('0x1'));var _=require(_0x6393('0x2'));var moment=require(_0x6393('0x3'));var CronJobManager=require(_0x6393('0x4'));var jayson=require(_0x6393('0x5'));var BPromise=require(_0x6393('0x6'));var logger=require('../logger')(_0x6393('0x7'));var db=require(_0x6393('0x8'))['db'];var analyticCustomReportController=require(_0x6393('0x9'));var analyticDefaultReportController=require(_0x6393('0xa'));var client=jayson[_0x6393('0xb')][_0x6393('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x404ed2,_0x33073b){return function(){logger[_0x6393('0xd')](_0x6393('0xe'),_0x404ed2[_0x6393('0xf')]);var _0x396e01=!![];var _0x6829a1=_0x404ed2[_0x6393('0x10')]['getSmtpOptions']();var _0x50a8e3={'account':_0x6829a1,'message':{'from':util[_0x6393('0x11')](_0x6393('0x12'),_0x404ed2[_0x6393('0x10')][_0x6393('0x13')],_0x404ed2[_0x6393('0x10')][_0x6393('0xf')]||_0x404ed2['MailAccount'][_0x6393('0x14')][_0x6393('0x15')]),'to':_0x404ed2[_0x6393('0xf')],'cc':_0x404ed2['cc'],'bcc':_0x404ed2[_0x6393('0x16')],'subject':util[_0x6393('0x11')](_0x6393('0x17'),_0x33073b['name'],_0x404ed2[_0x6393('0x18')],_0x404ed2[_0x6393('0x19')])}};var _0xcb9881=path[_0x6393('0x1a')](__dirname,_0x6393('0x1b'));var _0x15e0da=_0x33073b[_0x6393('0x1c')];var _0x754c48=util['format'](_0x6393('0x1d'),path[_0x6393('0x1e')](_0x33073b[_0x6393('0x1c')],path['extname'](_0x33073b[_0x6393('0x1c')])),_0x6393('0x1f'));var _0x3a49eb=path['join'](_0xcb9881,_0x15e0da);var _0x396f68=path[_0x6393('0x1a')](_0xcb9881,_0x754c48);if(fs[_0x6393('0x20')](_0x3a49eb)){_0x33073b['status']=_0x6393('0x21');_0x50a8e3[_0x6393('0x22')][_0x6393('0x23')]=[{'filename':_0x15e0da,'path':_0x3a49eb}];_0x50a8e3[_0x6393('0x22')][_0x6393('0x24')]=util[_0x6393('0x11')](_0x6393('0x25'),JSON[_0x6393('0x26')](_0x33073b,null,0x2));}else if(fs[_0x6393('0x20')](_0x396f68)){_0x33073b['status']=_0x6393('0x21');_0x50a8e3[_0x6393('0x22')][_0x6393('0x23')]=[{'filename':_0x754c48,'path':_0x396f68}];}else{_0x50a8e3[_0x6393('0x22')][_0x6393('0x24')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x404ed2['sendIfEmpty']){_0x396e01=![];logger[_0x6393('0xd')](_0x6393('0x27'));}}if(_0x396e01){return client[_0x6393('0x28')](_0x6393('0x29'),_0x50a8e3)[_0x6393('0x2a')](function(_0xabdf35){if(_0xabdf35[_0x6393('0x2b')]){return logger[_0x6393('0x2b')](_0x6393('0x2c'),JSON[_0x6393('0x26')](_0xabdf35));}return logger[_0x6393('0xd')]('email\x20sent');})['catch'](function(_0x8aae96){return logger['error']('error\x20mail',JSON[_0x6393('0x26')](_0x8aae96));});}};}function handleError(){return function(_0xc2ccf8){return logger['error'](JSON[_0x6393('0x26')](_0xc2ccf8));};}function handleResult(_0x2555b0){return function(_0x377d83){logger[_0x6393('0xd')](_0x6393('0x2d'),JSON['stringify'](_0x377d83));if(_0x2555b0[_0x6393('0x10')]&&_0x2555b0['MailAccount'][_0x6393('0x14')]&&!_[_0x6393('0x2e')](_0x2555b0[_0x6393('0xf')])){setTimeout(handleSendEmail(_0x2555b0,_0x377d83),0x3c*0x3e8);}};}function handleJob(_0x4c9680){return function(){try{if(_['isNil'](_0x4c9680[_0x6393('0x18')])){return logger['info'](_0x6393('0x2f'));}if(_[_0x6393('0x2e')](_0x4c9680[_0x6393('0x19')])){return logger[_0x6393('0xd')](_0x6393('0x30'));}var _0x3649e9={'startDate':moment()[_0x6393('0x31')](_0x4c9680[_0x6393('0x18')],_0x4c9680['subtractUnit'])[_0x6393('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x6393('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x6393('0x32'),'output':_0x4c9680[_0x6393('0x33')],'name':_0x4c9680[_0x6393('0x13')]};if(!_[_0x6393('0x2e')](_0x4c9680[_0x6393('0x34')])){logger[_0x6393('0xd')](_0x6393('0x35'),_0x4c9680['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x4c9680[_0x6393('0x34')]},_0x3649e9)['then'](handleResult(_0x4c9680))[_0x6393('0x36')](handleError());}if(!_['isNil'](_0x4c9680['CustomReportId'])){logger['info'](_0x6393('0x37'),_0x4c9680[_0x6393('0x38')]);return analyticCustomReportController[_0x6393('0x39')]({'id':_0x4c9680['CustomReportId']},_0x3649e9)[_0x6393('0x2a')](handleResult(_0x4c9680))[_0x6393('0x36')](handleError());}}catch(_0x4b2b59){logger[_0x6393('0x2b')](JSON[_0x6393('0x26')](_0x4b2b59));}return logger[_0x6393('0xd')](_0x6393('0x3a'));};}function getJobs(_0x1f5208){var _0x51fdf7={};if(_0x1f5208){_0x51fdf7['id']=_0x1f5208;}return db[_0x6393('0x3b')][_0x6393('0x3c')]({'where':_0x51fdf7,'include':[{'model':db[_0x6393('0x10')],'attributes':['id',_0x6393('0x13'),_0x6393('0xf')],'include':[{'model':db[_0x6393('0x3d')],'as':_0x6393('0x14'),'include':[{'model':db[_0x6393('0x3e')],'as':'CloudProvider'}]}]}]})['then'](function(_0x54fa7d){var _0x5d3195=_[_0x6393('0x3f')](manager['jobs']);var _0x5269da=_[_0x6393('0x40')](_0x54fa7d,function(_0x3ed1ba){return _0x3ed1ba['id'][_0x6393('0x41')]();});var _0xd7c55d=_['keyBy'](_0x54fa7d,function(_0x11d377){return _0x11d377['id'][_0x6393('0x41')]();});var _0x1d1e26=_0x1f5208?_0x5269da:_[_0x6393('0x42')](_0x5269da,_0x5d3195);var _0x4c7e93=_[_0x6393('0x43')](_0x5269da,_0x5d3195);var _0x1e8fe6=_[_0x6393('0x42')](_0x5d3195,_0x5269da);var _0x2cfc92;var _0x1c6879;for(_0x2cfc92=0x0;_0x2cfc92<_0x1e8fe6[_0x6393('0x44')]&&!_0x1f5208;_0x2cfc92+=0x1){_0x1c6879=_0x1e8fe6[_0x2cfc92][_0x6393('0x41')]();if(manager['exists'](_0x1c6879)){manager[_0x6393('0x45')](_0x1c6879);manager[_0x6393('0x46')](_0x1c6879);logger[_0x6393('0xd')]('delete\x20cron',_0x1c6879);}}logger[_0x6393('0xd')](_0x6393('0x47'),JSON['stringify'](_0x1d1e26));for(_0x2cfc92=0x0;_0x2cfc92<_0x1d1e26[_0x6393('0x44')];_0x2cfc92+=0x1){_0x1c6879=_0x1d1e26[_0x2cfc92][_0x6393('0x41')]();logger[_0x6393('0xd')](_0x6393('0x48'),_0x1c6879);if(_0x1f5208){logger[_0x6393('0xd')](_0x6393('0x49'),_0x1f5208);logger[_0x6393('0xd')](JSON[_0x6393('0x26')](_0xd7c55d[_0x1c6879]));BPromise['resolve']()['then'](handleJob(_0xd7c55d[_0x1c6879]));logger[_0x6393('0xd')]('run\x20job',_0xd7c55d[_0x1c6879][_0x6393('0x13')],_0xd7c55d[_0x1c6879]['cron']);}else if(_0xd7c55d[_0x1c6879][_0x6393('0x4a')]&&_0xd7c55d[_0x1c6879]['active']&&moment()[_0x6393('0x4b')](_0xd7c55d[_0x1c6879][_0x6393('0x4c')],_0xd7c55d[_0x1c6879][_0x6393('0x4d')])){manager['add'](_0x1c6879,_0xd7c55d[_0x1c6879][_0x6393('0x4a')],handleJob(_0xd7c55d[_0x1c6879]));manager['start'](_0x1c6879);logger['info'](_0x6393('0x4e'),_0xd7c55d[_0x1c6879][_0x6393('0x13')],_0xd7c55d[_0x1c6879][_0x6393('0x4a')]);}else if(manager[_0x6393('0x4f')](_0x1c6879)){manager['stop'](_0x1c6879);manager[_0x6393('0x46')](_0x1c6879);logger[_0x6393('0xd')]('stop\x20cron',_0xd7c55d[_0x1c6879][_0x6393('0x13')],_0xd7c55d[_0x1c6879][_0x6393('0x4a')]);}}for(_0x2cfc92=0x0,_0x1c6879;_0x2cfc92<_0x4c7e93[_0x6393('0x44')]&&!_0x1f5208;_0x2cfc92+=0x1){_0x1c6879=_0x4c7e93[_0x2cfc92][_0x6393('0x41')]();if(manager['exists'](_0x1c6879)){if(_0xd7c55d[_0x1c6879]['cron']&&_0xd7c55d[_0x1c6879]['active']&&moment()['isBetween'](_0xd7c55d[_0x1c6879][_0x6393('0x4c')],_0xd7c55d[_0x1c6879]['endAt'])){manager['update'](_0x1c6879,_0xd7c55d[_0x1c6879][_0x6393('0x4a')],handleJob(_0xd7c55d[_0x1c6879]));logger[_0x6393('0xd')](_0x6393('0x50'),_0xd7c55d[_0x1c6879][_0x6393('0x13')],_0xd7c55d[_0x1c6879]['cron']);}else{manager['stop'](_0x1c6879);manager[_0x6393('0x46')](_0x1c6879);logger['info'](_0x6393('0x51'),_0xd7c55d[_0x1c6879][_0x6393('0x13')],_0xd7c55d[_0x1c6879][_0x6393('0x4a')]);}}}})['catch'](function(_0x1c898a){logger[_0x6393('0x2b')](JSON[_0x6393('0x26')](_0x1c898a));});}exports[_0x6393('0x52')]=function(_0x1912cb){return getJobs(_0x1912cb);};exports[_0x6393('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};