4edc260b8994bacb9fe2b9e2d859481156160efa
[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 _0xdaa0=['MailServerOut','CloudProvider','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','add\x20cron','stop\x20cron','update','run','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','email','Smtp','user','bcc','format','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','zip','status','Sent','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','existsSync','message','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','request','SendMail','then','error','catch','error\x20mail','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdaa0,0xc5));var _0x0daa=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0xdaa0[_0x186376];return _0x2dbdd9;};'use strict';var fs=require('fs');var util=require(_0x0daa('0x0'));var path=require(_0x0daa('0x1'));var _=require(_0x0daa('0x2'));var moment=require('moment');var CronJobManager=require(_0x0daa('0x3'));var jayson=require(_0x0daa('0x4'));var BPromise=require(_0x0daa('0x5'));var logger=require(_0x0daa('0x6'))(_0x0daa('0x7'));var db=require(_0x0daa('0x8'))['db'];var analyticCustomReportController=require(_0x0daa('0x9'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0x0daa('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x186df4,_0x4320c0){return function(){logger[_0x0daa('0xb')](_0x0daa('0xc'),_0x186df4['email']);var _0x54d6b0=!![];var _0x579f59=_0x186df4[_0x0daa('0xd')][_0x0daa('0xe')]();var _0x21a03b={'account':_0x579f59,'message':{'from':util['format'](_0x0daa('0xf'),_0x186df4[_0x0daa('0xd')][_0x0daa('0x10')],_0x186df4[_0x0daa('0xd')][_0x0daa('0x11')]||_0x186df4[_0x0daa('0xd')][_0x0daa('0x12')][_0x0daa('0x13')]),'to':_0x186df4['email'],'cc':_0x186df4['cc'],'bcc':_0x186df4[_0x0daa('0x14')],'subject':util[_0x0daa('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x4320c0[_0x0daa('0x10')],_0x186df4[_0x0daa('0x16')],_0x186df4[_0x0daa('0x17')])}};var _0x72c5e6=path[_0x0daa('0x18')](__dirname,_0x0daa('0x19'));var _0x5512da=_0x4320c0[_0x0daa('0x1a')];var _0x30c406=util[_0x0daa('0x15')]('%s.%s',path[_0x0daa('0x1b')](_0x4320c0['savename'],path[_0x0daa('0x1c')](_0x4320c0[_0x0daa('0x1a')])),_0x0daa('0x1d'));var _0x5b19b5=path['join'](_0x72c5e6,_0x5512da);var _0x328f7a=path[_0x0daa('0x18')](_0x72c5e6,_0x30c406);if(fs['existsSync'](_0x5b19b5)){_0x4320c0[_0x0daa('0x1e')]=_0x0daa('0x1f');_0x21a03b['message']['attachments']=[{'filename':_0x5512da,'path':_0x5b19b5}];_0x21a03b['message'][_0x0daa('0x20')]=util['format'](_0x0daa('0x21'),JSON[_0x0daa('0x22')](_0x4320c0,null,0x2));}else if(fs[_0x0daa('0x23')](_0x328f7a)){_0x4320c0[_0x0daa('0x1e')]=_0x0daa('0x1f');_0x21a03b[_0x0daa('0x24')][_0x0daa('0x25')]=[{'filename':_0x30c406,'path':_0x328f7a}];}else{_0x21a03b[_0x0daa('0x24')][_0x0daa('0x20')]=_0x0daa('0x26');if(!_0x186df4[_0x0daa('0x27')]){_0x54d6b0=![];logger[_0x0daa('0xb')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x54d6b0){return client[_0x0daa('0x28')](_0x0daa('0x29'),_0x21a03b)[_0x0daa('0x2a')](function(_0x4bf00e){if(_0x4bf00e[_0x0daa('0x2b')]){return logger[_0x0daa('0x2b')]('error\x20mail',JSON[_0x0daa('0x22')](_0x4bf00e));}return logger['info']('email\x20sent');})[_0x0daa('0x2c')](function(_0x2c4aa2){return logger[_0x0daa('0x2b')](_0x0daa('0x2d'),JSON[_0x0daa('0x22')](_0x2c4aa2));});}};}function handleError(){return function(_0x339cbe){return logger[_0x0daa('0x2b')](JSON[_0x0daa('0x22')](_0x339cbe));};}function handleResult(_0x57e094){return function(_0x1463aa){logger['info']('data',JSON[_0x0daa('0x22')](_0x1463aa));if(_0x57e094[_0x0daa('0xd')]&&_0x57e094['MailAccount'][_0x0daa('0x12')]&&!_['isNil'](_0x57e094['email'])){setTimeout(handleSendEmail(_0x57e094,_0x1463aa),0x3c*0x3e8);}};}function handleJob(_0xa9487a){return function(){try{if(_['isNil'](_0xa9487a['subtractNumber'])){return logger[_0x0daa('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x0daa('0x2e')](_0xa9487a[_0x0daa('0x17')])){return logger[_0x0daa('0xb')](_0x0daa('0x2f'));}var _0x2b6777={'startDate':moment()[_0x0daa('0x30')](_0xa9487a[_0x0daa('0x16')],_0xa9487a[_0x0daa('0x17')])['format'](_0x0daa('0x31')),'endDate':moment()[_0x0daa('0x15')](_0x0daa('0x31')),'type':_0x0daa('0x32'),'output':_0xa9487a['output'],'name':_0xa9487a[_0x0daa('0x10')]};if(!_[_0x0daa('0x2e')](_0xa9487a[_0x0daa('0x33')])){logger[_0x0daa('0xb')](_0x0daa('0x34'),_0xa9487a[_0x0daa('0x33')]);return analyticDefaultReportController[_0x0daa('0x35')]({'id':_0xa9487a[_0x0daa('0x33')]},_0x2b6777)[_0x0daa('0x2a')](handleResult(_0xa9487a))['catch'](handleError());}if(!_[_0x0daa('0x2e')](_0xa9487a[_0x0daa('0x36')])){logger[_0x0daa('0xb')](_0x0daa('0x37'),_0xa9487a['CustomReportId']);return analyticCustomReportController[_0x0daa('0x35')]({'id':_0xa9487a[_0x0daa('0x36')]},_0x2b6777)[_0x0daa('0x2a')](handleResult(_0xa9487a))[_0x0daa('0x2c')](handleError());}}catch(_0x44bae0){logger['error'](JSON[_0x0daa('0x22')](_0x44bae0));}return logger[_0x0daa('0xb')](_0x0daa('0x38'));};}function getJobs(_0x565ea8){var _0x1db096={};if(_0x565ea8){_0x1db096['id']=_0x565ea8;}return db[_0x0daa('0x39')]['findAll']({'where':_0x1db096,'include':[{'model':db[_0x0daa('0xd')],'attributes':['id',_0x0daa('0x10'),_0x0daa('0x11')],'include':[{'model':db[_0x0daa('0x3a')],'as':_0x0daa('0x12'),'include':[{'model':db[_0x0daa('0x3b')],'as':'CloudProvider'}]}]}]})['then'](function(_0x3f1764){var _0x142056=_[_0x0daa('0x3c')](manager[_0x0daa('0x3d')]);var _0x36ff39=_[_0x0daa('0x3e')](_0x3f1764,function(_0x13b29c){return _0x13b29c['id'][_0x0daa('0x3f')]();});var _0xd2c047=_[_0x0daa('0x40')](_0x3f1764,function(_0x9c72da){return _0x9c72da['id']['toString']();});var _0x39ae42=_0x565ea8?_0x36ff39:_[_0x0daa('0x41')](_0x36ff39,_0x142056);var _0x28e4f4=_[_0x0daa('0x42')](_0x36ff39,_0x142056);var _0x19cc66=_['difference'](_0x142056,_0x36ff39);var _0x5c6cbc;var _0xb81dd;for(_0x5c6cbc=0x0;_0x5c6cbc<_0x19cc66[_0x0daa('0x43')]&&!_0x565ea8;_0x5c6cbc+=0x1){_0xb81dd=_0x19cc66[_0x5c6cbc]['toString']();if(manager[_0x0daa('0x44')](_0xb81dd)){manager[_0x0daa('0x45')](_0xb81dd);manager[_0x0daa('0x46')](_0xb81dd);logger[_0x0daa('0xb')](_0x0daa('0x47'),_0xb81dd);}}logger[_0x0daa('0xb')](_0x0daa('0x48'),JSON[_0x0daa('0x22')](_0x39ae42));for(_0x5c6cbc=0x0;_0x5c6cbc<_0x39ae42[_0x0daa('0x43')];_0x5c6cbc+=0x1){_0xb81dd=_0x39ae42[_0x5c6cbc][_0x0daa('0x3f')]();logger[_0x0daa('0xb')]('index',_0xb81dd);if(_0x565ea8){logger[_0x0daa('0xb')](_0x0daa('0x49'),_0x565ea8);logger[_0x0daa('0xb')](JSON[_0x0daa('0x22')](_0xd2c047[_0xb81dd]));BPromise[_0x0daa('0x4a')]()[_0x0daa('0x2a')](handleJob(_0xd2c047[_0xb81dd]));logger[_0x0daa('0xb')](_0x0daa('0x4b'),_0xd2c047[_0xb81dd][_0x0daa('0x10')],_0xd2c047[_0xb81dd]['cron']);}else if(_0xd2c047[_0xb81dd][_0x0daa('0x4c')]&&_0xd2c047[_0xb81dd][_0x0daa('0x4d')]&&moment()[_0x0daa('0x4e')](_0xd2c047[_0xb81dd]['startAt'],_0xd2c047[_0xb81dd][_0x0daa('0x4f')])){manager[_0x0daa('0x50')](_0xb81dd,_0xd2c047[_0xb81dd][_0x0daa('0x4c')],handleJob(_0xd2c047[_0xb81dd]));manager['start'](_0xb81dd);logger[_0x0daa('0xb')](_0x0daa('0x51'),_0xd2c047[_0xb81dd][_0x0daa('0x10')],_0xd2c047[_0xb81dd]['cron']);}else if(manager['exists'](_0xb81dd)){manager[_0x0daa('0x45')](_0xb81dd);manager[_0x0daa('0x46')](_0xb81dd);logger[_0x0daa('0xb')](_0x0daa('0x52'),_0xd2c047[_0xb81dd][_0x0daa('0x10')],_0xd2c047[_0xb81dd]['cron']);}}for(_0x5c6cbc=0x0,_0xb81dd;_0x5c6cbc<_0x28e4f4['length']&&!_0x565ea8;_0x5c6cbc+=0x1){_0xb81dd=_0x28e4f4[_0x5c6cbc][_0x0daa('0x3f')]();if(manager[_0x0daa('0x44')](_0xb81dd)){if(_0xd2c047[_0xb81dd][_0x0daa('0x4c')]&&_0xd2c047[_0xb81dd][_0x0daa('0x4d')]&&moment()[_0x0daa('0x4e')](_0xd2c047[_0xb81dd]['startAt'],_0xd2c047[_0xb81dd][_0x0daa('0x4f')])){manager[_0x0daa('0x53')](_0xb81dd,_0xd2c047[_0xb81dd][_0x0daa('0x4c')],handleJob(_0xd2c047[_0xb81dd]));logger[_0x0daa('0xb')]('update\x20cron',_0xd2c047[_0xb81dd]['name'],_0xd2c047[_0xb81dd]['cron']);}else{manager[_0x0daa('0x45')](_0xb81dd);manager[_0x0daa('0x46')](_0xb81dd);logger[_0x0daa('0xb')](_0x0daa('0x52'),_0xd2c047[_0xb81dd]['name'],_0xd2c047[_0xb81dd][_0x0daa('0x4c')]);}}}})[_0x0daa('0x2c')](function(_0x2fd51d){logger['error'](JSON[_0x0daa('0x22')](_0x2fd51d));});}exports[_0x0daa('0x54')]=function(_0x549c9d){return getJobs(_0x549c9d);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};