b559e9abb437be915656349c8f1fd1dabe30c23c
[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 _0x5b66=['catch','CustomReportId','no\x20report\x20id','Schedule','CloudProvider','keys','jobs','map','toString','keyBy','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','start','add\x20cron','startAt','endAt','update','update\x20cron','stop\x20cron','run','util','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','email','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','%s.%s','basename','extname','savename','zip','join','status','Sent','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','existsSync','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','error','error\x20mail','email\x20sent','stringify','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then'];(function(_0x35f83e,_0x30ec55){var _0x249b05=function(_0x2c2fcc){while(--_0x2c2fcc){_0x35f83e['push'](_0x35f83e['shift']());}};_0x249b05(++_0x30ec55);}(_0x5b66,0x7b));var _0x65b6=function(_0x58f439,_0x46e76d){_0x58f439=_0x58f439-0x0;var _0x359f1a=_0x5b66[_0x58f439];return _0x359f1a;};'use strict';var fs=require('fs');var util=require(_0x65b6('0x0'));var path=require('path');var _=require(_0x65b6('0x1'));var moment=require(_0x65b6('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x65b6('0x3'));var BPromise=require(_0x65b6('0x4'));var logger=require(_0x65b6('0x5'))('schedule');var db=require(_0x65b6('0x6'))['db'];var analyticCustomReportController=require(_0x65b6('0x7'));var analyticDefaultReportController=require(_0x65b6('0x8'));var client=jayson[_0x65b6('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1458ef,_0x2190f7){return function(){logger[_0x65b6('0xa')](_0x65b6('0xb'),_0x1458ef['email']);var _0xf11dca=!![];var _0x40a0bd=_0x1458ef[_0x65b6('0xc')][_0x65b6('0xd')]();var _0x5bef1e={'account':_0x40a0bd,'message':{'from':util[_0x65b6('0xe')](_0x65b6('0xf'),_0x1458ef['MailAccount'][_0x65b6('0x10')],_0x1458ef[_0x65b6('0xc')][_0x65b6('0x11')]||_0x1458ef[_0x65b6('0xc')]['Smtp'][_0x65b6('0x12')]),'to':_0x1458ef[_0x65b6('0x11')],'cc':_0x1458ef['cc'],'bcc':_0x1458ef[_0x65b6('0x13')],'subject':util[_0x65b6('0xe')](_0x65b6('0x14'),_0x2190f7['name'],_0x1458ef[_0x65b6('0x15')],_0x1458ef['subtractUnit'])}};var _0x52b870=path['join'](__dirname,_0x65b6('0x16'));var _0x4b3a8d=_0x2190f7['savename'];var _0x5dce84=util[_0x65b6('0xe')](_0x65b6('0x17'),path[_0x65b6('0x18')](_0x2190f7['savename'],path[_0x65b6('0x19')](_0x2190f7[_0x65b6('0x1a')])),_0x65b6('0x1b'));var _0x457641=path['join'](_0x52b870,_0x4b3a8d);var _0x58d315=path[_0x65b6('0x1c')](_0x52b870,_0x5dce84);if(fs['existsSync'](_0x457641)){_0x2190f7[_0x65b6('0x1d')]=_0x65b6('0x1e');_0x5bef1e[_0x65b6('0x1f')][_0x65b6('0x20')]=[{'filename':_0x4b3a8d,'path':_0x457641}];_0x5bef1e[_0x65b6('0x1f')][_0x65b6('0x21')]=util['format'](_0x65b6('0x22'),JSON['stringify'](_0x2190f7,null,0x2));}else if(fs[_0x65b6('0x23')](_0x58d315)){_0x2190f7[_0x65b6('0x1d')]='Sent';_0x5bef1e[_0x65b6('0x1f')]['attachments']=[{'filename':_0x5dce84,'path':_0x58d315}];}else{_0x5bef1e['message'][_0x65b6('0x21')]=_0x65b6('0x24');if(!_0x1458ef[_0x65b6('0x25')]){_0xf11dca=![];logger[_0x65b6('0xa')](_0x65b6('0x26'));}}if(_0xf11dca){return client[_0x65b6('0x27')](_0x65b6('0x28'),_0x5bef1e)['then'](function(_0x2128d9){if(_0x2128d9[_0x65b6('0x29')]){return logger['error'](_0x65b6('0x2a'),JSON['stringify'](_0x2128d9));}return logger[_0x65b6('0xa')](_0x65b6('0x2b'));})['catch'](function(_0x5a3ea2){return logger[_0x65b6('0x29')]('error\x20mail',JSON[_0x65b6('0x2c')](_0x5a3ea2));});}};}function handleError(){return function(_0x2c0a33){return logger[_0x65b6('0x29')](JSON['stringify'](_0x2c0a33));};}function handleResult(_0xf58405){return function(_0xc1ae0a){logger[_0x65b6('0xa')](_0x65b6('0x2d'),JSON[_0x65b6('0x2c')](_0xc1ae0a));if(_0xf58405['MailAccount']&&_0xf58405[_0x65b6('0xc')][_0x65b6('0x2e')]&&!_[_0x65b6('0x2f')](_0xf58405['email'])){setTimeout(handleSendEmail(_0xf58405,_0xc1ae0a),0x3c*0x3e8);}};}function handleJob(_0x49212f){return function(){try{if(_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x15')])){return logger[_0x65b6('0xa')](_0x65b6('0x30'));}if(_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x31')])){return logger[_0x65b6('0xa')](_0x65b6('0x32'));}var _0x4a8c45={'startDate':moment()[_0x65b6('0x33')](_0x49212f[_0x65b6('0x15')],_0x49212f[_0x65b6('0x31')])[_0x65b6('0xe')](_0x65b6('0x34')),'endDate':moment()[_0x65b6('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x65b6('0x35'),'output':_0x49212f[_0x65b6('0x36')],'name':_0x49212f[_0x65b6('0x10')]};if(!_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x37')])){logger[_0x65b6('0xa')](_0x65b6('0x38'),_0x49212f['DefaultReportId']);return analyticDefaultReportController[_0x65b6('0x39')]({'id':_0x49212f[_0x65b6('0x37')]},_0x4a8c45)[_0x65b6('0x3a')](handleResult(_0x49212f))[_0x65b6('0x3b')](handleError());}if(!_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x3c')])){logger[_0x65b6('0xa')]('exec\x20custom\x20report\x20id:%s',_0x49212f['CustomReportId']);return analyticCustomReportController[_0x65b6('0x39')]({'id':_0x49212f['CustomReportId']},_0x4a8c45)[_0x65b6('0x3a')](handleResult(_0x49212f))[_0x65b6('0x3b')](handleError());}}catch(_0x455d45){logger[_0x65b6('0x29')](JSON[_0x65b6('0x2c')](_0x455d45));}return logger[_0x65b6('0xa')](_0x65b6('0x3d'));};}function getJobs(_0xfdcf83){var _0x5a8060={};if(_0xfdcf83){_0x5a8060['id']=_0xfdcf83;}return db[_0x65b6('0x3e')]['findAll']({'where':_0x5a8060,'include':[{'model':db[_0x65b6('0xc')],'attributes':['id','name',_0x65b6('0x11')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x65b6('0x3f')],'as':_0x65b6('0x3f')}]}]}]})[_0x65b6('0x3a')](function(_0xc80ba0){var _0x4517c6=_[_0x65b6('0x40')](manager[_0x65b6('0x41')]);var _0xb51a25=_[_0x65b6('0x42')](_0xc80ba0,function(_0x5d2239){return _0x5d2239['id'][_0x65b6('0x43')]();});var _0x2ac5f2=_[_0x65b6('0x44')](_0xc80ba0,function(_0x12ec9b){return _0x12ec9b['id'][_0x65b6('0x43')]();});var _0x19f4d5=_0xfdcf83?_0xb51a25:_[_0x65b6('0x45')](_0xb51a25,_0x4517c6);var _0x366b0d=_['intersection'](_0xb51a25,_0x4517c6);var _0x12d9b0=_[_0x65b6('0x45')](_0x4517c6,_0xb51a25);var _0x37ae80;var _0x57f9b8;for(_0x37ae80=0x0;_0x37ae80<_0x12d9b0['length']&&!_0xfdcf83;_0x37ae80+=0x1){_0x57f9b8=_0x12d9b0[_0x37ae80][_0x65b6('0x43')]();if(manager[_0x65b6('0x46')](_0x57f9b8)){manager[_0x65b6('0x47')](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x49'),_0x57f9b8);}}logger['info'](_0x65b6('0x4a'),JSON[_0x65b6('0x2c')](_0x19f4d5));for(_0x37ae80=0x0;_0x37ae80<_0x19f4d5[_0x65b6('0x4b')];_0x37ae80+=0x1){_0x57f9b8=_0x19f4d5[_0x37ae80][_0x65b6('0x43')]();logger[_0x65b6('0xa')](_0x65b6('0x4c'),_0x57f9b8);if(_0xfdcf83){logger[_0x65b6('0xa')](_0x65b6('0x4d'),_0xfdcf83);logger['info'](JSON[_0x65b6('0x2c')](_0x2ac5f2[_0x57f9b8]));BPromise[_0x65b6('0x4e')]()[_0x65b6('0x3a')](handleJob(_0x2ac5f2[_0x57f9b8]));logger[_0x65b6('0xa')](_0x65b6('0x4f'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else if(_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]&&_0x2ac5f2[_0x57f9b8][_0x65b6('0x51')]&&moment()[_0x65b6('0x52')](_0x2ac5f2[_0x57f9b8]['startAt'],_0x2ac5f2[_0x57f9b8]['endAt'])){manager['add'](_0x57f9b8,_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')],handleJob(_0x2ac5f2[_0x57f9b8]));manager[_0x65b6('0x53')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x54'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else if(manager[_0x65b6('0x46')](_0x57f9b8)){manager['stop'](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')]('stop\x20cron',_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8]['cron']);}}for(_0x37ae80=0x0,_0x57f9b8;_0x37ae80<_0x366b0d['length']&&!_0xfdcf83;_0x37ae80+=0x1){_0x57f9b8=_0x366b0d[_0x37ae80][_0x65b6('0x43')]();if(manager[_0x65b6('0x46')](_0x57f9b8)){if(_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]&&_0x2ac5f2[_0x57f9b8][_0x65b6('0x51')]&&moment()[_0x65b6('0x52')](_0x2ac5f2[_0x57f9b8][_0x65b6('0x55')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x56')])){manager[_0x65b6('0x57')](_0x57f9b8,_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')],handleJob(_0x2ac5f2[_0x57f9b8]));logger[_0x65b6('0xa')](_0x65b6('0x58'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else{manager['stop'](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x59'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}}}})[_0x65b6('0x3b')](function(_0x5d0c76){logger[_0x65b6('0x29')](JSON[_0x65b6('0x2c')](_0x5d0c76));});}exports[_0x65b6('0x5a')]=function(_0x28a590){return getJobs(_0x28a590);};exports[_0x65b6('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};