c4624c9e9233b477546ad46657c50d8287f1223e
[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 _0x5b7f=['cron','active','isBetween','endAt','add','add\x20cron','stop\x20cron','run','start','util','lodash','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','service','host','secure','Smtp','user','format','name','email','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','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','text','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','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b7f,0x15d));var _0xf5b7=function(_0x44f7c2,_0x81dcd8){_0x44f7c2=_0x44f7c2-0x0;var _0x469c9d=_0x5b7f[_0x44f7c2];return _0x469c9d;};'use strict';var fs=require('fs');var util=require(_0xf5b7('0x0'));var path=require('path');var _=require(_0xf5b7('0x1'));var moment=require('moment');var CronJobManager=require(_0xf5b7('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0xf5b7('0x3'));var logger=require(_0xf5b7('0x4'))(_0xf5b7('0x5'));var db=require(_0xf5b7('0x6'))['db'];var analyticCustomReportController=require(_0xf5b7('0x7'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xf5b7('0x8')][_0xf5b7('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4505d6,_0x39d251){return function(){logger[_0xf5b7('0xa')](_0xf5b7('0xb'),_0x4505d6['email']);var _0x4c1175=!![];var _0xd032c0={'tls':{'rejectUnauthorized':![]}};if(_0x4505d6[_0xf5b7('0xc')]['Smtp'][_0xf5b7('0xd')]){_0xd032c0[_0xf5b7('0xd')]=_0x4505d6[_0xf5b7('0xc')]['Smtp'][_0xf5b7('0xd')];}else{_0xd032c0[_0xf5b7('0xe')]=_0x4505d6[_0xf5b7('0xc')]['Smtp']['host'];_0xd032c0['port']=_0x4505d6['MailAccount']['Smtp']['port'];_0xd032c0[_0xf5b7('0xf')]=_0x4505d6[_0xf5b7('0xc')][_0xf5b7('0x10')][_0xf5b7('0xf')];}if(_0x4505d6['MailAccount'][_0xf5b7('0x10')]['authentication']){_0xd032c0['auth']={'user':_0x4505d6[_0xf5b7('0xc')]['Smtp'][_0xf5b7('0x11')],'pass':_0x4505d6[_0xf5b7('0xc')][_0xf5b7('0x10')]['pass']};}var _0xda9ca7={'account':_0xd032c0,'message':{'from':util[_0xf5b7('0x12')]('\x22%s\x22\x20<%s>',_0x4505d6[_0xf5b7('0xc')][_0xf5b7('0x13')],_0x4505d6[_0xf5b7('0xc')][_0xf5b7('0x14')]||_0x4505d6['MailAccount']['Smtp']['user']),'to':_0x4505d6[_0xf5b7('0x14')],'cc':_0x4505d6['cc'],'bcc':_0x4505d6[_0xf5b7('0x15')],'subject':util[_0xf5b7('0x12')](_0xf5b7('0x16'),_0x39d251[_0xf5b7('0x13')],_0x4505d6[_0xf5b7('0x17')],_0x4505d6[_0xf5b7('0x18')])}};var _0x5750e1=path[_0xf5b7('0x19')](__dirname,'../../files/reports');var _0x580a3a=_0x39d251[_0xf5b7('0x1a')];var _0x50fd5f=util[_0xf5b7('0x12')](_0xf5b7('0x1b'),path[_0xf5b7('0x1c')](_0x39d251['savename'],path[_0xf5b7('0x1d')](_0x39d251[_0xf5b7('0x1a')])),_0xf5b7('0x1e'));var _0x3ad6c6=path[_0xf5b7('0x19')](_0x5750e1,_0x580a3a);var _0x34fc63=path['join'](_0x5750e1,_0x50fd5f);if(fs[_0xf5b7('0x1f')](_0x3ad6c6)){_0x39d251['status']=_0xf5b7('0x20');_0xda9ca7[_0xf5b7('0x21')][_0xf5b7('0x22')]=[{'filename':_0x580a3a,'path':_0x3ad6c6}];_0xda9ca7['message']['text']=util[_0xf5b7('0x12')](_0xf5b7('0x23'),JSON[_0xf5b7('0x24')](_0x39d251,null,0x2));}else if(fs[_0xf5b7('0x1f')](_0x34fc63)){_0x39d251['status']=_0xf5b7('0x20');_0xda9ca7['message']['attachments']=[{'filename':_0x50fd5f,'path':_0x34fc63}];}else{_0xda9ca7[_0xf5b7('0x21')][_0xf5b7('0x25')]=_0xf5b7('0x26');if(!_0x4505d6[_0xf5b7('0x27')]){_0x4c1175=![];logger[_0xf5b7('0xa')](_0xf5b7('0x28'));}}if(_0x4c1175){return client[_0xf5b7('0x29')](_0xf5b7('0x2a'),_0xda9ca7)[_0xf5b7('0x2b')](function(_0xdcc626){if(_0xdcc626[_0xf5b7('0x2c')]){return logger[_0xf5b7('0x2c')](_0xf5b7('0x2d'),JSON[_0xf5b7('0x24')](_0xdcc626));}return logger[_0xf5b7('0xa')](_0xf5b7('0x2e'));})['catch'](function(_0xbc1d0){return logger[_0xf5b7('0x2c')](_0xf5b7('0x2d'),JSON[_0xf5b7('0x24')](_0xbc1d0));});}};}function handleError(){return function(_0x12a2e9){return logger['error'](JSON[_0xf5b7('0x24')](_0x12a2e9));};}function handleResult(_0x5b5c59){return function(_0x31988b){logger[_0xf5b7('0xa')](_0xf5b7('0x2f'),JSON[_0xf5b7('0x24')](_0x31988b));if(_0x5b5c59['MailAccount']&&_0x5b5c59[_0xf5b7('0xc')][_0xf5b7('0x10')]&&!_[_0xf5b7('0x30')](_0x5b5c59[_0xf5b7('0x14')])){setTimeout(handleSendEmail(_0x5b5c59,_0x31988b),0x3c*0x3e8);}};}function handleJob(_0x3d1f69){return function(){try{if(_['isNil'](_0x3d1f69['subtractNumber'])){return logger[_0xf5b7('0xa')](_0xf5b7('0x31'));}if(_[_0xf5b7('0x30')](_0x3d1f69[_0xf5b7('0x18')])){return logger[_0xf5b7('0xa')]('subtractUnit\x20null\x20or\x20undefined');}var _0x110cdc={'startDate':moment()['subtract'](_0x3d1f69['subtractNumber'],_0x3d1f69[_0xf5b7('0x18')])[_0xf5b7('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xf5b7('0x12')](_0xf5b7('0x32')),'type':'scheduled','output':_0x3d1f69[_0xf5b7('0x33')],'name':_0x3d1f69['name']};if(!_['isNil'](_0x3d1f69['DefaultReportId'])){logger['info'](_0xf5b7('0x34'),_0x3d1f69[_0xf5b7('0x35')]);return analyticDefaultReportController[_0xf5b7('0x36')]({'id':_0x3d1f69['DefaultReportId']},_0x110cdc)[_0xf5b7('0x2b')](handleResult(_0x3d1f69))[_0xf5b7('0x37')](handleError());}if(!_[_0xf5b7('0x30')](_0x3d1f69[_0xf5b7('0x38')])){logger[_0xf5b7('0xa')](_0xf5b7('0x39'),_0x3d1f69[_0xf5b7('0x38')]);return analyticCustomReportController[_0xf5b7('0x36')]({'id':_0x3d1f69[_0xf5b7('0x38')]},_0x110cdc)[_0xf5b7('0x2b')](handleResult(_0x3d1f69))[_0xf5b7('0x37')](handleError());}}catch(_0x35cdf1){logger['error'](JSON[_0xf5b7('0x24')](_0x35cdf1));}return logger[_0xf5b7('0xa')](_0xf5b7('0x3a'));};}function getJobs(_0x2e2f84){var _0x40911e={};if(_0x2e2f84){_0x40911e['id']=_0x2e2f84;}return db[_0xf5b7('0x3b')][_0xf5b7('0x3c')]({'where':_0x40911e,'include':[{'model':db[_0xf5b7('0xc')],'attributes':['id',_0xf5b7('0x13'),_0xf5b7('0x14')],'include':[{'model':db[_0xf5b7('0x3d')],'as':_0xf5b7('0x10')}]}]})[_0xf5b7('0x2b')](function(_0x420543){var _0x3f599b=_['keys'](manager['jobs']);var _0x1afa9d=_[_0xf5b7('0x3e')](_0x420543,function(_0x29f17f){return _0x29f17f['id'][_0xf5b7('0x3f')]();});var _0x50d6c9=_[_0xf5b7('0x40')](_0x420543,function(_0x45f67e){return _0x45f67e['id'][_0xf5b7('0x3f')]();});var _0x326be5=_0x2e2f84?_0x1afa9d:_[_0xf5b7('0x41')](_0x1afa9d,_0x3f599b);var _0x229922=_[_0xf5b7('0x42')](_0x1afa9d,_0x3f599b);var _0x3e3986=_[_0xf5b7('0x41')](_0x3f599b,_0x1afa9d);var _0x16532c;var _0x528b84;for(_0x16532c=0x0;_0x16532c<_0x3e3986[_0xf5b7('0x43')]&&!_0x2e2f84;_0x16532c+=0x1){_0x528b84=_0x3e3986[_0x16532c]['toString']();if(manager[_0xf5b7('0x44')](_0x528b84)){manager[_0xf5b7('0x45')](_0x528b84);manager[_0xf5b7('0x46')](_0x528b84);logger['info'](_0xf5b7('0x47'),_0x528b84);}}logger[_0xf5b7('0xa')](_0xf5b7('0x48'),JSON[_0xf5b7('0x24')](_0x326be5));for(_0x16532c=0x0;_0x16532c<_0x326be5[_0xf5b7('0x43')];_0x16532c+=0x1){_0x528b84=_0x326be5[_0x16532c][_0xf5b7('0x3f')]();logger[_0xf5b7('0xa')]('index',_0x528b84);if(_0x2e2f84){logger[_0xf5b7('0xa')](_0xf5b7('0x49'),_0x2e2f84);logger['info'](JSON[_0xf5b7('0x24')](_0x50d6c9[_0x528b84]));BPromise[_0xf5b7('0x4a')]()['then'](handleJob(_0x50d6c9[_0x528b84]));logger['info'](_0xf5b7('0x4b'),_0x50d6c9[_0x528b84][_0xf5b7('0x13')],_0x50d6c9[_0x528b84]['cron']);}else if(_0x50d6c9[_0x528b84][_0xf5b7('0x4c')]&&_0x50d6c9[_0x528b84][_0xf5b7('0x4d')]&&moment()[_0xf5b7('0x4e')](_0x50d6c9[_0x528b84]['startAt'],_0x50d6c9[_0x528b84][_0xf5b7('0x4f')])){manager[_0xf5b7('0x50')](_0x528b84,_0x50d6c9[_0x528b84][_0xf5b7('0x4c')],handleJob(_0x50d6c9[_0x528b84]));manager['start'](_0x528b84);logger[_0xf5b7('0xa')](_0xf5b7('0x51'),_0x50d6c9[_0x528b84][_0xf5b7('0x13')],_0x50d6c9[_0x528b84][_0xf5b7('0x4c')]);}else if(manager[_0xf5b7('0x44')](_0x528b84)){manager[_0xf5b7('0x45')](_0x528b84);manager['deleteJob'](_0x528b84);logger[_0xf5b7('0xa')](_0xf5b7('0x52'),_0x50d6c9[_0x528b84]['name'],_0x50d6c9[_0x528b84][_0xf5b7('0x4c')]);}}for(_0x16532c=0x0,_0x528b84;_0x16532c<_0x229922[_0xf5b7('0x43')]&&!_0x2e2f84;_0x16532c+=0x1){_0x528b84=_0x229922[_0x16532c]['toString']();if(manager[_0xf5b7('0x44')](_0x528b84)){if(_0x50d6c9[_0x528b84]['cron']&&_0x50d6c9[_0x528b84][_0xf5b7('0x4d')]&&moment()[_0xf5b7('0x4e')](_0x50d6c9[_0x528b84]['startAt'],_0x50d6c9[_0x528b84][_0xf5b7('0x4f')])){manager['update'](_0x528b84,_0x50d6c9[_0x528b84][_0xf5b7('0x4c')],handleJob(_0x50d6c9[_0x528b84]));logger['info']('update\x20cron',_0x50d6c9[_0x528b84][_0xf5b7('0x13')],_0x50d6c9[_0x528b84][_0xf5b7('0x4c')]);}else{manager[_0xf5b7('0x45')](_0x528b84);manager[_0xf5b7('0x46')](_0x528b84);logger['info'](_0xf5b7('0x52'),_0x50d6c9[_0x528b84][_0xf5b7('0x13')],_0x50d6c9[_0x528b84]['cron']);}}}})[_0xf5b7('0x37')](function(_0x5f3482){logger[_0xf5b7('0x2c')](JSON[_0xf5b7('0x24')](_0x5f3482));});}exports[_0xf5b7('0x53')]=function(_0x500f86){return getJobs(_0x500f86);};exports[_0xf5b7('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};