Built motion from commit d5e4af8c.|2.6.23
[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 _0x9a77=['then','error','catch','error\x20mail','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','toString','keyBy','difference','intersection','length','exists','stop','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','deleteJob','update','update\x20cron','stop\x20cron','run','start','util','path','lodash','moment','cron-job-manager','jayson/promise','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','name','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','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','stringify','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail'];(function(_0x30a629,_0xdd2c74){var _0x130d61=function(_0x578b1c){while(--_0x578b1c){_0x30a629['push'](_0x30a629['shift']());}};_0x130d61(++_0xdd2c74);}(_0x9a77,0x143));var _0x79a7=function(_0x5aa6ca,_0x4780cd){_0x5aa6ca=_0x5aa6ca-0x0;var _0x397e30=_0x9a77[_0x5aa6ca];return _0x397e30;};'use strict';var fs=require('fs');var util=require(_0x79a7('0x0'));var path=require(_0x79a7('0x1'));var _=require(_0x79a7('0x2'));var moment=require(_0x79a7('0x3'));var CronJobManager=require(_0x79a7('0x4'));var jayson=require(_0x79a7('0x5'));var BPromise=require('bluebird');var logger=require(_0x79a7('0x6'))('schedule');var db=require(_0x79a7('0x7'))['db'];var analyticCustomReportController=require(_0x79a7('0x8'));var analyticDefaultReportController=require(_0x79a7('0x9'));var client=jayson[_0x79a7('0xa')][_0x79a7('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x423d04,_0x254013){return function(){logger['info'](_0x79a7('0xc'),_0x423d04[_0x79a7('0xd')]);var _0x20ebed=!![];var _0x3cb234=_0x423d04['MailAccount'][_0x79a7('0xe')]();var _0x1e9ecb={'account':_0x3cb234,'message':{'from':util[_0x79a7('0xf')](_0x79a7('0x10'),_0x423d04[_0x79a7('0x11')][_0x79a7('0x12')],_0x423d04[_0x79a7('0x11')][_0x79a7('0xd')]||_0x423d04[_0x79a7('0x11')][_0x79a7('0x13')][_0x79a7('0x14')]),'to':_0x423d04['email'],'cc':_0x423d04['cc'],'bcc':_0x423d04[_0x79a7('0x15')],'subject':util[_0x79a7('0xf')](_0x79a7('0x16'),_0x254013[_0x79a7('0x12')],_0x423d04[_0x79a7('0x17')],_0x423d04[_0x79a7('0x18')])}};var _0x4fd487=path[_0x79a7('0x19')](__dirname,_0x79a7('0x1a'));var _0x16b83f=_0x254013[_0x79a7('0x1b')];var _0x59dc0f=util['format'](_0x79a7('0x1c'),path[_0x79a7('0x1d')](_0x254013[_0x79a7('0x1b')],path[_0x79a7('0x1e')](_0x254013[_0x79a7('0x1b')])),_0x79a7('0x1f'));var _0x55ea08=path[_0x79a7('0x19')](_0x4fd487,_0x16b83f);var _0x16a3a4=path[_0x79a7('0x19')](_0x4fd487,_0x59dc0f);if(fs[_0x79a7('0x20')](_0x55ea08)){_0x254013['status']='Sent';_0x1e9ecb[_0x79a7('0x21')][_0x79a7('0x22')]=[{'filename':_0x16b83f,'path':_0x55ea08}];_0x1e9ecb[_0x79a7('0x21')][_0x79a7('0x23')]=util['format'](_0x79a7('0x24'),JSON[_0x79a7('0x25')](_0x254013,null,0x2));}else if(fs['existsSync'](_0x16a3a4)){_0x254013['status']=_0x79a7('0x26');_0x1e9ecb[_0x79a7('0x21')][_0x79a7('0x22')]=[{'filename':_0x59dc0f,'path':_0x16a3a4}];}else{_0x1e9ecb[_0x79a7('0x21')][_0x79a7('0x23')]=_0x79a7('0x27');if(!_0x423d04[_0x79a7('0x28')]){_0x20ebed=![];logger[_0x79a7('0x29')](_0x79a7('0x2a'));}}if(_0x20ebed){return client[_0x79a7('0x2b')](_0x79a7('0x2c'),_0x1e9ecb)[_0x79a7('0x2d')](function(_0x258ae5){if(_0x258ae5[_0x79a7('0x2e')]){return logger[_0x79a7('0x2e')]('error\x20mail',JSON[_0x79a7('0x25')](_0x258ae5));}return logger[_0x79a7('0x29')]('email\x20sent');})[_0x79a7('0x2f')](function(_0x1fe395){return logger[_0x79a7('0x2e')](_0x79a7('0x30'),JSON[_0x79a7('0x25')](_0x1fe395));});}};}function handleError(){return function(_0x49ba41){return logger[_0x79a7('0x2e')](JSON[_0x79a7('0x25')](_0x49ba41));};}function handleResult(_0x14c7d7){return function(_0x343991){logger[_0x79a7('0x29')]('data',JSON[_0x79a7('0x25')](_0x343991));if(_0x14c7d7[_0x79a7('0x11')]&&_0x14c7d7['MailAccount'][_0x79a7('0x13')]&&!_[_0x79a7('0x31')](_0x14c7d7[_0x79a7('0xd')])){setTimeout(handleSendEmail(_0x14c7d7,_0x343991),0x3c*0x3e8);}};}function handleJob(_0x4baf6a){return function(){try{if(_[_0x79a7('0x31')](_0x4baf6a['subtractNumber'])){return logger[_0x79a7('0x29')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x79a7('0x31')](_0x4baf6a[_0x79a7('0x18')])){return logger['info'](_0x79a7('0x32'));}var _0x28b859={'startDate':moment()[_0x79a7('0x33')](_0x4baf6a[_0x79a7('0x17')],_0x4baf6a[_0x79a7('0x18')])['format'](_0x79a7('0x34')),'endDate':moment()[_0x79a7('0xf')](_0x79a7('0x34')),'type':'scheduled','output':_0x4baf6a[_0x79a7('0x35')],'name':_0x4baf6a[_0x79a7('0x12')]};if(!_[_0x79a7('0x31')](_0x4baf6a['DefaultReportId'])){logger[_0x79a7('0x29')](_0x79a7('0x36'),_0x4baf6a[_0x79a7('0x37')]);return analyticDefaultReportController[_0x79a7('0x38')]({'id':_0x4baf6a[_0x79a7('0x37')]},_0x28b859)['then'](handleResult(_0x4baf6a))[_0x79a7('0x2f')](handleError());}if(!_['isNil'](_0x4baf6a[_0x79a7('0x39')])){logger[_0x79a7('0x29')](_0x79a7('0x3a'),_0x4baf6a[_0x79a7('0x39')]);return analyticCustomReportController[_0x79a7('0x38')]({'id':_0x4baf6a[_0x79a7('0x39')]},_0x28b859)[_0x79a7('0x2d')](handleResult(_0x4baf6a))[_0x79a7('0x2f')](handleError());}}catch(_0x1b1a5f){logger[_0x79a7('0x2e')](JSON['stringify'](_0x1b1a5f));}return logger['info'](_0x79a7('0x3b'));};}function getJobs(_0x24690f){var _0x31c430={};if(_0x24690f){_0x31c430['id']=_0x24690f;}return db[_0x79a7('0x3c')][_0x79a7('0x3d')]({'where':_0x31c430,'include':[{'model':db['MailAccount'],'attributes':['id',_0x79a7('0x12'),_0x79a7('0xd')],'include':[{'model':db['MailServerOut'],'as':_0x79a7('0x13'),'include':[{'model':db[_0x79a7('0x3e')],'as':_0x79a7('0x3e')}]}]}]})[_0x79a7('0x2d')](function(_0xd712b7){var _0x56b55=_[_0x79a7('0x3f')](manager[_0x79a7('0x40')]);var _0x32f58c=_[_0x79a7('0x41')](_0xd712b7,function(_0x1af56c){return _0x1af56c['id'][_0x79a7('0x42')]();});var _0x14d5f1=_[_0x79a7('0x43')](_0xd712b7,function(_0x9f7bf3){return _0x9f7bf3['id']['toString']();});var _0x51f1d0=_0x24690f?_0x32f58c:_[_0x79a7('0x44')](_0x32f58c,_0x56b55);var _0x508cb2=_[_0x79a7('0x45')](_0x32f58c,_0x56b55);var _0x26a33b=_[_0x79a7('0x44')](_0x56b55,_0x32f58c);var _0x472efe;var _0x415c2a;for(_0x472efe=0x0;_0x472efe<_0x26a33b[_0x79a7('0x46')]&&!_0x24690f;_0x472efe+=0x1){_0x415c2a=_0x26a33b[_0x472efe][_0x79a7('0x42')]();if(manager[_0x79a7('0x47')](_0x415c2a)){manager[_0x79a7('0x48')](_0x415c2a);manager['deleteJob'](_0x415c2a);logger[_0x79a7('0x29')](_0x79a7('0x49'),_0x415c2a);}}logger['info'](_0x79a7('0x4a'),JSON[_0x79a7('0x25')](_0x51f1d0));for(_0x472efe=0x0;_0x472efe<_0x51f1d0[_0x79a7('0x46')];_0x472efe+=0x1){_0x415c2a=_0x51f1d0[_0x472efe][_0x79a7('0x42')]();logger['info'](_0x79a7('0x4b'),_0x415c2a);if(_0x24690f){logger[_0x79a7('0x29')](_0x79a7('0x4c'),_0x24690f);logger[_0x79a7('0x29')](JSON['stringify'](_0x14d5f1[_0x415c2a]));BPromise[_0x79a7('0x4d')]()['then'](handleJob(_0x14d5f1[_0x415c2a]));logger[_0x79a7('0x29')](_0x79a7('0x4e'),_0x14d5f1[_0x415c2a][_0x79a7('0x12')],_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]);}else if(_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]&&_0x14d5f1[_0x415c2a][_0x79a7('0x50')]&&moment()[_0x79a7('0x51')](_0x14d5f1[_0x415c2a][_0x79a7('0x52')],_0x14d5f1[_0x415c2a][_0x79a7('0x53')])){manager[_0x79a7('0x54')](_0x415c2a,_0x14d5f1[_0x415c2a][_0x79a7('0x4f')],handleJob(_0x14d5f1[_0x415c2a]));manager['start'](_0x415c2a);logger[_0x79a7('0x29')](_0x79a7('0x55'),_0x14d5f1[_0x415c2a][_0x79a7('0x12')],_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]);}else if(manager[_0x79a7('0x47')](_0x415c2a)){manager[_0x79a7('0x48')](_0x415c2a);manager[_0x79a7('0x56')](_0x415c2a);logger['info']('stop\x20cron',_0x14d5f1[_0x415c2a][_0x79a7('0x12')],_0x14d5f1[_0x415c2a]['cron']);}}for(_0x472efe=0x0,_0x415c2a;_0x472efe<_0x508cb2['length']&&!_0x24690f;_0x472efe+=0x1){_0x415c2a=_0x508cb2[_0x472efe][_0x79a7('0x42')]();if(manager[_0x79a7('0x47')](_0x415c2a)){if(_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]&&_0x14d5f1[_0x415c2a][_0x79a7('0x50')]&&moment()[_0x79a7('0x51')](_0x14d5f1[_0x415c2a][_0x79a7('0x52')],_0x14d5f1[_0x415c2a][_0x79a7('0x53')])){manager[_0x79a7('0x57')](_0x415c2a,_0x14d5f1[_0x415c2a][_0x79a7('0x4f')],handleJob(_0x14d5f1[_0x415c2a]));logger[_0x79a7('0x29')](_0x79a7('0x58'),_0x14d5f1[_0x415c2a]['name'],_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]);}else{manager[_0x79a7('0x48')](_0x415c2a);manager['deleteJob'](_0x415c2a);logger[_0x79a7('0x29')](_0x79a7('0x59'),_0x14d5f1[_0x415c2a]['name'],_0x14d5f1[_0x415c2a][_0x79a7('0x4f')]);}}}})[_0x79a7('0x2f')](function(_0x3b9741){logger[_0x79a7('0x2e')](JSON[_0x79a7('0x25')](_0x3b9741));});}exports[_0x79a7('0x5a')]=function(_0x48584f){return getJobs(_0x48584f);};exports[_0x79a7('0x5b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};