27d5e698f898794d3c78f4eea945427b70b9b2d2
[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 _0x62e8=['keys','jobs','map','toString','difference','intersection','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add','start','add\x20cron','exists','stop\x20cron','update','update\x20cron','run','util','path','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','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','status','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','error','email\x20sent','error\x20mail','data','isNil','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','catch','no\x20report\x20id','Schedule','findAll','MailServerOut'];(function(_0x459e46,_0x526e8a){var _0x3748d8=function(_0x2eaea0){while(--_0x2eaea0){_0x459e46['push'](_0x459e46['shift']());}};_0x3748d8(++_0x526e8a);}(_0x62e8,0x1ba));var _0x862e=function(_0x3263c1,_0x3f58f0){_0x3263c1=_0x3263c1-0x0;var _0x322cee=_0x62e8[_0x3263c1];return _0x322cee;};'use strict';var fs=require('fs');var util=require(_0x862e('0x0'));var path=require(_0x862e('0x1'));var _=require('lodash');var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require(_0x862e('0x2'));var BPromise=require(_0x862e('0x3'));var logger=require('../logger')(_0x862e('0x4'));var db=require(_0x862e('0x5'))['db'];var analyticCustomReportController=require(_0x862e('0x6'));var analyticDefaultReportController=require(_0x862e('0x7'));var client=jayson[_0x862e('0x8')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x30dcff,_0x580c4a){return function(){logger[_0x862e('0x9')](_0x862e('0xa'),_0x30dcff[_0x862e('0xb')]);var _0x198dcb=!![];var _0x24b44b=_0x30dcff[_0x862e('0xc')][_0x862e('0xd')]();var _0x4b5fa4={'account':_0x24b44b,'message':{'from':util[_0x862e('0xe')]('\x22%s\x22\x20<%s>',_0x30dcff[_0x862e('0xc')][_0x862e('0xf')],_0x30dcff['MailAccount'][_0x862e('0xb')]||_0x30dcff[_0x862e('0xc')][_0x862e('0x10')][_0x862e('0x11')]),'to':_0x30dcff[_0x862e('0xb')],'cc':_0x30dcff['cc'],'bcc':_0x30dcff['bcc'],'subject':util['format'](_0x862e('0x12'),_0x580c4a[_0x862e('0xf')],_0x30dcff[_0x862e('0x13')],_0x30dcff[_0x862e('0x14')])}};var _0x30c5f5=path['join'](__dirname,_0x862e('0x15'));var _0x361976=_0x580c4a[_0x862e('0x16')];var _0x457346=util[_0x862e('0xe')](_0x862e('0x17'),path[_0x862e('0x18')](_0x580c4a[_0x862e('0x16')],path[_0x862e('0x19')](_0x580c4a[_0x862e('0x16')])),_0x862e('0x1a'));var _0x52e325=path['join'](_0x30c5f5,_0x361976);var _0x1109bb=path['join'](_0x30c5f5,_0x457346);if(fs[_0x862e('0x1b')](_0x52e325)){_0x580c4a['status']='Sent';_0x4b5fa4[_0x862e('0x1c')][_0x862e('0x1d')]=[{'filename':_0x361976,'path':_0x52e325}];_0x4b5fa4[_0x862e('0x1c')][_0x862e('0x1e')]=util[_0x862e('0xe')](_0x862e('0x1f'),JSON[_0x862e('0x20')](_0x580c4a,null,0x2));}else if(fs[_0x862e('0x1b')](_0x1109bb)){_0x580c4a[_0x862e('0x21')]=_0x862e('0x22');_0x4b5fa4['message'][_0x862e('0x1d')]=[{'filename':_0x457346,'path':_0x1109bb}];}else{_0x4b5fa4[_0x862e('0x1c')][_0x862e('0x1e')]=_0x862e('0x23');if(!_0x30dcff['sendIfEmpty']){_0x198dcb=![];logger[_0x862e('0x9')](_0x862e('0x24'));}}if(_0x198dcb){return client[_0x862e('0x25')]('SendMail',_0x4b5fa4)['then'](function(_0x299c55){if(_0x299c55[_0x862e('0x26')]){return logger[_0x862e('0x26')]('error\x20mail',JSON['stringify'](_0x299c55));}return logger[_0x862e('0x9')](_0x862e('0x27'));})['catch'](function(_0x115592){return logger[_0x862e('0x26')](_0x862e('0x28'),JSON[_0x862e('0x20')](_0x115592));});}};}function handleError(){return function(_0x5b5bc3){return logger[_0x862e('0x26')](JSON[_0x862e('0x20')](_0x5b5bc3));};}function handleResult(_0x346426){return function(_0x110044){logger[_0x862e('0x9')](_0x862e('0x29'),JSON[_0x862e('0x20')](_0x110044));if(_0x346426[_0x862e('0xc')]&&_0x346426[_0x862e('0xc')]['Smtp']&&!_[_0x862e('0x2a')](_0x346426['email'])){setTimeout(handleSendEmail(_0x346426,_0x110044),0x3c*0x3e8);}};}function handleJob(_0xb72b38){return function(){try{if(_['isNil'](_0xb72b38['subtractNumber'])){return logger[_0x862e('0x9')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x862e('0x2a')](_0xb72b38[_0x862e('0x14')])){return logger[_0x862e('0x9')]('subtractUnit\x20null\x20or\x20undefined');}var _0x3eaba8={'startDate':moment()['subtract'](_0xb72b38['subtractNumber'],_0xb72b38[_0x862e('0x14')])[_0x862e('0xe')](_0x862e('0x2b')),'endDate':moment()[_0x862e('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x862e('0x2c'),'output':_0xb72b38[_0x862e('0x2d')],'name':_0xb72b38['name']};if(!_[_0x862e('0x2a')](_0xb72b38[_0x862e('0x2e')])){logger[_0x862e('0x9')]('exec\x20defaul\x20report\x20id:%s',_0xb72b38[_0x862e('0x2e')]);return analyticDefaultReportController[_0x862e('0x2f')]({'id':_0xb72b38[_0x862e('0x2e')]},_0x3eaba8)[_0x862e('0x30')](handleResult(_0xb72b38))['catch'](handleError());}if(!_['isNil'](_0xb72b38[_0x862e('0x31')])){logger[_0x862e('0x9')](_0x862e('0x32'),_0xb72b38[_0x862e('0x31')]);return analyticCustomReportController[_0x862e('0x2f')]({'id':_0xb72b38[_0x862e('0x31')]},_0x3eaba8)[_0x862e('0x30')](handleResult(_0xb72b38))[_0x862e('0x33')](handleError());}}catch(_0x536f24){logger[_0x862e('0x26')](JSON[_0x862e('0x20')](_0x536f24));}return logger[_0x862e('0x9')](_0x862e('0x34'));};}function getJobs(_0x2eb16a){var _0x2f1796={};if(_0x2eb16a){_0x2f1796['id']=_0x2eb16a;}return db[_0x862e('0x35')][_0x862e('0x36')]({'where':_0x2f1796,'include':[{'model':db[_0x862e('0xc')],'attributes':['id',_0x862e('0xf'),_0x862e('0xb')],'include':[{'model':db[_0x862e('0x37')],'as':_0x862e('0x10'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})[_0x862e('0x30')](function(_0x4503a1){var _0x32ff04=_[_0x862e('0x38')](manager[_0x862e('0x39')]);var _0x3e899e=_[_0x862e('0x3a')](_0x4503a1,function(_0x5ecc98){return _0x5ecc98['id']['toString']();});var _0x988dae=_['keyBy'](_0x4503a1,function(_0x2c168b){return _0x2c168b['id'][_0x862e('0x3b')]();});var _0x1cd01d=_0x2eb16a?_0x3e899e:_[_0x862e('0x3c')](_0x3e899e,_0x32ff04);var _0x1a4084=_[_0x862e('0x3d')](_0x3e899e,_0x32ff04);var _0x227490=_['difference'](_0x32ff04,_0x3e899e);var _0x3c309e;var _0x87d7c9;for(_0x3c309e=0x0;_0x3c309e<_0x227490['length']&&!_0x2eb16a;_0x3c309e+=0x1){_0x87d7c9=_0x227490[_0x3c309e][_0x862e('0x3b')]();if(manager['exists'](_0x87d7c9)){manager[_0x862e('0x3e')](_0x87d7c9);manager[_0x862e('0x3f')](_0x87d7c9);logger[_0x862e('0x9')](_0x862e('0x40'),_0x87d7c9);}}logger[_0x862e('0x9')](_0x862e('0x41'),JSON[_0x862e('0x20')](_0x1cd01d));for(_0x3c309e=0x0;_0x3c309e<_0x1cd01d[_0x862e('0x42')];_0x3c309e+=0x1){_0x87d7c9=_0x1cd01d[_0x3c309e]['toString']();logger[_0x862e('0x9')](_0x862e('0x43'),_0x87d7c9);if(_0x2eb16a){logger[_0x862e('0x9')](_0x862e('0x44'),_0x2eb16a);logger[_0x862e('0x9')](JSON[_0x862e('0x20')](_0x988dae[_0x87d7c9]));BPromise[_0x862e('0x45')]()['then'](handleJob(_0x988dae[_0x87d7c9]));logger[_0x862e('0x9')](_0x862e('0x46'),_0x988dae[_0x87d7c9][_0x862e('0xf')],_0x988dae[_0x87d7c9][_0x862e('0x47')]);}else if(_0x988dae[_0x87d7c9][_0x862e('0x47')]&&_0x988dae[_0x87d7c9][_0x862e('0x48')]&&moment()[_0x862e('0x49')](_0x988dae[_0x87d7c9]['startAt'],_0x988dae[_0x87d7c9][_0x862e('0x4a')])){manager[_0x862e('0x4b')](_0x87d7c9,_0x988dae[_0x87d7c9][_0x862e('0x47')],handleJob(_0x988dae[_0x87d7c9]));manager[_0x862e('0x4c')](_0x87d7c9);logger[_0x862e('0x9')](_0x862e('0x4d'),_0x988dae[_0x87d7c9]['name'],_0x988dae[_0x87d7c9]['cron']);}else if(manager[_0x862e('0x4e')](_0x87d7c9)){manager[_0x862e('0x3e')](_0x87d7c9);manager['deleteJob'](_0x87d7c9);logger[_0x862e('0x9')](_0x862e('0x4f'),_0x988dae[_0x87d7c9][_0x862e('0xf')],_0x988dae[_0x87d7c9][_0x862e('0x47')]);}}for(_0x3c309e=0x0,_0x87d7c9;_0x3c309e<_0x1a4084[_0x862e('0x42')]&&!_0x2eb16a;_0x3c309e+=0x1){_0x87d7c9=_0x1a4084[_0x3c309e][_0x862e('0x3b')]();if(manager[_0x862e('0x4e')](_0x87d7c9)){if(_0x988dae[_0x87d7c9][_0x862e('0x47')]&&_0x988dae[_0x87d7c9][_0x862e('0x48')]&&moment()[_0x862e('0x49')](_0x988dae[_0x87d7c9]['startAt'],_0x988dae[_0x87d7c9][_0x862e('0x4a')])){manager[_0x862e('0x50')](_0x87d7c9,_0x988dae[_0x87d7c9][_0x862e('0x47')],handleJob(_0x988dae[_0x87d7c9]));logger[_0x862e('0x9')](_0x862e('0x51'),_0x988dae[_0x87d7c9]['name'],_0x988dae[_0x87d7c9][_0x862e('0x47')]);}else{manager[_0x862e('0x3e')](_0x87d7c9);manager[_0x862e('0x3f')](_0x87d7c9);logger[_0x862e('0x9')](_0x862e('0x4f'),_0x988dae[_0x87d7c9][_0x862e('0xf')],_0x988dae[_0x87d7c9][_0x862e('0x47')]);}}}})[_0x862e('0x33')](function(_0x3b398e){logger['error'](JSON[_0x862e('0x20')](_0x3b398e));});}exports[_0x862e('0x52')]=function(_0x5866ab){return getJobs(_0x5866ab);};exports[_0x862e('0x4c')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};