419a4af1559f0fa37f4ad703bc45f5c167c3a100
[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 _0xba4a=['Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','service','Smtp','host','port','secure','authentication','auth','pass','format','\x22%s\x22\x20<%s>','name','email','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','status','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','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','then','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtract','YYYY-MM-DD\x20HH:mm:ss','exec\x20defaul\x20report\x20id:%s','runReport','DefaultReportId','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','keys','jobs','map','toString','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','add','start','update','update\x20cron','stop\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','info'];(function(_0x262a91,_0x4d3739){var _0x5dcb6b=function(_0x5df927){while(--_0x5df927){_0x262a91['push'](_0x262a91['shift']());}};_0x5dcb6b(++_0x4d3739);}(_0xba4a,0x15c));var _0xaba4=function(_0x4dfcc1,_0x30f0f5){_0x4dfcc1=_0x4dfcc1-0x0;var _0x588569=_0xba4a[_0x4dfcc1];return _0x588569;};'use strict';var fs=require('fs');var util=require(_0xaba4('0x0'));var path=require(_0xaba4('0x1'));var _=require(_0xaba4('0x2'));var moment=require(_0xaba4('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xaba4('0x4'));var BPromise=require(_0xaba4('0x5'));var logger=require(_0xaba4('0x6'))(_0xaba4('0x7'));var db=require(_0xaba4('0x8'))['db'];var analyticCustomReportController=require(_0xaba4('0x9'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xaba4('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x7da3b5,_0x28d082){return function(){logger[_0xaba4('0xb')](_0xaba4('0xc'),_0x7da3b5['email']);var _0x1b8788=!![];var _0x265ee5={'tls':{'rejectUnauthorized':![]}};if(_0x7da3b5[_0xaba4('0xd')]['Smtp'][_0xaba4('0xe')]){_0x265ee5[_0xaba4('0xe')]=_0x7da3b5[_0xaba4('0xd')][_0xaba4('0xf')][_0xaba4('0xe')];}else{_0x265ee5[_0xaba4('0x10')]=_0x7da3b5[_0xaba4('0xd')][_0xaba4('0xf')][_0xaba4('0x10')];_0x265ee5[_0xaba4('0x11')]=_0x7da3b5['MailAccount']['Smtp']['port'];_0x265ee5['secure']=_0x7da3b5[_0xaba4('0xd')][_0xaba4('0xf')][_0xaba4('0x12')];}if(_0x7da3b5['MailAccount'][_0xaba4('0xf')][_0xaba4('0x13')]){_0x265ee5[_0xaba4('0x14')]={'user':_0x7da3b5[_0xaba4('0xd')]['Smtp']['user'],'pass':_0x7da3b5[_0xaba4('0xd')]['Smtp'][_0xaba4('0x15')]};}var _0x462e89={'account':_0x265ee5,'message':{'from':util[_0xaba4('0x16')](_0xaba4('0x17'),_0x7da3b5[_0xaba4('0xd')][_0xaba4('0x18')],_0x7da3b5[_0xaba4('0xd')][_0xaba4('0x19')]||_0x7da3b5[_0xaba4('0xd')]['Smtp'][_0xaba4('0x1a')]),'to':_0x7da3b5[_0xaba4('0x19')],'cc':_0x7da3b5['cc'],'bcc':_0x7da3b5[_0xaba4('0x1b')],'subject':util[_0xaba4('0x16')](_0xaba4('0x1c'),_0x28d082[_0xaba4('0x18')],_0x7da3b5['subtractNumber'],_0x7da3b5[_0xaba4('0x1d')])}};var _0x2bb40c=path[_0xaba4('0x1e')](__dirname,_0xaba4('0x1f'));var _0x504232=_0x28d082[_0xaba4('0x20')];var _0x4429d8=util[_0xaba4('0x16')]('%s.%s',path[_0xaba4('0x21')](_0x28d082[_0xaba4('0x20')],path[_0xaba4('0x22')](_0x28d082[_0xaba4('0x20')])),_0xaba4('0x23'));var _0x3c5805=path[_0xaba4('0x1e')](_0x2bb40c,_0x504232);var _0x3486ec=path[_0xaba4('0x1e')](_0x2bb40c,_0x4429d8);if(fs[_0xaba4('0x24')](_0x3c5805)){_0x28d082[_0xaba4('0x25')]='Sent';_0x462e89['message'][_0xaba4('0x26')]=[{'filename':_0x504232,'path':_0x3c5805}];_0x462e89[_0xaba4('0x27')][_0xaba4('0x28')]=util[_0xaba4('0x16')](_0xaba4('0x29'),JSON[_0xaba4('0x2a')](_0x28d082,null,0x2));}else if(fs[_0xaba4('0x24')](_0x3486ec)){_0x28d082[_0xaba4('0x25')]='Sent';_0x462e89['message'][_0xaba4('0x26')]=[{'filename':_0x4429d8,'path':_0x3486ec}];}else{_0x462e89[_0xaba4('0x27')][_0xaba4('0x28')]=_0xaba4('0x2b');if(!_0x7da3b5[_0xaba4('0x2c')]){_0x1b8788=![];logger[_0xaba4('0xb')](_0xaba4('0x2d'));}}if(_0x1b8788){return client[_0xaba4('0x2e')]('SendMail',_0x462e89)[_0xaba4('0x2f')](function(_0x9ee6bf){if(_0x9ee6bf[_0xaba4('0x30')]){return logger[_0xaba4('0x30')](_0xaba4('0x31'),JSON[_0xaba4('0x2a')](_0x9ee6bf));}return logger[_0xaba4('0xb')](_0xaba4('0x32'));})['catch'](function(_0x58bebf){return logger[_0xaba4('0x30')]('error\x20mail',JSON[_0xaba4('0x2a')](_0x58bebf));});}};}function handleError(){return function(_0x2c3138){return logger['error'](JSON['stringify'](_0x2c3138));};}function handleResult(_0x2de847){return function(_0x1c507e){logger[_0xaba4('0xb')](_0xaba4('0x33'),JSON['stringify'](_0x1c507e));if(_0x2de847[_0xaba4('0xd')]&&_0x2de847['MailAccount'][_0xaba4('0xf')]&&!_[_0xaba4('0x34')](_0x2de847[_0xaba4('0x19')])){setTimeout(handleSendEmail(_0x2de847,_0x1c507e),0x3c*0x3e8);}};}function handleJob(_0x4dee31){return function(){try{if(_[_0xaba4('0x34')](_0x4dee31[_0xaba4('0x35')])){return logger['info']('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xaba4('0x34')](_0x4dee31['subtractUnit'])){return logger[_0xaba4('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0x543fcb={'startDate':moment()[_0xaba4('0x36')](_0x4dee31['subtractNumber'],_0x4dee31[_0xaba4('0x1d')])[_0xaba4('0x16')](_0xaba4('0x37')),'endDate':moment()[_0xaba4('0x16')](_0xaba4('0x37')),'type':'scheduled','output':_0x4dee31['output'],'name':_0x4dee31[_0xaba4('0x18')]};if(!_['isNil'](_0x4dee31['DefaultReportId'])){logger[_0xaba4('0xb')](_0xaba4('0x38'),_0x4dee31['DefaultReportId']);return analyticDefaultReportController[_0xaba4('0x39')]({'id':_0x4dee31[_0xaba4('0x3a')]},_0x543fcb)['then'](handleResult(_0x4dee31))[_0xaba4('0x3b')](handleError());}if(!_[_0xaba4('0x34')](_0x4dee31['CustomReportId'])){logger[_0xaba4('0xb')](_0xaba4('0x3c'),_0x4dee31[_0xaba4('0x3d')]);return analyticCustomReportController[_0xaba4('0x39')]({'id':_0x4dee31[_0xaba4('0x3d')]},_0x543fcb)['then'](handleResult(_0x4dee31))[_0xaba4('0x3b')](handleError());}}catch(_0x18d00f){logger[_0xaba4('0x30')](JSON[_0xaba4('0x2a')](_0x18d00f));}return logger['info'](_0xaba4('0x3e'));};}function getJobs(_0x2e5e4b){var _0x25c912={};if(_0x2e5e4b){_0x25c912['id']=_0x2e5e4b;}return db[_0xaba4('0x3f')]['findAll']({'where':_0x25c912,'include':[{'model':db[_0xaba4('0xd')],'attributes':['id',_0xaba4('0x18'),_0xaba4('0x19')],'include':[{'model':db['MailServerOut'],'as':_0xaba4('0xf')}]}]})[_0xaba4('0x2f')](function(_0xb2aa7c){var _0x30e8fa=_[_0xaba4('0x40')](manager[_0xaba4('0x41')]);var _0x57b7ef=_[_0xaba4('0x42')](_0xb2aa7c,function(_0x4b1833){return _0x4b1833['id'][_0xaba4('0x43')]();});var _0x50d285=_['keyBy'](_0xb2aa7c,function(_0x25c153){return _0x25c153['id'][_0xaba4('0x43')]();});var _0x33267c=_0x2e5e4b?_0x57b7ef:_[_0xaba4('0x44')](_0x57b7ef,_0x30e8fa);var _0x5ddb6a=_[_0xaba4('0x45')](_0x57b7ef,_0x30e8fa);var _0x4302f9=_[_0xaba4('0x44')](_0x30e8fa,_0x57b7ef);var _0x561f04;var _0x2f87b0;for(_0x561f04=0x0;_0x561f04<_0x4302f9[_0xaba4('0x46')]&&!_0x2e5e4b;_0x561f04+=0x1){_0x2f87b0=_0x4302f9[_0x561f04][_0xaba4('0x43')]();if(manager[_0xaba4('0x47')](_0x2f87b0)){manager[_0xaba4('0x48')](_0x2f87b0);manager[_0xaba4('0x49')](_0x2f87b0);logger[_0xaba4('0xb')](_0xaba4('0x4a'),_0x2f87b0);}}logger[_0xaba4('0xb')](_0xaba4('0x4b'),JSON[_0xaba4('0x2a')](_0x33267c));for(_0x561f04=0x0;_0x561f04<_0x33267c[_0xaba4('0x46')];_0x561f04+=0x1){_0x2f87b0=_0x33267c[_0x561f04][_0xaba4('0x43')]();logger['info'](_0xaba4('0x4c'),_0x2f87b0);if(_0x2e5e4b){logger[_0xaba4('0xb')](_0xaba4('0x4d'),_0x2e5e4b);logger[_0xaba4('0xb')](JSON['stringify'](_0x50d285[_0x2f87b0]));BPromise['resolve']()['then'](handleJob(_0x50d285[_0x2f87b0]));logger[_0xaba4('0xb')](_0xaba4('0x4e'),_0x50d285[_0x2f87b0]['name'],_0x50d285[_0x2f87b0][_0xaba4('0x4f')]);}else if(_0x50d285[_0x2f87b0][_0xaba4('0x4f')]&&_0x50d285[_0x2f87b0][_0xaba4('0x50')]&&moment()[_0xaba4('0x51')](_0x50d285[_0x2f87b0][_0xaba4('0x52')],_0x50d285[_0x2f87b0][_0xaba4('0x53')])){manager[_0xaba4('0x54')](_0x2f87b0,_0x50d285[_0x2f87b0][_0xaba4('0x4f')],handleJob(_0x50d285[_0x2f87b0]));manager[_0xaba4('0x55')](_0x2f87b0);logger[_0xaba4('0xb')]('add\x20cron',_0x50d285[_0x2f87b0][_0xaba4('0x18')],_0x50d285[_0x2f87b0][_0xaba4('0x4f')]);}else if(manager[_0xaba4('0x47')](_0x2f87b0)){manager['stop'](_0x2f87b0);manager[_0xaba4('0x49')](_0x2f87b0);logger['info']('stop\x20cron',_0x50d285[_0x2f87b0][_0xaba4('0x18')],_0x50d285[_0x2f87b0][_0xaba4('0x4f')]);}}for(_0x561f04=0x0,_0x2f87b0;_0x561f04<_0x5ddb6a[_0xaba4('0x46')]&&!_0x2e5e4b;_0x561f04+=0x1){_0x2f87b0=_0x5ddb6a[_0x561f04][_0xaba4('0x43')]();if(manager[_0xaba4('0x47')](_0x2f87b0)){if(_0x50d285[_0x2f87b0]['cron']&&_0x50d285[_0x2f87b0][_0xaba4('0x50')]&&moment()[_0xaba4('0x51')](_0x50d285[_0x2f87b0][_0xaba4('0x52')],_0x50d285[_0x2f87b0][_0xaba4('0x53')])){manager[_0xaba4('0x56')](_0x2f87b0,_0x50d285[_0x2f87b0][_0xaba4('0x4f')],handleJob(_0x50d285[_0x2f87b0]));logger['info'](_0xaba4('0x57'),_0x50d285[_0x2f87b0][_0xaba4('0x18')],_0x50d285[_0x2f87b0]['cron']);}else{manager[_0xaba4('0x48')](_0x2f87b0);manager[_0xaba4('0x49')](_0x2f87b0);logger[_0xaba4('0xb')](_0xaba4('0x58'),_0x50d285[_0x2f87b0][_0xaba4('0x18')],_0x50d285[_0x2f87b0]['cron']);}}}})[_0xaba4('0x3b')](function(_0x2443e1){logger[_0xaba4('0x30')](JSON[_0xaba4('0x2a')](_0x2443e1));});}exports[_0xaba4('0x59')]=function(_0x4c3da7){return getJobs(_0x4c3da7);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};