Built motion from commit ddca4d0d.|2.5.47
[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 _0x3906=['email','MailAccount','Smtp','service','host','port','auth','user','pass','format','\x22%s\x22\x20<%s>','name','bcc','Report\x20%s\x20last\x20%s\x20%s','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','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','stringify','status','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','info','email\x20sent','catch','error\x20mail','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','jobs','map','toString','keyBy','difference','length','exists','stop','deleteJob','resolve','run\x20job','cron','isBetween','startAt','endAt','add','add\x20cron','stop\x20cron','active','update\x20cron','run','start','util','path','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http'];(function(_0xe2a1aa,_0x525d7b){var _0x5a8362=function(_0x39aece){while(--_0x39aece){_0xe2a1aa['push'](_0xe2a1aa['shift']());}};_0x5a8362(++_0x525d7b);}(_0x3906,0x1bc));var _0x6390=function(_0x5c7b5e,_0x27b509){_0x5c7b5e=_0x5c7b5e-0x0;var _0x13e49f=_0x3906[_0x5c7b5e];return _0x13e49f;};'use strict';var fs=require('fs');var util=require(_0x6390('0x0'));var path=require(_0x6390('0x1'));var _=require('lodash');var moment=require(_0x6390('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x6390('0x3'));var BPromise=require(_0x6390('0x4'));var logger=require(_0x6390('0x5'))(_0x6390('0x6'));var db=require(_0x6390('0x7'))['db'];var analyticCustomReportController=require(_0x6390('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x6390('0x9')][_0x6390('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x57e123,_0x36bdf6){return function(){logger['info']('Try\x20to\x20send\x20a\x20mail\x20to',_0x57e123[_0x6390('0xb')]);var _0x546aa6=!![];var _0x5b31af={'tls':{'rejectUnauthorized':![]}};if(_0x57e123[_0x6390('0xc')][_0x6390('0xd')][_0x6390('0xe')]){_0x5b31af[_0x6390('0xe')]=_0x57e123[_0x6390('0xc')]['Smtp']['service'];}else{_0x5b31af[_0x6390('0xf')]=_0x57e123[_0x6390('0xc')][_0x6390('0xd')][_0x6390('0xf')];_0x5b31af[_0x6390('0x10')]=_0x57e123['MailAccount'][_0x6390('0xd')][_0x6390('0x10')];_0x5b31af['secure']=_0x57e123[_0x6390('0xc')][_0x6390('0xd')]['secure'];}if(_0x57e123[_0x6390('0xc')][_0x6390('0xd')]['authentication']){_0x5b31af[_0x6390('0x11')]={'user':_0x57e123[_0x6390('0xc')][_0x6390('0xd')][_0x6390('0x12')],'pass':_0x57e123[_0x6390('0xc')][_0x6390('0xd')][_0x6390('0x13')]};}var _0x1fc9f9={'account':_0x5b31af,'message':{'from':util[_0x6390('0x14')](_0x6390('0x15'),_0x57e123['MailAccount'][_0x6390('0x16')],_0x57e123[_0x6390('0xc')][_0x6390('0xb')]||_0x57e123[_0x6390('0xc')]['Smtp'][_0x6390('0x12')]),'to':_0x57e123['email'],'cc':_0x57e123['cc'],'bcc':_0x57e123[_0x6390('0x17')],'subject':util[_0x6390('0x14')](_0x6390('0x18'),_0x36bdf6[_0x6390('0x16')],_0x57e123['subtractNumber'],_0x57e123['subtractUnit'])}};var _0x1c9fe9=path[_0x6390('0x19')](__dirname,_0x6390('0x1a'));var _0x54595b=_0x36bdf6[_0x6390('0x1b')];var _0x2bdad4=util['format'](_0x6390('0x1c'),path[_0x6390('0x1d')](_0x36bdf6[_0x6390('0x1b')],path[_0x6390('0x1e')](_0x36bdf6[_0x6390('0x1b')])),_0x6390('0x1f'));var _0x9702c0=path[_0x6390('0x19')](_0x1c9fe9,_0x54595b);var _0x2c802c=path['join'](_0x1c9fe9,_0x2bdad4);if(fs[_0x6390('0x20')](_0x9702c0)){_0x36bdf6['status']=_0x6390('0x21');_0x1fc9f9[_0x6390('0x22')][_0x6390('0x23')]=[{'filename':_0x54595b,'path':_0x9702c0}];_0x1fc9f9[_0x6390('0x22')][_0x6390('0x24')]=util[_0x6390('0x14')](_0x6390('0x25'),JSON[_0x6390('0x26')](_0x36bdf6,null,0x2));}else if(fs['existsSync'](_0x2c802c)){_0x36bdf6[_0x6390('0x27')]=_0x6390('0x21');_0x1fc9f9[_0x6390('0x22')][_0x6390('0x23')]=[{'filename':_0x2bdad4,'path':_0x2c802c}];}else{_0x1fc9f9[_0x6390('0x22')][_0x6390('0x24')]=_0x6390('0x28');if(!_0x57e123[_0x6390('0x29')]){_0x546aa6=![];logger['info'](_0x6390('0x2a'));}}if(_0x546aa6){return client['request'](_0x6390('0x2b'),_0x1fc9f9)[_0x6390('0x2c')](function(_0x30f8b2){if(_0x30f8b2[_0x6390('0x2d')]){return logger[_0x6390('0x2d')]('error\x20mail',JSON['stringify'](_0x30f8b2));}return logger[_0x6390('0x2e')](_0x6390('0x2f'));})[_0x6390('0x30')](function(_0x587b25){return logger[_0x6390('0x2d')](_0x6390('0x31'),JSON[_0x6390('0x26')](_0x587b25));});}};}function handleError(){return function(_0x809f2e){return logger[_0x6390('0x2d')](JSON[_0x6390('0x26')](_0x809f2e));};}function handleResult(_0x4955b7){return function(_0x4a9b81){logger[_0x6390('0x2e')](_0x6390('0x32'),JSON[_0x6390('0x26')](_0x4a9b81));if(_0x4955b7[_0x6390('0xc')]&&_0x4955b7[_0x6390('0xc')][_0x6390('0xd')]&&!_[_0x6390('0x33')](_0x4955b7['email'])){setTimeout(handleSendEmail(_0x4955b7,_0x4a9b81),0x3c*0x3e8);}};}function handleJob(_0x172fb3){return function(){try{if(_[_0x6390('0x33')](_0x172fb3['subtractNumber'])){return logger[_0x6390('0x2e')](_0x6390('0x34'));}if(_[_0x6390('0x33')](_0x172fb3[_0x6390('0x35')])){return logger['info'](_0x6390('0x36'));}var _0x3efc77={'startDate':moment()[_0x6390('0x37')](_0x172fb3[_0x6390('0x38')],_0x172fb3[_0x6390('0x35')])[_0x6390('0x14')](_0x6390('0x39')),'endDate':moment()[_0x6390('0x14')](_0x6390('0x39')),'type':_0x6390('0x3a'),'output':_0x172fb3[_0x6390('0x3b')],'name':_0x172fb3['name']};if(!_[_0x6390('0x33')](_0x172fb3['DefaultReportId'])){logger[_0x6390('0x2e')](_0x6390('0x3c'),_0x172fb3[_0x6390('0x3d')]);return analyticDefaultReportController[_0x6390('0x3e')]({'id':_0x172fb3[_0x6390('0x3d')]},_0x3efc77)[_0x6390('0x2c')](handleResult(_0x172fb3))['catch'](handleError());}if(!_[_0x6390('0x33')](_0x172fb3['CustomReportId'])){logger[_0x6390('0x2e')](_0x6390('0x3f'),_0x172fb3[_0x6390('0x40')]);return analyticCustomReportController[_0x6390('0x3e')]({'id':_0x172fb3[_0x6390('0x40')]},_0x3efc77)['then'](handleResult(_0x172fb3))[_0x6390('0x30')](handleError());}}catch(_0x53b04d){logger[_0x6390('0x2d')](JSON[_0x6390('0x26')](_0x53b04d));}return logger[_0x6390('0x2e')](_0x6390('0x41'));};}function getJobs(_0xcd8ce5){var _0x12aedb={};if(_0xcd8ce5){_0x12aedb['id']=_0xcd8ce5;}return db[_0x6390('0x42')][_0x6390('0x43')]({'where':_0x12aedb,'include':[{'model':db['MailAccount'],'attributes':['id',_0x6390('0x16'),_0x6390('0xb')],'include':[{'model':db[_0x6390('0x44')],'as':_0x6390('0xd')}]}]})[_0x6390('0x2c')](function(_0xccb472){var _0x2b572f=_['keys'](manager[_0x6390('0x45')]);var _0x5afb0d=_[_0x6390('0x46')](_0xccb472,function(_0x34abab){return _0x34abab['id'][_0x6390('0x47')]();});var _0x9c3537=_[_0x6390('0x48')](_0xccb472,function(_0x4edf33){return _0x4edf33['id']['toString']();});var _0x4b31dc=_0xcd8ce5?_0x5afb0d:_[_0x6390('0x49')](_0x5afb0d,_0x2b572f);var _0x5f1345=_['intersection'](_0x5afb0d,_0x2b572f);var _0x42e120=_[_0x6390('0x49')](_0x2b572f,_0x5afb0d);var _0x55f6e6;var _0x2e7afd;for(_0x55f6e6=0x0;_0x55f6e6<_0x42e120[_0x6390('0x4a')]&&!_0xcd8ce5;_0x55f6e6+=0x1){_0x2e7afd=_0x42e120[_0x55f6e6][_0x6390('0x47')]();if(manager[_0x6390('0x4b')](_0x2e7afd)){manager[_0x6390('0x4c')](_0x2e7afd);manager[_0x6390('0x4d')](_0x2e7afd);logger[_0x6390('0x2e')]('delete\x20cron',_0x2e7afd);}}logger[_0x6390('0x2e')]('toRun',JSON[_0x6390('0x26')](_0x4b31dc));for(_0x55f6e6=0x0;_0x55f6e6<_0x4b31dc[_0x6390('0x4a')];_0x55f6e6+=0x1){_0x2e7afd=_0x4b31dc[_0x55f6e6][_0x6390('0x47')]();logger[_0x6390('0x2e')]('index',_0x2e7afd);if(_0xcd8ce5){logger['info']('my\x20id',_0xcd8ce5);logger['info'](JSON[_0x6390('0x26')](_0x9c3537[_0x2e7afd]));BPromise[_0x6390('0x4e')]()[_0x6390('0x2c')](handleJob(_0x9c3537[_0x2e7afd]));logger['info'](_0x6390('0x4f'),_0x9c3537[_0x2e7afd][_0x6390('0x16')],_0x9c3537[_0x2e7afd][_0x6390('0x50')]);}else if(_0x9c3537[_0x2e7afd][_0x6390('0x50')]&&_0x9c3537[_0x2e7afd]['active']&&moment()[_0x6390('0x51')](_0x9c3537[_0x2e7afd][_0x6390('0x52')],_0x9c3537[_0x2e7afd][_0x6390('0x53')])){manager[_0x6390('0x54')](_0x2e7afd,_0x9c3537[_0x2e7afd][_0x6390('0x50')],handleJob(_0x9c3537[_0x2e7afd]));manager['start'](_0x2e7afd);logger[_0x6390('0x2e')](_0x6390('0x55'),_0x9c3537[_0x2e7afd][_0x6390('0x16')],_0x9c3537[_0x2e7afd][_0x6390('0x50')]);}else if(manager[_0x6390('0x4b')](_0x2e7afd)){manager[_0x6390('0x4c')](_0x2e7afd);manager[_0x6390('0x4d')](_0x2e7afd);logger[_0x6390('0x2e')](_0x6390('0x56'),_0x9c3537[_0x2e7afd]['name'],_0x9c3537[_0x2e7afd][_0x6390('0x50')]);}}for(_0x55f6e6=0x0,_0x2e7afd;_0x55f6e6<_0x5f1345[_0x6390('0x4a')]&&!_0xcd8ce5;_0x55f6e6+=0x1){_0x2e7afd=_0x5f1345[_0x55f6e6][_0x6390('0x47')]();if(manager[_0x6390('0x4b')](_0x2e7afd)){if(_0x9c3537[_0x2e7afd][_0x6390('0x50')]&&_0x9c3537[_0x2e7afd][_0x6390('0x57')]&&moment()[_0x6390('0x51')](_0x9c3537[_0x2e7afd][_0x6390('0x52')],_0x9c3537[_0x2e7afd][_0x6390('0x53')])){manager['update'](_0x2e7afd,_0x9c3537[_0x2e7afd]['cron'],handleJob(_0x9c3537[_0x2e7afd]));logger[_0x6390('0x2e')](_0x6390('0x58'),_0x9c3537[_0x2e7afd][_0x6390('0x16')],_0x9c3537[_0x2e7afd][_0x6390('0x50')]);}else{manager['stop'](_0x2e7afd);manager[_0x6390('0x4d')](_0x2e7afd);logger[_0x6390('0x2e')](_0x6390('0x56'),_0x9c3537[_0x2e7afd][_0x6390('0x16')],_0x9c3537[_0x2e7afd][_0x6390('0x50')]);}}}})[_0x6390('0x30')](function(_0x1913ff){logger[_0x6390('0x2d')](JSON[_0x6390('0x26')](_0x1913ff));});}exports[_0x6390('0x59')]=function(_0x2e62f7){return getJobs(_0x2e62f7);};exports[_0x6390('0x5a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};