Built motion from commit 0900f080.|2.5.45
[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 _0xb883=['cron','active','isBetween','startAt','endAt','add','start','stop','update','update\x20cron','stop\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','pass','format','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','Sent','message','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','attachments','text','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','email\x20sent','catch','isNil','subtractNumber','subtractUnit','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','jobs','map','toString','length','exists','deleteJob','delete\x20cron','index','my\x20id','resolve','run\x20job'];(function(_0x1c5734,_0xe14e5f){var _0x506967=function(_0x80dbd2){while(--_0x80dbd2){_0x1c5734['push'](_0x1c5734['shift']());}};_0x506967(++_0xe14e5f);}(_0xb883,0x174));var _0x3b88=function(_0x5a0845,_0x2e66c5){_0x5a0845=_0x5a0845-0x0;var _0x31d612=_0xb883[_0x5a0845];return _0x31d612;};'use strict';var fs=require('fs');var util=require(_0x3b88('0x0'));var path=require('path');var _=require(_0x3b88('0x1'));var moment=require(_0x3b88('0x2'));var CronJobManager=require(_0x3b88('0x3'));var jayson=require(_0x3b88('0x4'));var BPromise=require(_0x3b88('0x5'));var logger=require(_0x3b88('0x6'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x3b88('0x7'));var analyticDefaultReportController=require(_0x3b88('0x8'));var client=jayson[_0x3b88('0x9')][_0x3b88('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x30d1d3,_0x1fc781){return function(){logger[_0x3b88('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x30d1d3[_0x3b88('0xc')]);var _0x22015c=!![];var _0x1f3522={'tls':{'rejectUnauthorized':![]}};if(_0x30d1d3[_0x3b88('0xd')][_0x3b88('0xe')][_0x3b88('0xf')]){_0x1f3522[_0x3b88('0xf')]=_0x30d1d3['MailAccount'][_0x3b88('0xe')][_0x3b88('0xf')];}else{_0x1f3522[_0x3b88('0x10')]=_0x30d1d3['MailAccount'][_0x3b88('0xe')][_0x3b88('0x10')];_0x1f3522[_0x3b88('0x11')]=_0x30d1d3[_0x3b88('0xd')]['Smtp'][_0x3b88('0x11')];_0x1f3522['secure']=_0x30d1d3[_0x3b88('0xd')]['Smtp'][_0x3b88('0x12')];}if(_0x30d1d3[_0x3b88('0xd')][_0x3b88('0xe')][_0x3b88('0x13')]){_0x1f3522[_0x3b88('0x14')]={'user':_0x30d1d3['MailAccount'][_0x3b88('0xe')]['user'],'pass':_0x30d1d3[_0x3b88('0xd')][_0x3b88('0xe')][_0x3b88('0x15')]};}var _0x2fd7cb={'account':_0x1f3522,'message':{'from':util[_0x3b88('0x16')]('\x22%s\x22\x20<%s>',_0x30d1d3[_0x3b88('0xd')][_0x3b88('0x17')],_0x30d1d3[_0x3b88('0xd')][_0x3b88('0xc')]||_0x30d1d3['MailAccount'][_0x3b88('0xe')][_0x3b88('0x18')]),'to':_0x30d1d3['email'],'cc':_0x30d1d3['cc'],'bcc':_0x30d1d3[_0x3b88('0x19')],'subject':util['format'](_0x3b88('0x1a'),_0x1fc781['name'],_0x30d1d3['subtractNumber'],_0x30d1d3['subtractUnit'])}};var _0x3b32c4=path[_0x3b88('0x1b')](__dirname,_0x3b88('0x1c'));var _0x1e69bc=_0x1fc781[_0x3b88('0x1d')];var _0x31678d=util['format'](_0x3b88('0x1e'),path[_0x3b88('0x1f')](_0x1fc781['savename'],path[_0x3b88('0x20')](_0x1fc781[_0x3b88('0x1d')])),_0x3b88('0x21'));var _0x56b3ff=path[_0x3b88('0x1b')](_0x3b32c4,_0x1e69bc);var _0x2a0f9e=path['join'](_0x3b32c4,_0x31678d);if(fs['existsSync'](_0x56b3ff)){_0x1fc781[_0x3b88('0x22')]=_0x3b88('0x23');_0x2fd7cb[_0x3b88('0x24')]['attachments']=[{'filename':_0x1e69bc,'path':_0x56b3ff}];_0x2fd7cb['message']['text']=util[_0x3b88('0x16')](_0x3b88('0x25'),JSON[_0x3b88('0x26')](_0x1fc781,null,0x2));}else if(fs[_0x3b88('0x27')](_0x2a0f9e)){_0x1fc781['status']=_0x3b88('0x23');_0x2fd7cb[_0x3b88('0x24')][_0x3b88('0x28')]=[{'filename':_0x31678d,'path':_0x2a0f9e}];}else{_0x2fd7cb[_0x3b88('0x24')][_0x3b88('0x29')]=_0x3b88('0x2a');if(!_0x30d1d3[_0x3b88('0x2b')]){_0x22015c=![];logger[_0x3b88('0xb')](_0x3b88('0x2c'));}}if(_0x22015c){return client[_0x3b88('0x2d')](_0x3b88('0x2e'),_0x2fd7cb)[_0x3b88('0x2f')](function(_0x1e8111){if(_0x1e8111[_0x3b88('0x30')]){return logger[_0x3b88('0x30')]('error\x20mail',JSON[_0x3b88('0x26')](_0x1e8111));}return logger[_0x3b88('0xb')](_0x3b88('0x31'));})[_0x3b88('0x32')](function(_0x545819){return logger[_0x3b88('0x30')]('error\x20mail',JSON[_0x3b88('0x26')](_0x545819));});}};}function handleError(){return function(_0x569c92){return logger[_0x3b88('0x30')](JSON['stringify'](_0x569c92));};}function handleResult(_0x3bdaff){return function(_0x6927e4){logger[_0x3b88('0xb')]('data',JSON[_0x3b88('0x26')](_0x6927e4));if(_0x3bdaff[_0x3b88('0xd')]&&_0x3bdaff['MailAccount'][_0x3b88('0xe')]&&!_[_0x3b88('0x33')](_0x3bdaff[_0x3b88('0xc')])){setTimeout(handleSendEmail(_0x3bdaff,_0x6927e4),0x3c*0x3e8);}};}function handleJob(_0x24725c){return function(){try{if(_['isNil'](_0x24725c[_0x3b88('0x34')])){return logger[_0x3b88('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x24725c[_0x3b88('0x35')])){return logger[_0x3b88('0xb')](_0x3b88('0x36'));}var _0x18b720={'startDate':moment()[_0x3b88('0x37')](_0x24725c['subtractNumber'],_0x24725c['subtractUnit'])[_0x3b88('0x16')](_0x3b88('0x38')),'endDate':moment()[_0x3b88('0x16')](_0x3b88('0x38')),'type':_0x3b88('0x39'),'output':_0x24725c[_0x3b88('0x3a')],'name':_0x24725c[_0x3b88('0x17')]};if(!_[_0x3b88('0x33')](_0x24725c[_0x3b88('0x3b')])){logger[_0x3b88('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x24725c[_0x3b88('0x3b')]);return analyticDefaultReportController[_0x3b88('0x3c')]({'id':_0x24725c[_0x3b88('0x3b')]},_0x18b720)[_0x3b88('0x2f')](handleResult(_0x24725c))['catch'](handleError());}if(!_[_0x3b88('0x33')](_0x24725c[_0x3b88('0x3d')])){logger[_0x3b88('0xb')](_0x3b88('0x3e'),_0x24725c[_0x3b88('0x3d')]);return analyticCustomReportController[_0x3b88('0x3c')]({'id':_0x24725c[_0x3b88('0x3d')]},_0x18b720)['then'](handleResult(_0x24725c))[_0x3b88('0x32')](handleError());}}catch(_0x499ce1){logger[_0x3b88('0x30')](JSON[_0x3b88('0x26')](_0x499ce1));}return logger[_0x3b88('0xb')](_0x3b88('0x3f'));};}function getJobs(_0x44d0c6){var _0x3bba3a={};if(_0x44d0c6){_0x3bba3a['id']=_0x44d0c6;}return db[_0x3b88('0x40')][_0x3b88('0x41')]({'where':_0x3bba3a,'include':[{'model':db['MailAccount'],'attributes':['id',_0x3b88('0x17'),_0x3b88('0xc')],'include':[{'model':db[_0x3b88('0x42')],'as':_0x3b88('0xe')}]}]})[_0x3b88('0x2f')](function(_0x343d30){var _0x4e7ac0=_['keys'](manager[_0x3b88('0x43')]);var _0x5eff14=_[_0x3b88('0x44')](_0x343d30,function(_0x3dcd62){return _0x3dcd62['id'][_0x3b88('0x45')]();});var _0x4bd656=_['keyBy'](_0x343d30,function(_0x44f391){return _0x44f391['id']['toString']();});var _0x23c74e=_0x44d0c6?_0x5eff14:_['difference'](_0x5eff14,_0x4e7ac0);var _0x3145cd=_['intersection'](_0x5eff14,_0x4e7ac0);var _0x413e58=_['difference'](_0x4e7ac0,_0x5eff14);var _0x58a3f7;var _0x2c8f08;for(_0x58a3f7=0x0;_0x58a3f7<_0x413e58[_0x3b88('0x46')]&&!_0x44d0c6;_0x58a3f7+=0x1){_0x2c8f08=_0x413e58[_0x58a3f7][_0x3b88('0x45')]();if(manager[_0x3b88('0x47')](_0x2c8f08)){manager['stop'](_0x2c8f08);manager[_0x3b88('0x48')](_0x2c8f08);logger['info'](_0x3b88('0x49'),_0x2c8f08);}}logger[_0x3b88('0xb')]('toRun',JSON[_0x3b88('0x26')](_0x23c74e));for(_0x58a3f7=0x0;_0x58a3f7<_0x23c74e[_0x3b88('0x46')];_0x58a3f7+=0x1){_0x2c8f08=_0x23c74e[_0x58a3f7][_0x3b88('0x45')]();logger['info'](_0x3b88('0x4a'),_0x2c8f08);if(_0x44d0c6){logger[_0x3b88('0xb')](_0x3b88('0x4b'),_0x44d0c6);logger[_0x3b88('0xb')](JSON[_0x3b88('0x26')](_0x4bd656[_0x2c8f08]));BPromise[_0x3b88('0x4c')]()[_0x3b88('0x2f')](handleJob(_0x4bd656[_0x2c8f08]));logger[_0x3b88('0xb')](_0x3b88('0x4d'),_0x4bd656[_0x2c8f08]['name'],_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]);}else if(_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]&&_0x4bd656[_0x2c8f08][_0x3b88('0x4f')]&&moment()[_0x3b88('0x50')](_0x4bd656[_0x2c8f08][_0x3b88('0x51')],_0x4bd656[_0x2c8f08][_0x3b88('0x52')])){manager[_0x3b88('0x53')](_0x2c8f08,_0x4bd656[_0x2c8f08]['cron'],handleJob(_0x4bd656[_0x2c8f08]));manager[_0x3b88('0x54')](_0x2c8f08);logger[_0x3b88('0xb')]('add\x20cron',_0x4bd656[_0x2c8f08]['name'],_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]);}else if(manager[_0x3b88('0x47')](_0x2c8f08)){manager[_0x3b88('0x55')](_0x2c8f08);manager['deleteJob'](_0x2c8f08);logger['info']('stop\x20cron',_0x4bd656[_0x2c8f08]['name'],_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]);}}for(_0x58a3f7=0x0,_0x2c8f08;_0x58a3f7<_0x3145cd[_0x3b88('0x46')]&&!_0x44d0c6;_0x58a3f7+=0x1){_0x2c8f08=_0x3145cd[_0x58a3f7][_0x3b88('0x45')]();if(manager[_0x3b88('0x47')](_0x2c8f08)){if(_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]&&_0x4bd656[_0x2c8f08][_0x3b88('0x4f')]&&moment()[_0x3b88('0x50')](_0x4bd656[_0x2c8f08]['startAt'],_0x4bd656[_0x2c8f08][_0x3b88('0x52')])){manager[_0x3b88('0x56')](_0x2c8f08,_0x4bd656[_0x2c8f08][_0x3b88('0x4e')],handleJob(_0x4bd656[_0x2c8f08]));logger['info'](_0x3b88('0x57'),_0x4bd656[_0x2c8f08][_0x3b88('0x17')],_0x4bd656[_0x2c8f08][_0x3b88('0x4e')]);}else{manager[_0x3b88('0x55')](_0x2c8f08);manager[_0x3b88('0x48')](_0x2c8f08);logger[_0x3b88('0xb')](_0x3b88('0x58'),_0x4bd656[_0x2c8f08][_0x3b88('0x17')],_0x4bd656[_0x2c8f08]['cron']);}}}})[_0x3b88('0x32')](function(_0x2c9633){logger[_0x3b88('0x30')](JSON[_0x3b88('0x26')](_0x2c9633));});}exports[_0x3b88('0x59')]=function(_0x7d7908){return getJobs(_0x7d7908);};exports[_0x3b88('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};