85ca3f6fba03db140c54bbd3d826e374ee7b22a6
[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 _0x05a8=['email\x20sent','catch','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','CustomReportId','exec\x20custom\x20report\x20id:%s','Schedule','MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','active','isBetween','startAt','add','start','stop\x20cron','endAt','update','update\x20cron','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','\x22%s\x22\x20<%s>','name','MailAccount','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','join','savename','format','basename','zip','existsSync','status','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','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'];(function(_0x282ed6,_0x1244f6){var _0x1f85ca=function(_0x2083b6){while(--_0x2083b6){_0x282ed6['push'](_0x282ed6['shift']());}};_0x1f85ca(++_0x1244f6);}(_0x05a8,0x1d4));var _0x805a=function(_0x2ce217,_0xf132e1){_0x2ce217=_0x2ce217-0x0;var _0xf119e7=_0x05a8[_0x2ce217];return _0xf119e7;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require('lodash');var moment=require(_0x805a('0x0'));var CronJobManager=require(_0x805a('0x1'));var jayson=require(_0x805a('0x2'));var BPromise=require(_0x805a('0x3'));var logger=require(_0x805a('0x4'))(_0x805a('0x5'));var db=require(_0x805a('0x6'))['db'];var analyticCustomReportController=require(_0x805a('0x7'));var analyticDefaultReportController=require(_0x805a('0x8'));var client=jayson[_0x805a('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x49a33a,_0x1a806c){return function(){logger[_0x805a('0xa')](_0x805a('0xb'),_0x49a33a[_0x805a('0xc')]);var _0x593569=!![];var _0x1c6444=_0x49a33a['MailAccount'][_0x805a('0xd')]();var _0x7174e3={'account':_0x1c6444,'message':{'from':util['format'](_0x805a('0xe'),_0x49a33a['MailAccount'][_0x805a('0xf')],_0x49a33a[_0x805a('0x10')]['email']||_0x49a33a[_0x805a('0x10')]['Smtp'][_0x805a('0x11')]),'to':_0x49a33a[_0x805a('0xc')],'cc':_0x49a33a['cc'],'bcc':_0x49a33a[_0x805a('0x12')],'subject':util['format'](_0x805a('0x13'),_0x1a806c[_0x805a('0xf')],_0x49a33a[_0x805a('0x14')],_0x49a33a['subtractUnit'])}};var _0x1a62c2=path[_0x805a('0x15')](__dirname,'../../files/reports');var _0x28348a=_0x1a806c[_0x805a('0x16')];var _0x595c04=util[_0x805a('0x17')]('%s.%s',path[_0x805a('0x18')](_0x1a806c[_0x805a('0x16')],path['extname'](_0x1a806c['savename'])),_0x805a('0x19'));var _0x5e0b1a=path['join'](_0x1a62c2,_0x28348a);var _0x46e7b8=path[_0x805a('0x15')](_0x1a62c2,_0x595c04);if(fs[_0x805a('0x1a')](_0x5e0b1a)){_0x1a806c[_0x805a('0x1b')]=_0x805a('0x1c');_0x7174e3[_0x805a('0x1d')][_0x805a('0x1e')]=[{'filename':_0x28348a,'path':_0x5e0b1a}];_0x7174e3['message'][_0x805a('0x1f')]=util[_0x805a('0x17')](_0x805a('0x20'),JSON[_0x805a('0x21')](_0x1a806c,null,0x2));}else if(fs[_0x805a('0x1a')](_0x46e7b8)){_0x1a806c['status']='Sent';_0x7174e3['message']['attachments']=[{'filename':_0x595c04,'path':_0x46e7b8}];}else{_0x7174e3['message'][_0x805a('0x1f')]=_0x805a('0x22');if(!_0x49a33a[_0x805a('0x23')]){_0x593569=![];logger['info'](_0x805a('0x24'));}}if(_0x593569){return client[_0x805a('0x25')](_0x805a('0x26'),_0x7174e3)[_0x805a('0x27')](function(_0x523b39){if(_0x523b39[_0x805a('0x28')]){return logger['error'](_0x805a('0x29'),JSON[_0x805a('0x21')](_0x523b39));}return logger[_0x805a('0xa')](_0x805a('0x2a'));})[_0x805a('0x2b')](function(_0x3a380b){return logger['error']('error\x20mail',JSON[_0x805a('0x21')](_0x3a380b));});}};}function handleError(){return function(_0x1d8214){return logger[_0x805a('0x28')](JSON[_0x805a('0x21')](_0x1d8214));};}function handleResult(_0x5361de){return function(_0x414487){logger[_0x805a('0xa')](_0x805a('0x2c'),JSON[_0x805a('0x21')](_0x414487));if(_0x5361de[_0x805a('0x10')]&&_0x5361de[_0x805a('0x10')][_0x805a('0x2d')]&&!_[_0x805a('0x2e')](_0x5361de['email'])){setTimeout(handleSendEmail(_0x5361de,_0x414487),0x3c*0x3e8);}};}function handleJob(_0x5658bc){return function(){try{if(_[_0x805a('0x2e')](_0x5658bc[_0x805a('0x14')])){return logger['info'](_0x805a('0x2f'));}if(_[_0x805a('0x2e')](_0x5658bc[_0x805a('0x30')])){return logger['info'](_0x805a('0x31'));}var _0xd5c794={'startDate':moment()[_0x805a('0x32')](_0x5658bc[_0x805a('0x14')],_0x5658bc['subtractUnit'])[_0x805a('0x17')](_0x805a('0x33')),'endDate':moment()[_0x805a('0x17')](_0x805a('0x33')),'type':'scheduled','output':_0x5658bc[_0x805a('0x34')],'name':_0x5658bc['name']};if(!_[_0x805a('0x2e')](_0x5658bc[_0x805a('0x35')])){logger[_0x805a('0xa')](_0x805a('0x36'),_0x5658bc['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x5658bc[_0x805a('0x35')]},_0xd5c794)[_0x805a('0x27')](handleResult(_0x5658bc))['catch'](handleError());}if(!_['isNil'](_0x5658bc[_0x805a('0x37')])){logger[_0x805a('0xa')](_0x805a('0x38'),_0x5658bc[_0x805a('0x37')]);return analyticCustomReportController['runReport']({'id':_0x5658bc['CustomReportId']},_0xd5c794)[_0x805a('0x27')](handleResult(_0x5658bc))[_0x805a('0x2b')](handleError());}}catch(_0x48d474){logger[_0x805a('0x28')](JSON[_0x805a('0x21')](_0x48d474));}return logger['info']('no\x20report\x20id');};}function getJobs(_0x4ebec3){var _0x58aea4={};if(_0x4ebec3){_0x58aea4['id']=_0x4ebec3;}return db[_0x805a('0x39')]['findAll']({'where':_0x58aea4,'include':[{'model':db[_0x805a('0x10')],'attributes':['id','name',_0x805a('0xc')],'include':[{'model':db[_0x805a('0x3a')],'as':_0x805a('0x2d'),'include':[{'model':db[_0x805a('0x3b')],'as':'CloudProvider'}]}]}]})[_0x805a('0x27')](function(_0x2ed680){var _0x24d269=_[_0x805a('0x3c')](manager[_0x805a('0x3d')]);var _0x20a844=_[_0x805a('0x3e')](_0x2ed680,function(_0x47c574){return _0x47c574['id'][_0x805a('0x3f')]();});var _0x3022ad=_[_0x805a('0x40')](_0x2ed680,function(_0x45f199){return _0x45f199['id'][_0x805a('0x3f')]();});var _0x51b194=_0x4ebec3?_0x20a844:_[_0x805a('0x41')](_0x20a844,_0x24d269);var _0x226e65=_['intersection'](_0x20a844,_0x24d269);var _0x5d07f5=_[_0x805a('0x41')](_0x24d269,_0x20a844);var _0x5b90ea;var _0x342fc7;for(_0x5b90ea=0x0;_0x5b90ea<_0x5d07f5[_0x805a('0x42')]&&!_0x4ebec3;_0x5b90ea+=0x1){_0x342fc7=_0x5d07f5[_0x5b90ea][_0x805a('0x3f')]();if(manager[_0x805a('0x43')](_0x342fc7)){manager[_0x805a('0x44')](_0x342fc7);manager[_0x805a('0x45')](_0x342fc7);logger[_0x805a('0xa')](_0x805a('0x46'),_0x342fc7);}}logger['info'](_0x805a('0x47'),JSON[_0x805a('0x21')](_0x51b194));for(_0x5b90ea=0x0;_0x5b90ea<_0x51b194[_0x805a('0x42')];_0x5b90ea+=0x1){_0x342fc7=_0x51b194[_0x5b90ea][_0x805a('0x3f')]();logger[_0x805a('0xa')](_0x805a('0x48'),_0x342fc7);if(_0x4ebec3){logger[_0x805a('0xa')](_0x805a('0x49'),_0x4ebec3);logger['info'](JSON[_0x805a('0x21')](_0x3022ad[_0x342fc7]));BPromise['resolve']()[_0x805a('0x27')](handleJob(_0x3022ad[_0x342fc7]));logger['info'](_0x805a('0x4a'),_0x3022ad[_0x342fc7]['name'],_0x3022ad[_0x342fc7][_0x805a('0x4b')]);}else if(_0x3022ad[_0x342fc7][_0x805a('0x4b')]&&_0x3022ad[_0x342fc7][_0x805a('0x4c')]&&moment()[_0x805a('0x4d')](_0x3022ad[_0x342fc7][_0x805a('0x4e')],_0x3022ad[_0x342fc7]['endAt'])){manager[_0x805a('0x4f')](_0x342fc7,_0x3022ad[_0x342fc7][_0x805a('0x4b')],handleJob(_0x3022ad[_0x342fc7]));manager[_0x805a('0x50')](_0x342fc7);logger[_0x805a('0xa')]('add\x20cron',_0x3022ad[_0x342fc7][_0x805a('0xf')],_0x3022ad[_0x342fc7][_0x805a('0x4b')]);}else if(manager[_0x805a('0x43')](_0x342fc7)){manager['stop'](_0x342fc7);manager[_0x805a('0x45')](_0x342fc7);logger[_0x805a('0xa')](_0x805a('0x51'),_0x3022ad[_0x342fc7][_0x805a('0xf')],_0x3022ad[_0x342fc7][_0x805a('0x4b')]);}}for(_0x5b90ea=0x0,_0x342fc7;_0x5b90ea<_0x226e65[_0x805a('0x42')]&&!_0x4ebec3;_0x5b90ea+=0x1){_0x342fc7=_0x226e65[_0x5b90ea]['toString']();if(manager['exists'](_0x342fc7)){if(_0x3022ad[_0x342fc7][_0x805a('0x4b')]&&_0x3022ad[_0x342fc7][_0x805a('0x4c')]&&moment()[_0x805a('0x4d')](_0x3022ad[_0x342fc7][_0x805a('0x4e')],_0x3022ad[_0x342fc7][_0x805a('0x52')])){manager[_0x805a('0x53')](_0x342fc7,_0x3022ad[_0x342fc7][_0x805a('0x4b')],handleJob(_0x3022ad[_0x342fc7]));logger[_0x805a('0xa')](_0x805a('0x54'),_0x3022ad[_0x342fc7]['name'],_0x3022ad[_0x342fc7]['cron']);}else{manager[_0x805a('0x44')](_0x342fc7);manager['deleteJob'](_0x342fc7);logger[_0x805a('0xa')](_0x805a('0x51'),_0x3022ad[_0x342fc7][_0x805a('0xf')],_0x3022ad[_0x342fc7][_0x805a('0x4b')]);}}}})[_0x805a('0x2b')](function(_0x2e449f){logger[_0x805a('0x28')](JSON[_0x805a('0x21')](_0x2e449f));});}exports['run']=function(_0x140f4b){return getJobs(_0x140f4b);};exports[_0x805a('0x50')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};