0942ba1e64155f0041227d3ec33127a7ead0eff5
[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 _0x2e3c=['authentication','auth','pass','format','\x22%s\x22\x20<%s>','name','user','bcc','subtractNumber','subtractUnit','join','savename','basename','extname','zip','existsSync','status','Sent','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','message','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','then','error','catch','error\x20mail','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','Schedule','findAll','keys','map','toString','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','startAt','add','add\x20cron','isBetween','endAt','update','stop\x20cron','start','util','path','cron-job-manager','bluebird','../logger','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure'];(function(_0x370ad0,_0x5b13ed){var _0x37a135=function(_0x1312c3){while(--_0x1312c3){_0x370ad0['push'](_0x370ad0['shift']());}};_0x37a135(++_0x5b13ed);}(_0x2e3c,0x1ad));var _0xc2e3=function(_0x274c93,_0x40be5c){_0x274c93=_0x274c93-0x0;var _0x406b9a=_0x2e3c[_0x274c93];return _0x406b9a;};'use strict';var fs=require('fs');var util=require(_0xc2e3('0x0'));var path=require(_0xc2e3('0x1'));var _=require('lodash');var moment=require('moment');var CronJobManager=require(_0xc2e3('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0xc2e3('0x3'));var logger=require(_0xc2e3('0x4'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xc2e3('0x5'));var client=jayson[_0xc2e3('0x6')][_0xc2e3('0x7')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x16aad3,_0x20d41f){return function(){logger['info'](_0xc2e3('0x8'),_0x16aad3[_0xc2e3('0x9')]);var _0x2eb5d1=!![];var _0x4f2f27={'tls':{'rejectUnauthorized':![]}};if(_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0xb')][_0xc2e3('0xc')]){_0x4f2f27[_0xc2e3('0xc')]=_0x16aad3[_0xc2e3('0xa')]['Smtp'][_0xc2e3('0xc')];}else{_0x4f2f27[_0xc2e3('0xd')]=_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0xb')][_0xc2e3('0xd')];_0x4f2f27['port']=_0x16aad3['MailAccount'][_0xc2e3('0xb')][_0xc2e3('0xe')];_0x4f2f27['secure']=_0x16aad3['MailAccount'][_0xc2e3('0xb')][_0xc2e3('0xf')];}if(_0x16aad3[_0xc2e3('0xa')]['Smtp'][_0xc2e3('0x10')]){_0x4f2f27[_0xc2e3('0x11')]={'user':_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0xb')]['user'],'pass':_0x16aad3['MailAccount'][_0xc2e3('0xb')][_0xc2e3('0x12')]};}var _0x58cee9={'account':_0x4f2f27,'message':{'from':util[_0xc2e3('0x13')](_0xc2e3('0x14'),_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0x15')],_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0x9')]||_0x16aad3[_0xc2e3('0xa')][_0xc2e3('0xb')][_0xc2e3('0x16')]),'to':_0x16aad3[_0xc2e3('0x9')],'cc':_0x16aad3['cc'],'bcc':_0x16aad3[_0xc2e3('0x17')],'subject':util[_0xc2e3('0x13')]('Report\x20%s\x20last\x20%s\x20%s',_0x20d41f[_0xc2e3('0x15')],_0x16aad3[_0xc2e3('0x18')],_0x16aad3[_0xc2e3('0x19')])}};var _0x5722db=path[_0xc2e3('0x1a')](__dirname,'../../files/reports');var _0xa66c16=_0x20d41f[_0xc2e3('0x1b')];var _0x5bfb8d=util['format']('%s.%s',path[_0xc2e3('0x1c')](_0x20d41f[_0xc2e3('0x1b')],path[_0xc2e3('0x1d')](_0x20d41f[_0xc2e3('0x1b')])),_0xc2e3('0x1e'));var _0x1434ab=path['join'](_0x5722db,_0xa66c16);var _0x38ef9b=path[_0xc2e3('0x1a')](_0x5722db,_0x5bfb8d);if(fs[_0xc2e3('0x1f')](_0x1434ab)){_0x20d41f[_0xc2e3('0x20')]=_0xc2e3('0x21');_0x58cee9['message'][_0xc2e3('0x22')]=[{'filename':_0xa66c16,'path':_0x1434ab}];_0x58cee9['message'][_0xc2e3('0x23')]=util[_0xc2e3('0x13')](_0xc2e3('0x24'),JSON[_0xc2e3('0x25')](_0x20d41f,null,0x2));}else if(fs[_0xc2e3('0x1f')](_0x38ef9b)){_0x20d41f[_0xc2e3('0x20')]=_0xc2e3('0x21');_0x58cee9[_0xc2e3('0x26')][_0xc2e3('0x22')]=[{'filename':_0x5bfb8d,'path':_0x38ef9b}];}else{_0x58cee9[_0xc2e3('0x26')][_0xc2e3('0x23')]=_0xc2e3('0x27');if(!_0x16aad3[_0xc2e3('0x28')]){_0x2eb5d1=![];logger[_0xc2e3('0x29')](_0xc2e3('0x2a'));}}if(_0x2eb5d1){return client[_0xc2e3('0x2b')](_0xc2e3('0x2c'),_0x58cee9)[_0xc2e3('0x2d')](function(_0x3e9c1f){if(_0x3e9c1f[_0xc2e3('0x2e')]){return logger['error']('error\x20mail',JSON[_0xc2e3('0x25')](_0x3e9c1f));}return logger[_0xc2e3('0x29')]('email\x20sent');})[_0xc2e3('0x2f')](function(_0x5ae662){return logger[_0xc2e3('0x2e')](_0xc2e3('0x30'),JSON[_0xc2e3('0x25')](_0x5ae662));});}};}function handleError(){return function(_0x5d1aa6){return logger[_0xc2e3('0x2e')](JSON['stringify'](_0x5d1aa6));};}function handleResult(_0x62487f){return function(_0x4e971f){logger['info']('data',JSON[_0xc2e3('0x25')](_0x4e971f));if(_0x62487f['MailAccount']&&_0x62487f[_0xc2e3('0xa')]['Smtp']&&!_[_0xc2e3('0x31')](_0x62487f[_0xc2e3('0x9')])){setTimeout(handleSendEmail(_0x62487f,_0x4e971f),0x3c*0x3e8);}};}function handleJob(_0x589ffa){return function(){try{if(_[_0xc2e3('0x31')](_0x589ffa['subtractNumber'])){return logger['info'](_0xc2e3('0x32'));}if(_[_0xc2e3('0x31')](_0x589ffa[_0xc2e3('0x19')])){return logger[_0xc2e3('0x29')](_0xc2e3('0x33'));}var _0x16073b={'startDate':moment()[_0xc2e3('0x34')](_0x589ffa[_0xc2e3('0x18')],_0x589ffa[_0xc2e3('0x19')])['format'](_0xc2e3('0x35')),'endDate':moment()[_0xc2e3('0x13')](_0xc2e3('0x35')),'type':_0xc2e3('0x36'),'output':_0x589ffa[_0xc2e3('0x37')],'name':_0x589ffa['name']};if(!_[_0xc2e3('0x31')](_0x589ffa[_0xc2e3('0x38')])){logger['info'](_0xc2e3('0x39'),_0x589ffa[_0xc2e3('0x38')]);return analyticDefaultReportController[_0xc2e3('0x3a')]({'id':_0x589ffa[_0xc2e3('0x38')]},_0x16073b)[_0xc2e3('0x2d')](handleResult(_0x589ffa))['catch'](handleError());}if(!_['isNil'](_0x589ffa[_0xc2e3('0x3b')])){logger[_0xc2e3('0x29')](_0xc2e3('0x3c'),_0x589ffa[_0xc2e3('0x3b')]);return analyticCustomReportController[_0xc2e3('0x3a')]({'id':_0x589ffa[_0xc2e3('0x3b')]},_0x16073b)[_0xc2e3('0x2d')](handleResult(_0x589ffa))['catch'](handleError());}}catch(_0x32409c){logger[_0xc2e3('0x2e')](JSON[_0xc2e3('0x25')](_0x32409c));}return logger[_0xc2e3('0x29')]('no\x20report\x20id');};}function getJobs(_0x3445f4){var _0x595e2a={};if(_0x3445f4){_0x595e2a['id']=_0x3445f4;}return db[_0xc2e3('0x3d')][_0xc2e3('0x3e')]({'where':_0x595e2a,'include':[{'model':db['MailAccount'],'attributes':['id',_0xc2e3('0x15'),_0xc2e3('0x9')],'include':[{'model':db['MailServerOut'],'as':_0xc2e3('0xb')}]}]})[_0xc2e3('0x2d')](function(_0x4fe212){var _0x3d5c44=_[_0xc2e3('0x3f')](manager['jobs']);var _0x21613c=_[_0xc2e3('0x40')](_0x4fe212,function(_0x25b804){return _0x25b804['id'][_0xc2e3('0x41')]();});var _0x3b9486=_[_0xc2e3('0x42')](_0x4fe212,function(_0xdf334a){return _0xdf334a['id'][_0xc2e3('0x41')]();});var _0xfe971b=_0x3445f4?_0x21613c:_[_0xc2e3('0x43')](_0x21613c,_0x3d5c44);var _0xd8a6fa=_[_0xc2e3('0x44')](_0x21613c,_0x3d5c44);var _0x5136e0=_[_0xc2e3('0x43')](_0x3d5c44,_0x21613c);var _0xcc116c;var _0x35b41e;for(_0xcc116c=0x0;_0xcc116c<_0x5136e0[_0xc2e3('0x45')]&&!_0x3445f4;_0xcc116c+=0x1){_0x35b41e=_0x5136e0[_0xcc116c][_0xc2e3('0x41')]();if(manager[_0xc2e3('0x46')](_0x35b41e)){manager[_0xc2e3('0x47')](_0x35b41e);manager[_0xc2e3('0x48')](_0x35b41e);logger[_0xc2e3('0x29')](_0xc2e3('0x49'),_0x35b41e);}}logger[_0xc2e3('0x29')](_0xc2e3('0x4a'),JSON['stringify'](_0xfe971b));for(_0xcc116c=0x0;_0xcc116c<_0xfe971b[_0xc2e3('0x45')];_0xcc116c+=0x1){_0x35b41e=_0xfe971b[_0xcc116c][_0xc2e3('0x41')]();logger[_0xc2e3('0x29')](_0xc2e3('0x4b'),_0x35b41e);if(_0x3445f4){logger[_0xc2e3('0x29')](_0xc2e3('0x4c'),_0x3445f4);logger[_0xc2e3('0x29')](JSON['stringify'](_0x3b9486[_0x35b41e]));BPromise[_0xc2e3('0x4d')]()[_0xc2e3('0x2d')](handleJob(_0x3b9486[_0x35b41e]));logger['info'](_0xc2e3('0x4e'),_0x3b9486[_0x35b41e][_0xc2e3('0x15')],_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]);}else if(_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]&&_0x3b9486[_0x35b41e][_0xc2e3('0x50')]&&moment()['isBetween'](_0x3b9486[_0x35b41e][_0xc2e3('0x51')],_0x3b9486[_0x35b41e]['endAt'])){manager[_0xc2e3('0x52')](_0x35b41e,_0x3b9486[_0x35b41e][_0xc2e3('0x4f')],handleJob(_0x3b9486[_0x35b41e]));manager['start'](_0x35b41e);logger[_0xc2e3('0x29')](_0xc2e3('0x53'),_0x3b9486[_0x35b41e][_0xc2e3('0x15')],_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]);}else if(manager[_0xc2e3('0x46')](_0x35b41e)){manager[_0xc2e3('0x47')](_0x35b41e);manager['deleteJob'](_0x35b41e);logger['info']('stop\x20cron',_0x3b9486[_0x35b41e][_0xc2e3('0x15')],_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]);}}for(_0xcc116c=0x0,_0x35b41e;_0xcc116c<_0xd8a6fa[_0xc2e3('0x45')]&&!_0x3445f4;_0xcc116c+=0x1){_0x35b41e=_0xd8a6fa[_0xcc116c][_0xc2e3('0x41')]();if(manager[_0xc2e3('0x46')](_0x35b41e)){if(_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]&&_0x3b9486[_0x35b41e][_0xc2e3('0x50')]&&moment()[_0xc2e3('0x54')](_0x3b9486[_0x35b41e][_0xc2e3('0x51')],_0x3b9486[_0x35b41e][_0xc2e3('0x55')])){manager[_0xc2e3('0x56')](_0x35b41e,_0x3b9486[_0x35b41e]['cron'],handleJob(_0x3b9486[_0x35b41e]));logger[_0xc2e3('0x29')]('update\x20cron',_0x3b9486[_0x35b41e]['name'],_0x3b9486[_0x35b41e]['cron']);}else{manager[_0xc2e3('0x47')](_0x35b41e);manager[_0xc2e3('0x48')](_0x35b41e);logger[_0xc2e3('0x29')](_0xc2e3('0x57'),_0x3b9486[_0x35b41e][_0xc2e3('0x15')],_0x3b9486[_0x35b41e][_0xc2e3('0x4f')]);}}}})['catch'](function(_0x245604){logger['error'](JSON[_0xc2e3('0x25')](_0x245604));});}exports['run']=function(_0x25dd24){return getJobs(_0x25dd24);};exports[_0xc2e3('0x58')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};