6b46928322557f70912fa863fdb785fec9c5cac7
[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 _0x5e56=['basename','extname','zip','existsSync','attachments','message','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','Sent','empty\x20file,\x20email\x20not\x20sent','then','error','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','Schedule','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','my\x20id','cron','active','isBetween','endAt','add','start','add\x20cron','startAt','update','update\x20cron','stop\x20cron','run','util','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','service','MailAccount','host','port','Smtp','secure','authentication','auth','user','pass','bcc','format','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s'];(function(_0x39395a,_0x1edfe4){var _0x168be9=function(_0xfb5dae){while(--_0xfb5dae){_0x39395a['push'](_0x39395a['shift']());}};_0x168be9(++_0x1edfe4);}(_0x5e56,0x143));var _0x65e5=function(_0x274d70,_0x53d47b){_0x274d70=_0x274d70-0x0;var _0x1cb3b5=_0x5e56[_0x274d70];return _0x1cb3b5;};'use strict';var fs=require('fs');var util=require(_0x65e5('0x0'));var path=require('path');var _=require('lodash');var moment=require(_0x65e5('0x1'));var CronJobManager=require(_0x65e5('0x2'));var jayson=require(_0x65e5('0x3'));var BPromise=require(_0x65e5('0x4'));var logger=require('../logger')(_0x65e5('0x5'));var db=require(_0x65e5('0x6'))['db'];var analyticCustomReportController=require(_0x65e5('0x7'));var analyticDefaultReportController=require(_0x65e5('0x8'));var client=jayson['client'][_0x65e5('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3271e9,_0x1f1c3b){return function(){logger[_0x65e5('0xa')](_0x65e5('0xb'),_0x3271e9[_0x65e5('0xc')]);var _0x4897c5=!![];var _0x12c128={'tls':{'rejectUnauthorized':![]}};if(_0x3271e9['MailAccount']['Smtp']['service']){_0x12c128[_0x65e5('0xd')]=_0x3271e9[_0x65e5('0xe')]['Smtp'][_0x65e5('0xd')];}else{_0x12c128[_0x65e5('0xf')]=_0x3271e9[_0x65e5('0xe')]['Smtp'][_0x65e5('0xf')];_0x12c128[_0x65e5('0x10')]=_0x3271e9[_0x65e5('0xe')][_0x65e5('0x11')][_0x65e5('0x10')];_0x12c128['secure']=_0x3271e9[_0x65e5('0xe')]['Smtp'][_0x65e5('0x12')];}if(_0x3271e9[_0x65e5('0xe')][_0x65e5('0x11')][_0x65e5('0x13')]){_0x12c128[_0x65e5('0x14')]={'user':_0x3271e9[_0x65e5('0xe')][_0x65e5('0x11')][_0x65e5('0x15')],'pass':_0x3271e9['MailAccount'][_0x65e5('0x11')][_0x65e5('0x16')]};}var _0x4b9433={'account':_0x12c128,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x3271e9[_0x65e5('0xe')]['name'],_0x3271e9[_0x65e5('0xe')][_0x65e5('0xc')]||_0x3271e9['MailAccount']['Smtp'][_0x65e5('0x15')]),'to':_0x3271e9[_0x65e5('0xc')],'cc':_0x3271e9['cc'],'bcc':_0x3271e9[_0x65e5('0x17')],'subject':util[_0x65e5('0x18')](_0x65e5('0x19'),_0x1f1c3b[_0x65e5('0x1a')],_0x3271e9[_0x65e5('0x1b')],_0x3271e9[_0x65e5('0x1c')])}};var _0x5a22fb=path[_0x65e5('0x1d')](__dirname,_0x65e5('0x1e'));var _0x1e0f13=_0x1f1c3b[_0x65e5('0x1f')];var _0x1327cc=util[_0x65e5('0x18')](_0x65e5('0x20'),path[_0x65e5('0x21')](_0x1f1c3b[_0x65e5('0x1f')],path[_0x65e5('0x22')](_0x1f1c3b['savename'])),_0x65e5('0x23'));var _0x32abad=path['join'](_0x5a22fb,_0x1e0f13);var _0x777c0=path[_0x65e5('0x1d')](_0x5a22fb,_0x1327cc);if(fs[_0x65e5('0x24')](_0x32abad)){_0x1f1c3b['status']='Sent';_0x4b9433['message'][_0x65e5('0x25')]=[{'filename':_0x1e0f13,'path':_0x32abad}];_0x4b9433[_0x65e5('0x26')][_0x65e5('0x27')]=util['format'](_0x65e5('0x28'),JSON[_0x65e5('0x29')](_0x1f1c3b,null,0x2));}else if(fs[_0x65e5('0x24')](_0x777c0)){_0x1f1c3b['status']=_0x65e5('0x2a');_0x4b9433[_0x65e5('0x26')]['attachments']=[{'filename':_0x1327cc,'path':_0x777c0}];}else{_0x4b9433[_0x65e5('0x26')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x3271e9['sendIfEmpty']){_0x4897c5=![];logger['info'](_0x65e5('0x2b'));}}if(_0x4897c5){return client['request']('SendMail',_0x4b9433)[_0x65e5('0x2c')](function(_0x18f584){if(_0x18f584['error']){return logger[_0x65e5('0x2d')]('error\x20mail',JSON[_0x65e5('0x29')](_0x18f584));}return logger[_0x65e5('0xa')](_0x65e5('0x2e'));})[_0x65e5('0x2f')](function(_0x559f20){return logger['error'](_0x65e5('0x30'),JSON[_0x65e5('0x29')](_0x559f20));});}};}function handleError(){return function(_0x152eb6){return logger[_0x65e5('0x2d')](JSON[_0x65e5('0x29')](_0x152eb6));};}function handleResult(_0x35280e){return function(_0x593576){logger['info'](_0x65e5('0x31'),JSON[_0x65e5('0x29')](_0x593576));if(_0x35280e[_0x65e5('0xe')]&&_0x35280e['MailAccount'][_0x65e5('0x11')]&&!_[_0x65e5('0x32')](_0x35280e[_0x65e5('0xc')])){setTimeout(handleSendEmail(_0x35280e,_0x593576),0x3c*0x3e8);}};}function handleJob(_0x53afdd){return function(){try{if(_[_0x65e5('0x32')](_0x53afdd['subtractNumber'])){return logger[_0x65e5('0xa')](_0x65e5('0x33'));}if(_[_0x65e5('0x32')](_0x53afdd[_0x65e5('0x1c')])){return logger['info'](_0x65e5('0x34'));}var _0x46e39f={'startDate':moment()[_0x65e5('0x35')](_0x53afdd['subtractNumber'],_0x53afdd[_0x65e5('0x1c')])['format'](_0x65e5('0x36')),'endDate':moment()[_0x65e5('0x18')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x65e5('0x37'),'output':_0x53afdd[_0x65e5('0x38')],'name':_0x53afdd['name']};if(!_['isNil'](_0x53afdd[_0x65e5('0x39')])){logger['info'](_0x65e5('0x3a'),_0x53afdd[_0x65e5('0x39')]);return analyticDefaultReportController[_0x65e5('0x3b')]({'id':_0x53afdd[_0x65e5('0x39')]},_0x46e39f)[_0x65e5('0x2c')](handleResult(_0x53afdd))[_0x65e5('0x2f')](handleError());}if(!_[_0x65e5('0x32')](_0x53afdd[_0x65e5('0x3c')])){logger[_0x65e5('0xa')](_0x65e5('0x3d'),_0x53afdd['CustomReportId']);return analyticCustomReportController[_0x65e5('0x3b')]({'id':_0x53afdd[_0x65e5('0x3c')]},_0x46e39f)[_0x65e5('0x2c')](handleResult(_0x53afdd))[_0x65e5('0x2f')](handleError());}}catch(_0x4d9ad4){logger[_0x65e5('0x2d')](JSON['stringify'](_0x4d9ad4));}return logger[_0x65e5('0xa')]('no\x20report\x20id');};}function getJobs(_0x580505){var _0x552b8e={};if(_0x580505){_0x552b8e['id']=_0x580505;}return db[_0x65e5('0x3e')]['findAll']({'where':_0x552b8e,'include':[{'model':db['MailAccount'],'attributes':['id',_0x65e5('0x1a'),'email'],'include':[{'model':db[_0x65e5('0x3f')],'as':_0x65e5('0x11')}]}]})[_0x65e5('0x2c')](function(_0x343a3f){var _0x1120c9=_[_0x65e5('0x40')](manager[_0x65e5('0x41')]);var _0x4f7162=_[_0x65e5('0x42')](_0x343a3f,function(_0x5a0e6a){return _0x5a0e6a['id'][_0x65e5('0x43')]();});var _0x22e9e5=_[_0x65e5('0x44')](_0x343a3f,function(_0x3580ae){return _0x3580ae['id'][_0x65e5('0x43')]();});var _0x4b3925=_0x580505?_0x4f7162:_[_0x65e5('0x45')](_0x4f7162,_0x1120c9);var _0x414279=_[_0x65e5('0x46')](_0x4f7162,_0x1120c9);var _0x378b8=_['difference'](_0x1120c9,_0x4f7162);var _0x5b1c41;var _0x2a25a2;for(_0x5b1c41=0x0;_0x5b1c41<_0x378b8[_0x65e5('0x47')]&&!_0x580505;_0x5b1c41+=0x1){_0x2a25a2=_0x378b8[_0x5b1c41][_0x65e5('0x43')]();if(manager[_0x65e5('0x48')](_0x2a25a2)){manager[_0x65e5('0x49')](_0x2a25a2);manager[_0x65e5('0x4a')](_0x2a25a2);logger[_0x65e5('0xa')](_0x65e5('0x4b'),_0x2a25a2);}}logger[_0x65e5('0xa')]('toRun',JSON[_0x65e5('0x29')](_0x4b3925));for(_0x5b1c41=0x0;_0x5b1c41<_0x4b3925[_0x65e5('0x47')];_0x5b1c41+=0x1){_0x2a25a2=_0x4b3925[_0x5b1c41][_0x65e5('0x43')]();logger['info']('index',_0x2a25a2);if(_0x580505){logger[_0x65e5('0xa')](_0x65e5('0x4c'),_0x580505);logger[_0x65e5('0xa')](JSON[_0x65e5('0x29')](_0x22e9e5[_0x2a25a2]));BPromise['resolve']()[_0x65e5('0x2c')](handleJob(_0x22e9e5[_0x2a25a2]));logger[_0x65e5('0xa')]('run\x20job',_0x22e9e5[_0x2a25a2][_0x65e5('0x1a')],_0x22e9e5[_0x2a25a2]['cron']);}else if(_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')]&&_0x22e9e5[_0x2a25a2][_0x65e5('0x4e')]&&moment()[_0x65e5('0x4f')](_0x22e9e5[_0x2a25a2]['startAt'],_0x22e9e5[_0x2a25a2][_0x65e5('0x50')])){manager[_0x65e5('0x51')](_0x2a25a2,_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')],handleJob(_0x22e9e5[_0x2a25a2]));manager[_0x65e5('0x52')](_0x2a25a2);logger[_0x65e5('0xa')](_0x65e5('0x53'),_0x22e9e5[_0x2a25a2][_0x65e5('0x1a')],_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')]);}else if(manager['exists'](_0x2a25a2)){manager['stop'](_0x2a25a2);manager[_0x65e5('0x4a')](_0x2a25a2);logger['info']('stop\x20cron',_0x22e9e5[_0x2a25a2]['name'],_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')]);}}for(_0x5b1c41=0x0,_0x2a25a2;_0x5b1c41<_0x414279[_0x65e5('0x47')]&&!_0x580505;_0x5b1c41+=0x1){_0x2a25a2=_0x414279[_0x5b1c41][_0x65e5('0x43')]();if(manager[_0x65e5('0x48')](_0x2a25a2)){if(_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')]&&_0x22e9e5[_0x2a25a2][_0x65e5('0x4e')]&&moment()[_0x65e5('0x4f')](_0x22e9e5[_0x2a25a2][_0x65e5('0x54')],_0x22e9e5[_0x2a25a2]['endAt'])){manager[_0x65e5('0x55')](_0x2a25a2,_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')],handleJob(_0x22e9e5[_0x2a25a2]));logger[_0x65e5('0xa')](_0x65e5('0x56'),_0x22e9e5[_0x2a25a2][_0x65e5('0x1a')],_0x22e9e5[_0x2a25a2]['cron']);}else{manager[_0x65e5('0x49')](_0x2a25a2);manager[_0x65e5('0x4a')](_0x2a25a2);logger[_0x65e5('0xa')](_0x65e5('0x57'),_0x22e9e5[_0x2a25a2]['name'],_0x22e9e5[_0x2a25a2][_0x65e5('0x4d')]);}}}})[_0x65e5('0x2f')](function(_0x5559ab){logger[_0x65e5('0x2d')](JSON[_0x65e5('0x29')](_0x5559ab));});}exports[_0x65e5('0x58')]=function(_0x8bd735){return getJobs(_0x8bd735);};exports[_0x65e5('0x52')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};