Built motion from commit 9d7072cc.|2.5.39
[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 _0xa842=['Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','auth','\x22%s\x22\x20<%s>','name','user','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','%s.%s','extname','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','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','catch','data','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','map','toString','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','my\x20id','resolve','run\x20job','cron','endAt','start','add\x20cron','stop','isBetween','startAt','update\x20cron','stop\x20cron','run','lodash','moment','cron-job-manager','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xa842,0x1a5));var _0x2a84=function(_0x4871b7,_0x1da54e){_0x4871b7=_0x4871b7-0x0;var _0x43e1e2=_0xa842[_0x4871b7];return _0x43e1e2;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require(_0x2a84('0x0'));var moment=require(_0x2a84('0x1'));var CronJobManager=require(_0x2a84('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0x2a84('0x3'));var logger=require(_0x2a84('0x4'))('schedule');var db=require(_0x2a84('0x5'))['db'];var analyticCustomReportController=require(_0x2a84('0x6'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x2a84('0x7')][_0x2a84('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x513ed9,_0x3831ab){return function(){logger['info'](_0x2a84('0x9'),_0x513ed9[_0x2a84('0xa')]);var _0x3b61d7=!![];var _0x5c0fd4={'tls':{'rejectUnauthorized':![]}};if(_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')][_0x2a84('0xd')]){_0x5c0fd4[_0x2a84('0xd')]=_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')][_0x2a84('0xd')];}else{_0x5c0fd4[_0x2a84('0xe')]=_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')][_0x2a84('0xe')];_0x5c0fd4[_0x2a84('0xf')]=_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')]['port'];_0x5c0fd4['secure']=_0x513ed9[_0x2a84('0xb')]['Smtp'][_0x2a84('0x10')];}if(_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')]['authentication']){_0x5c0fd4[_0x2a84('0x11')]={'user':_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')]['user'],'pass':_0x513ed9[_0x2a84('0xb')]['Smtp']['pass']};}var _0x167e44={'account':_0x5c0fd4,'message':{'from':util['format'](_0x2a84('0x12'),_0x513ed9[_0x2a84('0xb')][_0x2a84('0x13')],_0x513ed9[_0x2a84('0xb')][_0x2a84('0xa')]||_0x513ed9[_0x2a84('0xb')][_0x2a84('0xc')][_0x2a84('0x14')]),'to':_0x513ed9[_0x2a84('0xa')],'cc':_0x513ed9['cc'],'bcc':_0x513ed9[_0x2a84('0x15')],'subject':util[_0x2a84('0x16')](_0x2a84('0x17'),_0x3831ab[_0x2a84('0x13')],_0x513ed9['subtractNumber'],_0x513ed9[_0x2a84('0x18')])}};var _0x143be8=path[_0x2a84('0x19')](__dirname,_0x2a84('0x1a'));var _0x5d1c62=_0x3831ab['savename'];var _0x4a914f=util[_0x2a84('0x16')](_0x2a84('0x1b'),path['basename'](_0x3831ab['savename'],path[_0x2a84('0x1c')](_0x3831ab['savename'])),_0x2a84('0x1d'));var _0x465aac=path[_0x2a84('0x19')](_0x143be8,_0x5d1c62);var _0x4dad29=path[_0x2a84('0x19')](_0x143be8,_0x4a914f);if(fs['existsSync'](_0x465aac)){_0x3831ab[_0x2a84('0x1e')]=_0x2a84('0x1f');_0x167e44[_0x2a84('0x20')][_0x2a84('0x21')]=[{'filename':_0x5d1c62,'path':_0x465aac}];_0x167e44[_0x2a84('0x20')]['text']=util[_0x2a84('0x16')](_0x2a84('0x22'),JSON[_0x2a84('0x23')](_0x3831ab,null,0x2));}else if(fs[_0x2a84('0x24')](_0x4dad29)){_0x3831ab[_0x2a84('0x1e')]=_0x2a84('0x1f');_0x167e44[_0x2a84('0x20')][_0x2a84('0x21')]=[{'filename':_0x4a914f,'path':_0x4dad29}];}else{_0x167e44[_0x2a84('0x20')][_0x2a84('0x25')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x513ed9[_0x2a84('0x26')]){_0x3b61d7=![];logger[_0x2a84('0x27')](_0x2a84('0x28'));}}if(_0x3b61d7){return client[_0x2a84('0x29')](_0x2a84('0x2a'),_0x167e44)[_0x2a84('0x2b')](function(_0x481461){if(_0x481461['error']){return logger[_0x2a84('0x2c')](_0x2a84('0x2d'),JSON[_0x2a84('0x23')](_0x481461));}return logger['info']('email\x20sent');})[_0x2a84('0x2e')](function(_0x2cd89e){return logger[_0x2a84('0x2c')]('error\x20mail',JSON[_0x2a84('0x23')](_0x2cd89e));});}};}function handleError(){return function(_0x383dd0){return logger[_0x2a84('0x2c')](JSON['stringify'](_0x383dd0));};}function handleResult(_0x102d87){return function(_0x4ccdc7){logger[_0x2a84('0x27')](_0x2a84('0x2f'),JSON[_0x2a84('0x23')](_0x4ccdc7));if(_0x102d87[_0x2a84('0xb')]&&_0x102d87[_0x2a84('0xb')][_0x2a84('0xc')]&&!_['isNil'](_0x102d87[_0x2a84('0xa')])){setTimeout(handleSendEmail(_0x102d87,_0x4ccdc7),0x3c*0x3e8);}};}function handleJob(_0x2b7e76){return function(){try{if(_[_0x2a84('0x30')](_0x2b7e76[_0x2a84('0x31')])){return logger[_0x2a84('0x27')](_0x2a84('0x32'));}if(_['isNil'](_0x2b7e76[_0x2a84('0x18')])){return logger[_0x2a84('0x27')](_0x2a84('0x33'));}var _0x316980={'startDate':moment()[_0x2a84('0x34')](_0x2b7e76[_0x2a84('0x31')],_0x2b7e76[_0x2a84('0x18')])[_0x2a84('0x16')](_0x2a84('0x35')),'endDate':moment()[_0x2a84('0x16')](_0x2a84('0x35')),'type':_0x2a84('0x36'),'output':_0x2b7e76[_0x2a84('0x37')],'name':_0x2b7e76[_0x2a84('0x13')]};if(!_[_0x2a84('0x30')](_0x2b7e76[_0x2a84('0x38')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x2b7e76[_0x2a84('0x38')]);return analyticDefaultReportController[_0x2a84('0x39')]({'id':_0x2b7e76[_0x2a84('0x38')]},_0x316980)[_0x2a84('0x2b')](handleResult(_0x2b7e76))[_0x2a84('0x2e')](handleError());}if(!_[_0x2a84('0x30')](_0x2b7e76[_0x2a84('0x3a')])){logger[_0x2a84('0x27')](_0x2a84('0x3b'),_0x2b7e76[_0x2a84('0x3a')]);return analyticCustomReportController[_0x2a84('0x39')]({'id':_0x2b7e76[_0x2a84('0x3a')]},_0x316980)[_0x2a84('0x2b')](handleResult(_0x2b7e76))[_0x2a84('0x2e')](handleError());}}catch(_0x59c730){logger['error'](JSON[_0x2a84('0x23')](_0x59c730));}return logger['info'](_0x2a84('0x3c'));};}function getJobs(_0x31313c){var _0x3334e8={};if(_0x31313c){_0x3334e8['id']=_0x31313c;}return db[_0x2a84('0x3d')][_0x2a84('0x3e')]({'where':_0x3334e8,'include':[{'model':db['MailAccount'],'attributes':['id',_0x2a84('0x13'),_0x2a84('0xa')],'include':[{'model':db[_0x2a84('0x3f')],'as':'Smtp'}]}]})['then'](function(_0x4e3790){var _0x84be22=_['keys'](manager['jobs']);var _0x203aa9=_[_0x2a84('0x40')](_0x4e3790,function(_0x164678){return _0x164678['id'][_0x2a84('0x41')]();});var _0x35694a=_['keyBy'](_0x4e3790,function(_0x460a39){return _0x460a39['id']['toString']();});var _0x9a8798=_0x31313c?_0x203aa9:_[_0x2a84('0x42')](_0x203aa9,_0x84be22);var _0xc2a56a=_[_0x2a84('0x43')](_0x203aa9,_0x84be22);var _0x20d034=_[_0x2a84('0x42')](_0x84be22,_0x203aa9);var _0x64d053;var _0x53e394;for(_0x64d053=0x0;_0x64d053<_0x20d034[_0x2a84('0x44')]&&!_0x31313c;_0x64d053+=0x1){_0x53e394=_0x20d034[_0x64d053]['toString']();if(manager[_0x2a84('0x45')](_0x53e394)){manager['stop'](_0x53e394);manager[_0x2a84('0x46')](_0x53e394);logger[_0x2a84('0x27')](_0x2a84('0x47'),_0x53e394);}}logger[_0x2a84('0x27')](_0x2a84('0x48'),JSON[_0x2a84('0x23')](_0x9a8798));for(_0x64d053=0x0;_0x64d053<_0x9a8798[_0x2a84('0x44')];_0x64d053+=0x1){_0x53e394=_0x9a8798[_0x64d053][_0x2a84('0x41')]();logger[_0x2a84('0x27')]('index',_0x53e394);if(_0x31313c){logger[_0x2a84('0x27')](_0x2a84('0x49'),_0x31313c);logger[_0x2a84('0x27')](JSON[_0x2a84('0x23')](_0x35694a[_0x53e394]));BPromise[_0x2a84('0x4a')]()[_0x2a84('0x2b')](handleJob(_0x35694a[_0x53e394]));logger[_0x2a84('0x27')](_0x2a84('0x4b'),_0x35694a[_0x53e394]['name'],_0x35694a[_0x53e394]['cron']);}else if(_0x35694a[_0x53e394][_0x2a84('0x4c')]&&_0x35694a[_0x53e394]['active']&&moment()['isBetween'](_0x35694a[_0x53e394]['startAt'],_0x35694a[_0x53e394][_0x2a84('0x4d')])){manager['add'](_0x53e394,_0x35694a[_0x53e394][_0x2a84('0x4c')],handleJob(_0x35694a[_0x53e394]));manager[_0x2a84('0x4e')](_0x53e394);logger[_0x2a84('0x27')](_0x2a84('0x4f'),_0x35694a[_0x53e394][_0x2a84('0x13')],_0x35694a[_0x53e394][_0x2a84('0x4c')]);}else if(manager[_0x2a84('0x45')](_0x53e394)){manager[_0x2a84('0x50')](_0x53e394);manager['deleteJob'](_0x53e394);logger[_0x2a84('0x27')]('stop\x20cron',_0x35694a[_0x53e394][_0x2a84('0x13')],_0x35694a[_0x53e394][_0x2a84('0x4c')]);}}for(_0x64d053=0x0,_0x53e394;_0x64d053<_0xc2a56a[_0x2a84('0x44')]&&!_0x31313c;_0x64d053+=0x1){_0x53e394=_0xc2a56a[_0x64d053][_0x2a84('0x41')]();if(manager['exists'](_0x53e394)){if(_0x35694a[_0x53e394]['cron']&&_0x35694a[_0x53e394]['active']&&moment()[_0x2a84('0x51')](_0x35694a[_0x53e394][_0x2a84('0x52')],_0x35694a[_0x53e394][_0x2a84('0x4d')])){manager['update'](_0x53e394,_0x35694a[_0x53e394][_0x2a84('0x4c')],handleJob(_0x35694a[_0x53e394]));logger[_0x2a84('0x27')](_0x2a84('0x53'),_0x35694a[_0x53e394][_0x2a84('0x13')],_0x35694a[_0x53e394]['cron']);}else{manager[_0x2a84('0x50')](_0x53e394);manager[_0x2a84('0x46')](_0x53e394);logger[_0x2a84('0x27')](_0x2a84('0x54'),_0x35694a[_0x53e394][_0x2a84('0x13')],_0x35694a[_0x53e394][_0x2a84('0x4c')]);}}}})[_0x2a84('0x2e')](function(_0x2febc3){logger['error'](JSON['stringify'](_0x2febc3));});}exports[_0x2a84('0x55')]=function(_0x502d69){return getJobs(_0x502d69);};exports[_0x2a84('0x4e')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};