Built motion from commit 85328c08.|2.5.50
[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 _0x569b=['subtractNumber\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','isNil','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','MailServerOut','CloudProvider','keys','jobs','map','keyBy','difference','intersection','length','toString','exists','deleteJob','delete\x20cron','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','add','start','stop','stop\x20cron','update','util','path','moment','cron-job-manager','jayson/promise','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','Smtp','user','email','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','%s.%s','existsSync','status','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','request','SendMail','then','error','error\x20mail','email\x20sent','subtractNumber'];(function(_0x2156f8,_0x2e4a2c){var _0xba4cfd=function(_0xa93430){while(--_0xa93430){_0x2156f8['push'](_0x2156f8['shift']());}};_0xba4cfd(++_0x2e4a2c);}(_0x569b,0x173));var _0xb569=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x569b[_0x2dadb9];return _0x2f0097;};'use strict';var fs=require('fs');var util=require(_0xb569('0x0'));var path=require(_0xb569('0x1'));var _=require('lodash');var moment=require(_0xb569('0x2'));var CronJobManager=require(_0xb569('0x3'));var jayson=require(_0xb569('0x4'));var BPromise=require('bluebird');var logger=require(_0xb569('0x5'))(_0xb569('0x6'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xb569('0x7'));var analyticDefaultReportController=require(_0xb569('0x8'));var client=jayson[_0xb569('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0xbee933,_0x36f3c1){return function(){logger[_0xb569('0xa')](_0xb569('0xb'),_0xbee933['email']);var _0x9414bf=!![];var _0x546ef3=_0xbee933[_0xb569('0xc')][_0xb569('0xd')]();var _0x5cbaec={'account':_0x546ef3,'message':{'from':util['format'](_0xb569('0xe'),_0xbee933[_0xb569('0xc')][_0xb569('0xf')],_0xbee933['MailAccount']['email']||_0xbee933['MailAccount'][_0xb569('0x10')][_0xb569('0x11')]),'to':_0xbee933[_0xb569('0x12')],'cc':_0xbee933['cc'],'bcc':_0xbee933[_0xb569('0x13')],'subject':util[_0xb569('0x14')](_0xb569('0x15'),_0x36f3c1[_0xb569('0xf')],_0xbee933['subtractNumber'],_0xbee933[_0xb569('0x16')])}};var _0x2ea2aa=path[_0xb569('0x17')](__dirname,_0xb569('0x18'));var _0x4fd536=_0x36f3c1[_0xb569('0x19')];var _0x2959ed=util[_0xb569('0x14')](_0xb569('0x1a'),path['basename'](_0x36f3c1['savename'],path['extname'](_0x36f3c1[_0xb569('0x19')])),'zip');var _0x3d5ad2=path[_0xb569('0x17')](_0x2ea2aa,_0x4fd536);var _0x4a4cc1=path[_0xb569('0x17')](_0x2ea2aa,_0x2959ed);if(fs[_0xb569('0x1b')](_0x3d5ad2)){_0x36f3c1[_0xb569('0x1c')]=_0xb569('0x1d');_0x5cbaec[_0xb569('0x1e')]['attachments']=[{'filename':_0x4fd536,'path':_0x3d5ad2}];_0x5cbaec[_0xb569('0x1e')][_0xb569('0x1f')]=util[_0xb569('0x14')](_0xb569('0x20'),JSON[_0xb569('0x21')](_0x36f3c1,null,0x2));}else if(fs[_0xb569('0x1b')](_0x4a4cc1)){_0x36f3c1[_0xb569('0x1c')]=_0xb569('0x1d');_0x5cbaec[_0xb569('0x1e')][_0xb569('0x22')]=[{'filename':_0x2959ed,'path':_0x4a4cc1}];}else{_0x5cbaec[_0xb569('0x1e')]['text']=_0xb569('0x23');if(!_0xbee933[_0xb569('0x24')]){_0x9414bf=![];logger[_0xb569('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x9414bf){return client[_0xb569('0x25')](_0xb569('0x26'),_0x5cbaec)[_0xb569('0x27')](function(_0x56e99b){if(_0x56e99b[_0xb569('0x28')]){return logger['error'](_0xb569('0x29'),JSON[_0xb569('0x21')](_0x56e99b));}return logger[_0xb569('0xa')](_0xb569('0x2a'));})['catch'](function(_0x3c167c){return logger[_0xb569('0x28')](_0xb569('0x29'),JSON[_0xb569('0x21')](_0x3c167c));});}};}function handleError(){return function(_0x262c27){return logger[_0xb569('0x28')](JSON[_0xb569('0x21')](_0x262c27));};}function handleResult(_0x125b71){return function(_0x4ca4ef){logger['info']('data',JSON[_0xb569('0x21')](_0x4ca4ef));if(_0x125b71[_0xb569('0xc')]&&_0x125b71['MailAccount'][_0xb569('0x10')]&&!_['isNil'](_0x125b71[_0xb569('0x12')])){setTimeout(handleSendEmail(_0x125b71,_0x4ca4ef),0x3c*0x3e8);}};}function handleJob(_0x4855b9){return function(){try{if(_['isNil'](_0x4855b9[_0xb569('0x2b')])){return logger['info'](_0xb569('0x2c'));}if(_['isNil'](_0x4855b9[_0xb569('0x16')])){return logger[_0xb569('0xa')]('subtractUnit\x20null\x20or\x20undefined');}var _0x230448={'startDate':moment()['subtract'](_0x4855b9['subtractNumber'],_0x4855b9[_0xb569('0x16')])[_0xb569('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xb569('0x14')](_0xb569('0x2d')),'type':_0xb569('0x2e'),'output':_0x4855b9[_0xb569('0x2f')],'name':_0x4855b9[_0xb569('0xf')]};if(!_[_0xb569('0x30')](_0x4855b9[_0xb569('0x31')])){logger[_0xb569('0xa')](_0xb569('0x32'),_0x4855b9[_0xb569('0x31')]);return analyticDefaultReportController[_0xb569('0x33')]({'id':_0x4855b9[_0xb569('0x31')]},_0x230448)[_0xb569('0x27')](handleResult(_0x4855b9))[_0xb569('0x34')](handleError());}if(!_[_0xb569('0x30')](_0x4855b9[_0xb569('0x35')])){logger[_0xb569('0xa')](_0xb569('0x36'),_0x4855b9['CustomReportId']);return analyticCustomReportController[_0xb569('0x33')]({'id':_0x4855b9[_0xb569('0x35')]},_0x230448)['then'](handleResult(_0x4855b9))[_0xb569('0x34')](handleError());}}catch(_0x1f9e99){logger[_0xb569('0x28')](JSON['stringify'](_0x1f9e99));}return logger[_0xb569('0xa')](_0xb569('0x37'));};}function getJobs(_0x39dcf9){var _0x3bcae4={};if(_0x39dcf9){_0x3bcae4['id']=_0x39dcf9;}return db[_0xb569('0x38')]['findAll']({'where':_0x3bcae4,'include':[{'model':db[_0xb569('0xc')],'attributes':['id',_0xb569('0xf'),_0xb569('0x12')],'include':[{'model':db[_0xb569('0x39')],'as':_0xb569('0x10'),'include':[{'model':db['CloudProvider'],'as':_0xb569('0x3a')}]}]}]})[_0xb569('0x27')](function(_0x54d6cf){var _0x3d5586=_[_0xb569('0x3b')](manager[_0xb569('0x3c')]);var _0x150c5d=_[_0xb569('0x3d')](_0x54d6cf,function(_0x138bf9){return _0x138bf9['id']['toString']();});var _0xf05995=_[_0xb569('0x3e')](_0x54d6cf,function(_0x1a4c7c){return _0x1a4c7c['id']['toString']();});var _0x2f0757=_0x39dcf9?_0x150c5d:_[_0xb569('0x3f')](_0x150c5d,_0x3d5586);var _0x28e2b6=_[_0xb569('0x40')](_0x150c5d,_0x3d5586);var _0x2246ba=_[_0xb569('0x3f')](_0x3d5586,_0x150c5d);var _0x39d3fd;var _0x111a50;for(_0x39d3fd=0x0;_0x39d3fd<_0x2246ba[_0xb569('0x41')]&&!_0x39dcf9;_0x39d3fd+=0x1){_0x111a50=_0x2246ba[_0x39d3fd][_0xb569('0x42')]();if(manager[_0xb569('0x43')](_0x111a50)){manager['stop'](_0x111a50);manager[_0xb569('0x44')](_0x111a50);logger[_0xb569('0xa')](_0xb569('0x45'),_0x111a50);}}logger[_0xb569('0xa')]('toRun',JSON[_0xb569('0x21')](_0x2f0757));for(_0x39d3fd=0x0;_0x39d3fd<_0x2f0757[_0xb569('0x41')];_0x39d3fd+=0x1){_0x111a50=_0x2f0757[_0x39d3fd][_0xb569('0x42')]();logger[_0xb569('0xa')](_0xb569('0x46'),_0x111a50);if(_0x39dcf9){logger[_0xb569('0xa')](_0xb569('0x47'),_0x39dcf9);logger[_0xb569('0xa')](JSON[_0xb569('0x21')](_0xf05995[_0x111a50]));BPromise['resolve']()[_0xb569('0x27')](handleJob(_0xf05995[_0x111a50]));logger['info'](_0xb569('0x48'),_0xf05995[_0x111a50][_0xb569('0xf')],_0xf05995[_0x111a50][_0xb569('0x49')]);}else if(_0xf05995[_0x111a50][_0xb569('0x49')]&&_0xf05995[_0x111a50][_0xb569('0x4a')]&&moment()[_0xb569('0x4b')](_0xf05995[_0x111a50][_0xb569('0x4c')],_0xf05995[_0x111a50][_0xb569('0x4d')])){manager[_0xb569('0x4e')](_0x111a50,_0xf05995[_0x111a50][_0xb569('0x49')],handleJob(_0xf05995[_0x111a50]));manager[_0xb569('0x4f')](_0x111a50);logger['info']('add\x20cron',_0xf05995[_0x111a50]['name'],_0xf05995[_0x111a50]['cron']);}else if(manager[_0xb569('0x43')](_0x111a50)){manager[_0xb569('0x50')](_0x111a50);manager[_0xb569('0x44')](_0x111a50);logger[_0xb569('0xa')](_0xb569('0x51'),_0xf05995[_0x111a50][_0xb569('0xf')],_0xf05995[_0x111a50][_0xb569('0x49')]);}}for(_0x39d3fd=0x0,_0x111a50;_0x39d3fd<_0x28e2b6[_0xb569('0x41')]&&!_0x39dcf9;_0x39d3fd+=0x1){_0x111a50=_0x28e2b6[_0x39d3fd]['toString']();if(manager['exists'](_0x111a50)){if(_0xf05995[_0x111a50][_0xb569('0x49')]&&_0xf05995[_0x111a50][_0xb569('0x4a')]&&moment()[_0xb569('0x4b')](_0xf05995[_0x111a50][_0xb569('0x4c')],_0xf05995[_0x111a50]['endAt'])){manager[_0xb569('0x52')](_0x111a50,_0xf05995[_0x111a50][_0xb569('0x49')],handleJob(_0xf05995[_0x111a50]));logger[_0xb569('0xa')]('update\x20cron',_0xf05995[_0x111a50][_0xb569('0xf')],_0xf05995[_0x111a50][_0xb569('0x49')]);}else{manager[_0xb569('0x50')](_0x111a50);manager['deleteJob'](_0x111a50);logger[_0xb569('0xa')](_0xb569('0x51'),_0xf05995[_0x111a50][_0xb569('0xf')],_0xf05995[_0x111a50]['cron']);}}}})[_0xb569('0x34')](function(_0x5ef0f2){logger[_0xb569('0x28')](JSON[_0xb569('0x21')](_0x5ef0f2));});}exports['run']=function(_0xacb8ed){return getJobs(_0xacb8ed);};exports[_0xb569('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};