Built motion from commit bab6f49e.|2.6.17
[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 _0x9831=['../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','user','bcc','subtractNumber','join','../../files/reports','savename','%s.%s','basename','zip','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','attachments','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','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','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','Smtp','CloudProvider','keys','map','toString','keyBy','difference','intersection','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','start','exists','stop','stop\x20cron','startAt','update','run','util','path','lodash','moment','cron-job-manager','bluebird','../logger','schedule','../../mysqldb'];(function(_0x1d7c83,_0x2d8f2d){var _0x283ef2=function(_0x68da53){while(--_0x68da53){_0x1d7c83['push'](_0x1d7c83['shift']());}};_0x283ef2(++_0x2d8f2d);}(_0x9831,0xfc));var _0x1983=function(_0x511c54,_0x43e114){_0x511c54=_0x511c54-0x0;var _0x13b156=_0x9831[_0x511c54];return _0x13b156;};'use strict';var fs=require('fs');var util=require(_0x1983('0x0'));var path=require(_0x1983('0x1'));var _=require(_0x1983('0x2'));var moment=require(_0x1983('0x3'));var CronJobManager=require(_0x1983('0x4'));var jayson=require('jayson/promise');var BPromise=require(_0x1983('0x5'));var logger=require(_0x1983('0x6'))(_0x1983('0x7'));var db=require(_0x1983('0x8'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x1983('0x9'));var client=jayson[_0x1983('0xa')][_0x1983('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1e2428,_0x2a22b){return function(){logger[_0x1983('0xc')](_0x1983('0xd'),_0x1e2428[_0x1983('0xe')]);var _0x5862a4=!![];var _0x38738b=_0x1e2428[_0x1983('0xf')][_0x1983('0x10')]();var _0x37db0d={'account':_0x38738b,'message':{'from':util[_0x1983('0x11')](_0x1983('0x12'),_0x1e2428[_0x1983('0xf')][_0x1983('0x13')],_0x1e2428[_0x1983('0xf')]['email']||_0x1e2428['MailAccount']['Smtp'][_0x1983('0x14')]),'to':_0x1e2428['email'],'cc':_0x1e2428['cc'],'bcc':_0x1e2428[_0x1983('0x15')],'subject':util[_0x1983('0x11')]('Report\x20%s\x20last\x20%s\x20%s',_0x2a22b['name'],_0x1e2428[_0x1983('0x16')],_0x1e2428['subtractUnit'])}};var _0x4ccb94=path[_0x1983('0x17')](__dirname,_0x1983('0x18'));var _0x193978=_0x2a22b[_0x1983('0x19')];var _0x3226ae=util[_0x1983('0x11')](_0x1983('0x1a'),path[_0x1983('0x1b')](_0x2a22b[_0x1983('0x19')],path['extname'](_0x2a22b['savename'])),_0x1983('0x1c'));var _0x2eda45=path[_0x1983('0x17')](_0x4ccb94,_0x193978);var _0x156d42=path['join'](_0x4ccb94,_0x3226ae);if(fs['existsSync'](_0x2eda45)){_0x2a22b['status']=_0x1983('0x1d');_0x37db0d[_0x1983('0x1e')]['attachments']=[{'filename':_0x193978,'path':_0x2eda45}];_0x37db0d[_0x1983('0x1e')][_0x1983('0x1f')]=util[_0x1983('0x11')](_0x1983('0x20'),JSON[_0x1983('0x21')](_0x2a22b,null,0x2));}else if(fs['existsSync'](_0x156d42)){_0x2a22b['status']=_0x1983('0x1d');_0x37db0d[_0x1983('0x1e')][_0x1983('0x22')]=[{'filename':_0x3226ae,'path':_0x156d42}];}else{_0x37db0d['message'][_0x1983('0x1f')]=_0x1983('0x23');if(!_0x1e2428[_0x1983('0x24')]){_0x5862a4=![];logger[_0x1983('0xc')](_0x1983('0x25'));}}if(_0x5862a4){return client[_0x1983('0x26')](_0x1983('0x27'),_0x37db0d)[_0x1983('0x28')](function(_0x560d39){if(_0x560d39['error']){return logger[_0x1983('0x29')](_0x1983('0x2a'),JSON[_0x1983('0x21')](_0x560d39));}return logger[_0x1983('0xc')]('email\x20sent');})['catch'](function(_0x141a85){return logger[_0x1983('0x29')](_0x1983('0x2a'),JSON['stringify'](_0x141a85));});}};}function handleError(){return function(_0x1465ad){return logger[_0x1983('0x29')](JSON[_0x1983('0x21')](_0x1465ad));};}function handleResult(_0x81527){return function(_0x23a65e){logger[_0x1983('0xc')](_0x1983('0x2b'),JSON[_0x1983('0x21')](_0x23a65e));if(_0x81527['MailAccount']&&_0x81527[_0x1983('0xf')]['Smtp']&&!_[_0x1983('0x2c')](_0x81527[_0x1983('0xe')])){setTimeout(handleSendEmail(_0x81527,_0x23a65e),0x3c*0x3e8);}};}function handleJob(_0x169f60){return function(){try{if(_['isNil'](_0x169f60[_0x1983('0x16')])){return logger[_0x1983('0xc')](_0x1983('0x2d'));}if(_[_0x1983('0x2c')](_0x169f60[_0x1983('0x2e')])){return logger[_0x1983('0xc')](_0x1983('0x2f'));}var _0x19084d={'startDate':moment()['subtract'](_0x169f60['subtractNumber'],_0x169f60[_0x1983('0x2e')])['format'](_0x1983('0x30')),'endDate':moment()['format'](_0x1983('0x30')),'type':_0x1983('0x31'),'output':_0x169f60[_0x1983('0x32')],'name':_0x169f60[_0x1983('0x13')]};if(!_[_0x1983('0x2c')](_0x169f60[_0x1983('0x33')])){logger[_0x1983('0xc')](_0x1983('0x34'),_0x169f60[_0x1983('0x33')]);return analyticDefaultReportController[_0x1983('0x35')]({'id':_0x169f60[_0x1983('0x33')]},_0x19084d)['then'](handleResult(_0x169f60))[_0x1983('0x36')](handleError());}if(!_['isNil'](_0x169f60[_0x1983('0x37')])){logger[_0x1983('0xc')](_0x1983('0x38'),_0x169f60[_0x1983('0x37')]);return analyticCustomReportController[_0x1983('0x35')]({'id':_0x169f60[_0x1983('0x37')]},_0x19084d)[_0x1983('0x28')](handleResult(_0x169f60))[_0x1983('0x36')](handleError());}}catch(_0x39d3af){logger[_0x1983('0x29')](JSON[_0x1983('0x21')](_0x39d3af));}return logger[_0x1983('0xc')](_0x1983('0x39'));};}function getJobs(_0x3c389f){var _0x51ffeb={};if(_0x3c389f){_0x51ffeb['id']=_0x3c389f;}return db[_0x1983('0x3a')][_0x1983('0x3b')]({'where':_0x51ffeb,'include':[{'model':db['MailAccount'],'attributes':['id',_0x1983('0x13'),_0x1983('0xe')],'include':[{'model':db[_0x1983('0x3c')],'as':_0x1983('0x3d'),'include':[{'model':db[_0x1983('0x3e')],'as':_0x1983('0x3e')}]}]}]})[_0x1983('0x28')](function(_0x2609fa){var _0x1d0bc8=_[_0x1983('0x3f')](manager['jobs']);var _0xa8db82=_[_0x1983('0x40')](_0x2609fa,function(_0x438bde){return _0x438bde['id'][_0x1983('0x41')]();});var _0x4c24cd=_[_0x1983('0x42')](_0x2609fa,function(_0x5a2a69){return _0x5a2a69['id']['toString']();});var _0xb12073=_0x3c389f?_0xa8db82:_[_0x1983('0x43')](_0xa8db82,_0x1d0bc8);var _0x4ccf4d=_[_0x1983('0x44')](_0xa8db82,_0x1d0bc8);var _0x2b2cfb=_['difference'](_0x1d0bc8,_0xa8db82);var _0x22fb83;var _0x498ec5;for(_0x22fb83=0x0;_0x22fb83<_0x2b2cfb['length']&&!_0x3c389f;_0x22fb83+=0x1){_0x498ec5=_0x2b2cfb[_0x22fb83]['toString']();if(manager['exists'](_0x498ec5)){manager['stop'](_0x498ec5);manager[_0x1983('0x45')](_0x498ec5);logger[_0x1983('0xc')](_0x1983('0x46'),_0x498ec5);}}logger['info'](_0x1983('0x47'),JSON[_0x1983('0x21')](_0xb12073));for(_0x22fb83=0x0;_0x22fb83<_0xb12073['length'];_0x22fb83+=0x1){_0x498ec5=_0xb12073[_0x22fb83][_0x1983('0x41')]();logger[_0x1983('0xc')]('index',_0x498ec5);if(_0x3c389f){logger['info'](_0x1983('0x48'),_0x3c389f);logger[_0x1983('0xc')](JSON[_0x1983('0x21')](_0x4c24cd[_0x498ec5]));BPromise[_0x1983('0x49')]()[_0x1983('0x28')](handleJob(_0x4c24cd[_0x498ec5]));logger[_0x1983('0xc')](_0x1983('0x4a'),_0x4c24cd[_0x498ec5]['name'],_0x4c24cd[_0x498ec5][_0x1983('0x4b')]);}else if(_0x4c24cd[_0x498ec5][_0x1983('0x4b')]&&_0x4c24cd[_0x498ec5][_0x1983('0x4c')]&&moment()[_0x1983('0x4d')](_0x4c24cd[_0x498ec5]['startAt'],_0x4c24cd[_0x498ec5][_0x1983('0x4e')])){manager[_0x1983('0x4f')](_0x498ec5,_0x4c24cd[_0x498ec5][_0x1983('0x4b')],handleJob(_0x4c24cd[_0x498ec5]));manager[_0x1983('0x50')](_0x498ec5);logger[_0x1983('0xc')]('add\x20cron',_0x4c24cd[_0x498ec5][_0x1983('0x13')],_0x4c24cd[_0x498ec5][_0x1983('0x4b')]);}else if(manager[_0x1983('0x51')](_0x498ec5)){manager[_0x1983('0x52')](_0x498ec5);manager['deleteJob'](_0x498ec5);logger[_0x1983('0xc')](_0x1983('0x53'),_0x4c24cd[_0x498ec5][_0x1983('0x13')],_0x4c24cd[_0x498ec5][_0x1983('0x4b')]);}}for(_0x22fb83=0x0,_0x498ec5;_0x22fb83<_0x4ccf4d['length']&&!_0x3c389f;_0x22fb83+=0x1){_0x498ec5=_0x4ccf4d[_0x22fb83][_0x1983('0x41')]();if(manager['exists'](_0x498ec5)){if(_0x4c24cd[_0x498ec5]['cron']&&_0x4c24cd[_0x498ec5]['active']&&moment()['isBetween'](_0x4c24cd[_0x498ec5][_0x1983('0x54')],_0x4c24cd[_0x498ec5][_0x1983('0x4e')])){manager[_0x1983('0x55')](_0x498ec5,_0x4c24cd[_0x498ec5]['cron'],handleJob(_0x4c24cd[_0x498ec5]));logger['info']('update\x20cron',_0x4c24cd[_0x498ec5][_0x1983('0x13')],_0x4c24cd[_0x498ec5]['cron']);}else{manager[_0x1983('0x52')](_0x498ec5);manager[_0x1983('0x45')](_0x498ec5);logger[_0x1983('0xc')](_0x1983('0x53'),_0x4c24cd[_0x498ec5]['name'],_0x4c24cd[_0x498ec5][_0x1983('0x4b')]);}}}})[_0x1983('0x36')](function(_0x5a7435){logger[_0x1983('0x29')](JSON['stringify'](_0x5a7435));});}exports[_0x1983('0x56')]=function(_0x194a72){return getJobs(_0x194a72);};exports[_0x1983('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};