Built motion from commit 449495f6.|2.6.27
[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 _0x2ac1=['status','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','Sent','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','then','error','error\x20mail','stringify','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','name','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','CloudProvider','keys','jobs','map','toString','keyBy','difference','exists','stop','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','start','add\x20cron','stop\x20cron','update\x20cron','lodash','moment','cron-job-manager','jayson/promise','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip'];(function(_0x3d7bbf,_0x29a513){var _0x475de3=function(_0x4a64c6){while(--_0x4a64c6){_0x3d7bbf['push'](_0x3d7bbf['shift']());}};_0x475de3(++_0x29a513);}(_0x2ac1,0x93));var _0x12ac=function(_0x53949a,_0x2ddc5b){_0x53949a=_0x53949a-0x0;var _0xe5c764=_0x2ac1[_0x53949a];return _0xe5c764;};'use strict';var fs=require('fs');var util=require('util');var path=require('path');var _=require(_0x12ac('0x0'));var moment=require(_0x12ac('0x1'));var CronJobManager=require(_0x12ac('0x2'));var jayson=require(_0x12ac('0x3'));var BPromise=require('bluebird');var logger=require(_0x12ac('0x4'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x12ac('0x5'));var analyticDefaultReportController=require(_0x12ac('0x6'));var client=jayson[_0x12ac('0x7')][_0x12ac('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2f5a4,_0x51902c){return function(){logger[_0x12ac('0x9')](_0x12ac('0xa'),_0x2f5a4[_0x12ac('0xb')]);var _0x51ac3f=!![];var _0x598333=_0x2f5a4[_0x12ac('0xc')][_0x12ac('0xd')]();var _0x2193cb={'account':_0x598333,'message':{'from':util[_0x12ac('0xe')](_0x12ac('0xf'),_0x2f5a4[_0x12ac('0xc')]['name'],_0x2f5a4[_0x12ac('0xc')]['email']||_0x2f5a4[_0x12ac('0xc')][_0x12ac('0x10')][_0x12ac('0x11')]),'to':_0x2f5a4[_0x12ac('0xb')],'cc':_0x2f5a4['cc'],'bcc':_0x2f5a4[_0x12ac('0x12')],'subject':util['format'](_0x12ac('0x13'),_0x51902c['name'],_0x2f5a4[_0x12ac('0x14')],_0x2f5a4[_0x12ac('0x15')])}};var _0x4f3267=path[_0x12ac('0x16')](__dirname,_0x12ac('0x17'));var _0x2429fc=_0x51902c[_0x12ac('0x18')];var _0x47001c=util['format'](_0x12ac('0x19'),path[_0x12ac('0x1a')](_0x51902c[_0x12ac('0x18')],path[_0x12ac('0x1b')](_0x51902c['savename'])),_0x12ac('0x1c'));var _0x1ae385=path[_0x12ac('0x16')](_0x4f3267,_0x2429fc);var _0x2f05c7=path['join'](_0x4f3267,_0x47001c);if(fs['existsSync'](_0x1ae385)){_0x51902c[_0x12ac('0x1d')]='Sent';_0x2193cb[_0x12ac('0x1e')][_0x12ac('0x1f')]=[{'filename':_0x2429fc,'path':_0x1ae385}];_0x2193cb[_0x12ac('0x1e')][_0x12ac('0x20')]=util['format'](_0x12ac('0x21'),JSON['stringify'](_0x51902c,null,0x2));}else if(fs[_0x12ac('0x22')](_0x2f05c7)){_0x51902c['status']=_0x12ac('0x23');_0x2193cb['message'][_0x12ac('0x1f')]=[{'filename':_0x47001c,'path':_0x2f05c7}];}else{_0x2193cb[_0x12ac('0x1e')][_0x12ac('0x20')]=_0x12ac('0x24');if(!_0x2f5a4[_0x12ac('0x25')]){_0x51ac3f=![];logger[_0x12ac('0x9')](_0x12ac('0x26'));}}if(_0x51ac3f){return client[_0x12ac('0x27')](_0x12ac('0x28'),_0x2193cb)[_0x12ac('0x29')](function(_0x4a5d7b){if(_0x4a5d7b[_0x12ac('0x2a')]){return logger[_0x12ac('0x2a')](_0x12ac('0x2b'),JSON[_0x12ac('0x2c')](_0x4a5d7b));}return logger[_0x12ac('0x9')](_0x12ac('0x2d'));})[_0x12ac('0x2e')](function(_0x1defde){return logger[_0x12ac('0x2a')](_0x12ac('0x2b'),JSON[_0x12ac('0x2c')](_0x1defde));});}};}function handleError(){return function(_0x3f508e){return logger[_0x12ac('0x2a')](JSON[_0x12ac('0x2c')](_0x3f508e));};}function handleResult(_0x2ff0e6){return function(_0x3fb53a){logger['info'](_0x12ac('0x2f'),JSON[_0x12ac('0x2c')](_0x3fb53a));if(_0x2ff0e6[_0x12ac('0xc')]&&_0x2ff0e6[_0x12ac('0xc')][_0x12ac('0x10')]&&!_[_0x12ac('0x30')](_0x2ff0e6[_0x12ac('0xb')])){setTimeout(handleSendEmail(_0x2ff0e6,_0x3fb53a),0x3c*0x3e8);}};}function handleJob(_0xfb4b3e){return function(){try{if(_[_0x12ac('0x30')](_0xfb4b3e['subtractNumber'])){return logger[_0x12ac('0x9')](_0x12ac('0x31'));}if(_[_0x12ac('0x30')](_0xfb4b3e['subtractUnit'])){return logger[_0x12ac('0x9')](_0x12ac('0x32'));}var _0x3fa9b3={'startDate':moment()[_0x12ac('0x33')](_0xfb4b3e['subtractNumber'],_0xfb4b3e['subtractUnit'])[_0x12ac('0xe')](_0x12ac('0x34')),'endDate':moment()[_0x12ac('0xe')](_0x12ac('0x34')),'type':_0x12ac('0x35'),'output':_0xfb4b3e[_0x12ac('0x36')],'name':_0xfb4b3e[_0x12ac('0x37')]};if(!_['isNil'](_0xfb4b3e[_0x12ac('0x38')])){logger[_0x12ac('0x9')](_0x12ac('0x39'),_0xfb4b3e[_0x12ac('0x38')]);return analyticDefaultReportController[_0x12ac('0x3a')]({'id':_0xfb4b3e[_0x12ac('0x38')]},_0x3fa9b3)[_0x12ac('0x29')](handleResult(_0xfb4b3e))[_0x12ac('0x2e')](handleError());}if(!_[_0x12ac('0x30')](_0xfb4b3e['CustomReportId'])){logger[_0x12ac('0x9')](_0x12ac('0x3b'),_0xfb4b3e[_0x12ac('0x3c')]);return analyticCustomReportController[_0x12ac('0x3a')]({'id':_0xfb4b3e['CustomReportId']},_0x3fa9b3)[_0x12ac('0x29')](handleResult(_0xfb4b3e))[_0x12ac('0x2e')](handleError());}}catch(_0x468af2){logger['error'](JSON[_0x12ac('0x2c')](_0x468af2));}return logger[_0x12ac('0x9')](_0x12ac('0x3d'));};}function getJobs(_0xa0da60){var _0x4bb807={};if(_0xa0da60){_0x4bb807['id']=_0xa0da60;}return db[_0x12ac('0x3e')]['findAll']({'where':_0x4bb807,'include':[{'model':db[_0x12ac('0xc')],'attributes':['id',_0x12ac('0x37'),_0x12ac('0xb')],'include':[{'model':db['MailServerOut'],'as':_0x12ac('0x10'),'include':[{'model':db[_0x12ac('0x3f')],'as':'CloudProvider'}]}]}]})[_0x12ac('0x29')](function(_0x70cfd1){var _0x5dc376=_[_0x12ac('0x40')](manager[_0x12ac('0x41')]);var _0x1ae9e1=_[_0x12ac('0x42')](_0x70cfd1,function(_0x98b82){return _0x98b82['id'][_0x12ac('0x43')]();});var _0x56b3c4=_[_0x12ac('0x44')](_0x70cfd1,function(_0x2ee422){return _0x2ee422['id'][_0x12ac('0x43')]();});var _0x21745d=_0xa0da60?_0x1ae9e1:_['difference'](_0x1ae9e1,_0x5dc376);var _0xfdb123=_['intersection'](_0x1ae9e1,_0x5dc376);var _0x57e2fb=_[_0x12ac('0x45')](_0x5dc376,_0x1ae9e1);var _0x1ddb1d;var _0x3bdcd4;for(_0x1ddb1d=0x0;_0x1ddb1d<_0x57e2fb['length']&&!_0xa0da60;_0x1ddb1d+=0x1){_0x3bdcd4=_0x57e2fb[_0x1ddb1d][_0x12ac('0x43')]();if(manager[_0x12ac('0x46')](_0x3bdcd4)){manager[_0x12ac('0x47')](_0x3bdcd4);manager['deleteJob'](_0x3bdcd4);logger[_0x12ac('0x9')]('delete\x20cron',_0x3bdcd4);}}logger[_0x12ac('0x9')](_0x12ac('0x48'),JSON['stringify'](_0x21745d));for(_0x1ddb1d=0x0;_0x1ddb1d<_0x21745d[_0x12ac('0x49')];_0x1ddb1d+=0x1){_0x3bdcd4=_0x21745d[_0x1ddb1d][_0x12ac('0x43')]();logger[_0x12ac('0x9')](_0x12ac('0x4a'),_0x3bdcd4);if(_0xa0da60){logger[_0x12ac('0x9')](_0x12ac('0x4b'),_0xa0da60);logger[_0x12ac('0x9')](JSON[_0x12ac('0x2c')](_0x56b3c4[_0x3bdcd4]));BPromise[_0x12ac('0x4c')]()['then'](handleJob(_0x56b3c4[_0x3bdcd4]));logger[_0x12ac('0x9')](_0x12ac('0x4d'),_0x56b3c4[_0x3bdcd4]['name'],_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')]);}else if(_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')]&&_0x56b3c4[_0x3bdcd4][_0x12ac('0x4f')]&&moment()[_0x12ac('0x50')](_0x56b3c4[_0x3bdcd4][_0x12ac('0x51')],_0x56b3c4[_0x3bdcd4][_0x12ac('0x52')])){manager[_0x12ac('0x53')](_0x3bdcd4,_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')],handleJob(_0x56b3c4[_0x3bdcd4]));manager[_0x12ac('0x54')](_0x3bdcd4);logger[_0x12ac('0x9')](_0x12ac('0x55'),_0x56b3c4[_0x3bdcd4][_0x12ac('0x37')],_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')]);}else if(manager[_0x12ac('0x46')](_0x3bdcd4)){manager[_0x12ac('0x47')](_0x3bdcd4);manager['deleteJob'](_0x3bdcd4);logger[_0x12ac('0x9')](_0x12ac('0x56'),_0x56b3c4[_0x3bdcd4][_0x12ac('0x37')],_0x56b3c4[_0x3bdcd4]['cron']);}}for(_0x1ddb1d=0x0,_0x3bdcd4;_0x1ddb1d<_0xfdb123[_0x12ac('0x49')]&&!_0xa0da60;_0x1ddb1d+=0x1){_0x3bdcd4=_0xfdb123[_0x1ddb1d][_0x12ac('0x43')]();if(manager[_0x12ac('0x46')](_0x3bdcd4)){if(_0x56b3c4[_0x3bdcd4]['cron']&&_0x56b3c4[_0x3bdcd4][_0x12ac('0x4f')]&&moment()[_0x12ac('0x50')](_0x56b3c4[_0x3bdcd4][_0x12ac('0x51')],_0x56b3c4[_0x3bdcd4][_0x12ac('0x52')])){manager['update'](_0x3bdcd4,_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')],handleJob(_0x56b3c4[_0x3bdcd4]));logger[_0x12ac('0x9')](_0x12ac('0x57'),_0x56b3c4[_0x3bdcd4][_0x12ac('0x37')],_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')]);}else{manager[_0x12ac('0x47')](_0x3bdcd4);manager['deleteJob'](_0x3bdcd4);logger['info']('stop\x20cron',_0x56b3c4[_0x3bdcd4][_0x12ac('0x37')],_0x56b3c4[_0x3bdcd4][_0x12ac('0x4e')]);}}}})[_0x12ac('0x2e')](function(_0x27d34d){logger['error'](JSON[_0x12ac('0x2c')](_0x27d34d));});}exports['run']=function(_0x48227f){return getJobs(_0x48227f);};exports[_0x12ac('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};