a81b0bc6623965d3ce09125370fe24e13b12cbd6
[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 _0x3332=['index','my\x20id','resolve','run\x20job','cron','isBetween','startAt','endAt','add','start','add\x20cron','active','update','stop\x20cron','run','util','path','lodash','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','MailAccount','Smtp','service','host','port','secure','authentication','user','pass','format','\x22%s\x22\x20<%s>','name','email','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','zip','status','Sent','message','attachments','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','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','isNil','subtract','YYYY-MM-DD\x20HH:mm:ss','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','findAll','MailServerOut','keys','jobs','toString','intersection','difference','length','exists','stop','deleteJob','delete\x20cron','toRun'];(function(_0x1d80be,_0x3a60ff){var _0xf9a4f3=function(_0x5b8a08){while(--_0x5b8a08){_0x1d80be['push'](_0x1d80be['shift']());}};_0xf9a4f3(++_0x3a60ff);}(_0x3332,0x114));var _0x2333=function(_0x5a2162,_0x5a90a3){_0x5a2162=_0x5a2162-0x0;var _0x4561a7=_0x3332[_0x5a2162];return _0x4561a7;};'use strict';var fs=require('fs');var util=require(_0x2333('0x0'));var path=require(_0x2333('0x1'));var _=require(_0x2333('0x2'));var moment=require('moment');var CronJobManager=require(_0x2333('0x3'));var jayson=require(_0x2333('0x4'));var BPromise=require(_0x2333('0x5'));var logger=require(_0x2333('0x6'))(_0x2333('0x7'));var db=require(_0x2333('0x8'))['db'];var analyticCustomReportController=require(_0x2333('0x9'));var analyticDefaultReportController=require(_0x2333('0xa'));var client=jayson[_0x2333('0xb')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2b43ac,_0x4d1613){return function(){logger[_0x2333('0xc')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x2b43ac['email']);var _0x2641ea=!![];var _0x3f2d7d={'tls':{'rejectUnauthorized':![]}};if(_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0xf')]){_0x3f2d7d[_0x2333('0xf')]=_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0xf')];}else{_0x3f2d7d[_0x2333('0x10')]=_0x2b43ac[_0x2333('0xd')]['Smtp'][_0x2333('0x10')];_0x3f2d7d['port']=_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0x11')];_0x3f2d7d[_0x2333('0x12')]=_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')]['secure'];}if(_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0x13')]){_0x3f2d7d['auth']={'user':_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0x14')],'pass':_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0x15')]};}var _0x1d7dc7={'account':_0x3f2d7d,'message':{'from':util[_0x2333('0x16')](_0x2333('0x17'),_0x2b43ac[_0x2333('0xd')][_0x2333('0x18')],_0x2b43ac[_0x2333('0xd')][_0x2333('0x19')]||_0x2b43ac[_0x2333('0xd')][_0x2333('0xe')][_0x2333('0x14')]),'to':_0x2b43ac[_0x2333('0x19')],'cc':_0x2b43ac['cc'],'bcc':_0x2b43ac['bcc'],'subject':util[_0x2333('0x16')](_0x2333('0x1a'),_0x4d1613[_0x2333('0x18')],_0x2b43ac[_0x2333('0x1b')],_0x2b43ac[_0x2333('0x1c')])}};var _0x43f52f=path[_0x2333('0x1d')](__dirname,_0x2333('0x1e'));var _0x42ca22=_0x4d1613[_0x2333('0x1f')];var _0x42ca00=util[_0x2333('0x16')](_0x2333('0x20'),path['basename'](_0x4d1613[_0x2333('0x1f')],path['extname'](_0x4d1613[_0x2333('0x1f')])),_0x2333('0x21'));var _0x597cd2=path[_0x2333('0x1d')](_0x43f52f,_0x42ca22);var _0x5d98b6=path[_0x2333('0x1d')](_0x43f52f,_0x42ca00);if(fs['existsSync'](_0x597cd2)){_0x4d1613[_0x2333('0x22')]=_0x2333('0x23');_0x1d7dc7[_0x2333('0x24')][_0x2333('0x25')]=[{'filename':_0x42ca22,'path':_0x597cd2}];_0x1d7dc7[_0x2333('0x24')]['text']=util[_0x2333('0x16')](_0x2333('0x26'),JSON[_0x2333('0x27')](_0x4d1613,null,0x2));}else if(fs[_0x2333('0x28')](_0x5d98b6)){_0x4d1613[_0x2333('0x22')]=_0x2333('0x23');_0x1d7dc7['message']['attachments']=[{'filename':_0x42ca00,'path':_0x5d98b6}];}else{_0x1d7dc7['message'][_0x2333('0x29')]=_0x2333('0x2a');if(!_0x2b43ac['sendIfEmpty']){_0x2641ea=![];logger[_0x2333('0xc')](_0x2333('0x2b'));}}if(_0x2641ea){return client[_0x2333('0x2c')](_0x2333('0x2d'),_0x1d7dc7)[_0x2333('0x2e')](function(_0x2cd7d5){if(_0x2cd7d5[_0x2333('0x2f')]){return logger[_0x2333('0x2f')](_0x2333('0x30'),JSON[_0x2333('0x27')](_0x2cd7d5));}return logger[_0x2333('0xc')](_0x2333('0x31'));})[_0x2333('0x32')](function(_0x396909){return logger[_0x2333('0x2f')](_0x2333('0x30'),JSON['stringify'](_0x396909));});}};}function handleError(){return function(_0x3c248e){return logger[_0x2333('0x2f')](JSON['stringify'](_0x3c248e));};}function handleResult(_0x37b0b6){return function(_0x28f51f){logger[_0x2333('0xc')]('data',JSON['stringify'](_0x28f51f));if(_0x37b0b6[_0x2333('0xd')]&&_0x37b0b6[_0x2333('0xd')]['Smtp']&&!_['isNil'](_0x37b0b6[_0x2333('0x19')])){setTimeout(handleSendEmail(_0x37b0b6,_0x28f51f),0x3c*0x3e8);}};}function handleJob(_0x57cf63){return function(){try{if(_[_0x2333('0x33')](_0x57cf63[_0x2333('0x1b')])){return logger[_0x2333('0xc')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x57cf63['subtractUnit'])){return logger['info']('subtractUnit\x20null\x20or\x20undefined');}var _0x1d36d2={'startDate':moment()[_0x2333('0x34')](_0x57cf63[_0x2333('0x1b')],_0x57cf63[_0x2333('0x1c')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x2333('0x16')](_0x2333('0x35')),'type':'scheduled','output':_0x57cf63['output'],'name':_0x57cf63['name']};if(!_['isNil'](_0x57cf63[_0x2333('0x36')])){logger[_0x2333('0xc')](_0x2333('0x37'),_0x57cf63[_0x2333('0x36')]);return analyticDefaultReportController[_0x2333('0x38')]({'id':_0x57cf63[_0x2333('0x36')]},_0x1d36d2)[_0x2333('0x2e')](handleResult(_0x57cf63))[_0x2333('0x32')](handleError());}if(!_[_0x2333('0x33')](_0x57cf63[_0x2333('0x39')])){logger[_0x2333('0xc')]('exec\x20custom\x20report\x20id:%s',_0x57cf63['CustomReportId']);return analyticCustomReportController[_0x2333('0x38')]({'id':_0x57cf63[_0x2333('0x39')]},_0x1d36d2)['then'](handleResult(_0x57cf63))[_0x2333('0x32')](handleError());}}catch(_0x2a12c0){logger[_0x2333('0x2f')](JSON[_0x2333('0x27')](_0x2a12c0));}return logger[_0x2333('0xc')](_0x2333('0x3a'));};}function getJobs(_0x2a6073){var _0x5bc7a0={};if(_0x2a6073){_0x5bc7a0['id']=_0x2a6073;}return db['Schedule'][_0x2333('0x3b')]({'where':_0x5bc7a0,'include':[{'model':db['MailAccount'],'attributes':['id','name',_0x2333('0x19')],'include':[{'model':db[_0x2333('0x3c')],'as':_0x2333('0xe')}]}]})[_0x2333('0x2e')](function(_0x835918){var _0x3989d0=_[_0x2333('0x3d')](manager[_0x2333('0x3e')]);var _0x50d3de=_['map'](_0x835918,function(_0x1cf61a){return _0x1cf61a['id']['toString']();});var _0x460b04=_['keyBy'](_0x835918,function(_0x3ae3ff){return _0x3ae3ff['id'][_0x2333('0x3f')]();});var _0x5a2795=_0x2a6073?_0x50d3de:_['difference'](_0x50d3de,_0x3989d0);var _0x3a80f1=_[_0x2333('0x40')](_0x50d3de,_0x3989d0);var _0x1b7c1a=_[_0x2333('0x41')](_0x3989d0,_0x50d3de);var _0x5d6a72;var _0x1dfc34;for(_0x5d6a72=0x0;_0x5d6a72<_0x1b7c1a[_0x2333('0x42')]&&!_0x2a6073;_0x5d6a72+=0x1){_0x1dfc34=_0x1b7c1a[_0x5d6a72]['toString']();if(manager[_0x2333('0x43')](_0x1dfc34)){manager[_0x2333('0x44')](_0x1dfc34);manager[_0x2333('0x45')](_0x1dfc34);logger[_0x2333('0xc')](_0x2333('0x46'),_0x1dfc34);}}logger['info'](_0x2333('0x47'),JSON['stringify'](_0x5a2795));for(_0x5d6a72=0x0;_0x5d6a72<_0x5a2795[_0x2333('0x42')];_0x5d6a72+=0x1){_0x1dfc34=_0x5a2795[_0x5d6a72][_0x2333('0x3f')]();logger[_0x2333('0xc')](_0x2333('0x48'),_0x1dfc34);if(_0x2a6073){logger['info'](_0x2333('0x49'),_0x2a6073);logger[_0x2333('0xc')](JSON[_0x2333('0x27')](_0x460b04[_0x1dfc34]));BPromise[_0x2333('0x4a')]()['then'](handleJob(_0x460b04[_0x1dfc34]));logger[_0x2333('0xc')](_0x2333('0x4b'),_0x460b04[_0x1dfc34][_0x2333('0x18')],_0x460b04[_0x1dfc34]['cron']);}else if(_0x460b04[_0x1dfc34][_0x2333('0x4c')]&&_0x460b04[_0x1dfc34]['active']&&moment()[_0x2333('0x4d')](_0x460b04[_0x1dfc34][_0x2333('0x4e')],_0x460b04[_0x1dfc34][_0x2333('0x4f')])){manager[_0x2333('0x50')](_0x1dfc34,_0x460b04[_0x1dfc34][_0x2333('0x4c')],handleJob(_0x460b04[_0x1dfc34]));manager[_0x2333('0x51')](_0x1dfc34);logger[_0x2333('0xc')](_0x2333('0x52'),_0x460b04[_0x1dfc34][_0x2333('0x18')],_0x460b04[_0x1dfc34][_0x2333('0x4c')]);}else if(manager[_0x2333('0x43')](_0x1dfc34)){manager[_0x2333('0x44')](_0x1dfc34);manager['deleteJob'](_0x1dfc34);logger['info']('stop\x20cron',_0x460b04[_0x1dfc34][_0x2333('0x18')],_0x460b04[_0x1dfc34][_0x2333('0x4c')]);}}for(_0x5d6a72=0x0,_0x1dfc34;_0x5d6a72<_0x3a80f1[_0x2333('0x42')]&&!_0x2a6073;_0x5d6a72+=0x1){_0x1dfc34=_0x3a80f1[_0x5d6a72][_0x2333('0x3f')]();if(manager[_0x2333('0x43')](_0x1dfc34)){if(_0x460b04[_0x1dfc34][_0x2333('0x4c')]&&_0x460b04[_0x1dfc34][_0x2333('0x53')]&&moment()[_0x2333('0x4d')](_0x460b04[_0x1dfc34][_0x2333('0x4e')],_0x460b04[_0x1dfc34][_0x2333('0x4f')])){manager[_0x2333('0x54')](_0x1dfc34,_0x460b04[_0x1dfc34][_0x2333('0x4c')],handleJob(_0x460b04[_0x1dfc34]));logger['info']('update\x20cron',_0x460b04[_0x1dfc34][_0x2333('0x18')],_0x460b04[_0x1dfc34]['cron']);}else{manager[_0x2333('0x44')](_0x1dfc34);manager[_0x2333('0x45')](_0x1dfc34);logger[_0x2333('0xc')](_0x2333('0x55'),_0x460b04[_0x1dfc34]['name'],_0x460b04[_0x1dfc34][_0x2333('0x4c')]);}}}})['catch'](function(_0x3d33cf){logger[_0x2333('0x2f')](JSON[_0x2333('0x27')](_0x3d33cf));});}exports[_0x2333('0x56')]=function(_0x1927b9){return getJobs(_0x1927b9);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};