Built motion from commit 47436d59.|2.6.7
[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 _0x37b2=['length','stop','deleteJob','toRun','my\x20id','resolve','run\x20job','cron','isBetween','endAt','add','add\x20cron','exists','active','update','update\x20cron','stop\x20cron','run','util','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','email','Smtp','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','join','../../files/reports','format','basename','savename','zip','existsSync','status','Sent','message','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','attachments','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','then','error','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','difference','intersection'];(function(_0xc98007,_0x5330b6){var _0x59b063=function(_0x43623f){while(--_0x43623f){_0xc98007['push'](_0xc98007['shift']());}};_0x59b063(++_0x5330b6);}(_0x37b2,0x166));var _0x237b=function(_0x37296b,_0x2e9820){_0x37296b=_0x37296b-0x0;var _0x561567=_0x37b2[_0x37296b];return _0x561567;};'use strict';var fs=require('fs');var util=require(_0x237b('0x0'));var path=require('path');var _=require(_0x237b('0x1'));var moment=require(_0x237b('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x237b('0x3'));var BPromise=require(_0x237b('0x4'));var logger=require(_0x237b('0x5'))(_0x237b('0x6'));var db=require(_0x237b('0x7'))['db'];var analyticCustomReportController=require(_0x237b('0x8'));var analyticDefaultReportController=require(_0x237b('0x9'));var client=jayson[_0x237b('0xa')][_0x237b('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x58a9ff,_0x1ab5d0){return function(){logger[_0x237b('0xc')](_0x237b('0xd'),_0x58a9ff['email']);var _0x3022f0=!![];var _0x31c13b=_0x58a9ff[_0x237b('0xe')][_0x237b('0xf')]();var _0x4f6a70={'account':_0x31c13b,'message':{'from':util['format'](_0x237b('0x10'),_0x58a9ff[_0x237b('0xe')]['name'],_0x58a9ff[_0x237b('0xe')][_0x237b('0x11')]||_0x58a9ff[_0x237b('0xe')][_0x237b('0x12')]['user']),'to':_0x58a9ff[_0x237b('0x11')],'cc':_0x58a9ff['cc'],'bcc':_0x58a9ff[_0x237b('0x13')],'subject':util['format'](_0x237b('0x14'),_0x1ab5d0[_0x237b('0x15')],_0x58a9ff['subtractNumber'],_0x58a9ff[_0x237b('0x16')])}};var _0x141f4a=path[_0x237b('0x17')](__dirname,_0x237b('0x18'));var _0xe66fb7=_0x1ab5d0['savename'];var _0x1d0c96=util[_0x237b('0x19')]('%s.%s',path[_0x237b('0x1a')](_0x1ab5d0[_0x237b('0x1b')],path['extname'](_0x1ab5d0[_0x237b('0x1b')])),_0x237b('0x1c'));var _0x356607=path['join'](_0x141f4a,_0xe66fb7);var _0x3a1b6f=path[_0x237b('0x17')](_0x141f4a,_0x1d0c96);if(fs[_0x237b('0x1d')](_0x356607)){_0x1ab5d0[_0x237b('0x1e')]=_0x237b('0x1f');_0x4f6a70[_0x237b('0x20')]['attachments']=[{'filename':_0xe66fb7,'path':_0x356607}];_0x4f6a70['message'][_0x237b('0x21')]=util['format'](_0x237b('0x22'),JSON[_0x237b('0x23')](_0x1ab5d0,null,0x2));}else if(fs[_0x237b('0x1d')](_0x3a1b6f)){_0x1ab5d0['status']=_0x237b('0x1f');_0x4f6a70[_0x237b('0x20')][_0x237b('0x24')]=[{'filename':_0x1d0c96,'path':_0x3a1b6f}];}else{_0x4f6a70[_0x237b('0x20')][_0x237b('0x21')]=_0x237b('0x25');if(!_0x58a9ff[_0x237b('0x26')]){_0x3022f0=![];logger['info'](_0x237b('0x27'));}}if(_0x3022f0){return client[_0x237b('0x28')]('SendMail',_0x4f6a70)[_0x237b('0x29')](function(_0x5a70a4){if(_0x5a70a4['error']){return logger[_0x237b('0x2a')]('error\x20mail',JSON[_0x237b('0x23')](_0x5a70a4));}return logger['info'](_0x237b('0x2b'));})[_0x237b('0x2c')](function(_0x5146ff){return logger['error']('error\x20mail',JSON[_0x237b('0x23')](_0x5146ff));});}};}function handleError(){return function(_0x890dda){return logger[_0x237b('0x2a')](JSON[_0x237b('0x23')](_0x890dda));};}function handleResult(_0x4128ca){return function(_0x4cd200){logger[_0x237b('0xc')](_0x237b('0x2d'),JSON[_0x237b('0x23')](_0x4cd200));if(_0x4128ca[_0x237b('0xe')]&&_0x4128ca[_0x237b('0xe')][_0x237b('0x12')]&&!_[_0x237b('0x2e')](_0x4128ca[_0x237b('0x11')])){setTimeout(handleSendEmail(_0x4128ca,_0x4cd200),0x3c*0x3e8);}};}function handleJob(_0xe6faa0){return function(){try{if(_['isNil'](_0xe6faa0['subtractNumber'])){return logger[_0x237b('0xc')](_0x237b('0x2f'));}if(_['isNil'](_0xe6faa0[_0x237b('0x16')])){return logger['info'](_0x237b('0x30'));}var _0x1dc2d3={'startDate':moment()['subtract'](_0xe6faa0[_0x237b('0x31')],_0xe6faa0[_0x237b('0x16')])[_0x237b('0x19')](_0x237b('0x32')),'endDate':moment()[_0x237b('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0xe6faa0[_0x237b('0x33')],'name':_0xe6faa0[_0x237b('0x15')]};if(!_[_0x237b('0x2e')](_0xe6faa0[_0x237b('0x34')])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0xe6faa0[_0x237b('0x34')]);return analyticDefaultReportController[_0x237b('0x35')]({'id':_0xe6faa0['DefaultReportId']},_0x1dc2d3)[_0x237b('0x29')](handleResult(_0xe6faa0))['catch'](handleError());}if(!_[_0x237b('0x2e')](_0xe6faa0[_0x237b('0x36')])){logger['info'](_0x237b('0x37'),_0xe6faa0[_0x237b('0x36')]);return analyticCustomReportController[_0x237b('0x35')]({'id':_0xe6faa0[_0x237b('0x36')]},_0x1dc2d3)[_0x237b('0x29')](handleResult(_0xe6faa0))[_0x237b('0x2c')](handleError());}}catch(_0x493ab2){logger[_0x237b('0x2a')](JSON[_0x237b('0x23')](_0x493ab2));}return logger[_0x237b('0xc')](_0x237b('0x38'));};}function getJobs(_0x3b61cb){var _0x29024a={};if(_0x3b61cb){_0x29024a['id']=_0x3b61cb;}return db[_0x237b('0x39')][_0x237b('0x3a')]({'where':_0x29024a,'include':[{'model':db['MailAccount'],'attributes':['id',_0x237b('0x15'),_0x237b('0x11')],'include':[{'model':db[_0x237b('0x3b')],'as':_0x237b('0x12'),'include':[{'model':db['CloudProvider'],'as':_0x237b('0x3c')}]}]}]})[_0x237b('0x29')](function(_0x1a9b3c){var _0x2cf1a9=_[_0x237b('0x3d')](manager[_0x237b('0x3e')]);var _0xc0c43b=_[_0x237b('0x3f')](_0x1a9b3c,function(_0x4478d5){return _0x4478d5['id']['toString']();});var _0x17a7c0=_['keyBy'](_0x1a9b3c,function(_0x2dfc6f){return _0x2dfc6f['id'][_0x237b('0x40')]();});var _0x117328=_0x3b61cb?_0xc0c43b:_[_0x237b('0x41')](_0xc0c43b,_0x2cf1a9);var _0x5adc5b=_[_0x237b('0x42')](_0xc0c43b,_0x2cf1a9);var _0x52fb99=_['difference'](_0x2cf1a9,_0xc0c43b);var _0x3eba17;var _0x113b5e;for(_0x3eba17=0x0;_0x3eba17<_0x52fb99[_0x237b('0x43')]&&!_0x3b61cb;_0x3eba17+=0x1){_0x113b5e=_0x52fb99[_0x3eba17][_0x237b('0x40')]();if(manager['exists'](_0x113b5e)){manager[_0x237b('0x44')](_0x113b5e);manager[_0x237b('0x45')](_0x113b5e);logger[_0x237b('0xc')]('delete\x20cron',_0x113b5e);}}logger[_0x237b('0xc')](_0x237b('0x46'),JSON[_0x237b('0x23')](_0x117328));for(_0x3eba17=0x0;_0x3eba17<_0x117328[_0x237b('0x43')];_0x3eba17+=0x1){_0x113b5e=_0x117328[_0x3eba17][_0x237b('0x40')]();logger[_0x237b('0xc')]('index',_0x113b5e);if(_0x3b61cb){logger[_0x237b('0xc')](_0x237b('0x47'),_0x3b61cb);logger['info'](JSON[_0x237b('0x23')](_0x17a7c0[_0x113b5e]));BPromise[_0x237b('0x48')]()[_0x237b('0x29')](handleJob(_0x17a7c0[_0x113b5e]));logger[_0x237b('0xc')](_0x237b('0x49'),_0x17a7c0[_0x113b5e][_0x237b('0x15')],_0x17a7c0[_0x113b5e][_0x237b('0x4a')]);}else if(_0x17a7c0[_0x113b5e][_0x237b('0x4a')]&&_0x17a7c0[_0x113b5e]['active']&&moment()[_0x237b('0x4b')](_0x17a7c0[_0x113b5e]['startAt'],_0x17a7c0[_0x113b5e][_0x237b('0x4c')])){manager[_0x237b('0x4d')](_0x113b5e,_0x17a7c0[_0x113b5e][_0x237b('0x4a')],handleJob(_0x17a7c0[_0x113b5e]));manager['start'](_0x113b5e);logger['info'](_0x237b('0x4e'),_0x17a7c0[_0x113b5e][_0x237b('0x15')],_0x17a7c0[_0x113b5e][_0x237b('0x4a')]);}else if(manager[_0x237b('0x4f')](_0x113b5e)){manager[_0x237b('0x44')](_0x113b5e);manager[_0x237b('0x45')](_0x113b5e);logger[_0x237b('0xc')]('stop\x20cron',_0x17a7c0[_0x113b5e]['name'],_0x17a7c0[_0x113b5e][_0x237b('0x4a')]);}}for(_0x3eba17=0x0,_0x113b5e;_0x3eba17<_0x5adc5b[_0x237b('0x43')]&&!_0x3b61cb;_0x3eba17+=0x1){_0x113b5e=_0x5adc5b[_0x3eba17][_0x237b('0x40')]();if(manager[_0x237b('0x4f')](_0x113b5e)){if(_0x17a7c0[_0x113b5e][_0x237b('0x4a')]&&_0x17a7c0[_0x113b5e][_0x237b('0x50')]&&moment()[_0x237b('0x4b')](_0x17a7c0[_0x113b5e]['startAt'],_0x17a7c0[_0x113b5e][_0x237b('0x4c')])){manager[_0x237b('0x51')](_0x113b5e,_0x17a7c0[_0x113b5e]['cron'],handleJob(_0x17a7c0[_0x113b5e]));logger[_0x237b('0xc')](_0x237b('0x52'),_0x17a7c0[_0x113b5e][_0x237b('0x15')],_0x17a7c0[_0x113b5e][_0x237b('0x4a')]);}else{manager[_0x237b('0x44')](_0x113b5e);manager['deleteJob'](_0x113b5e);logger[_0x237b('0xc')](_0x237b('0x53'),_0x17a7c0[_0x113b5e]['name'],_0x17a7c0[_0x113b5e][_0x237b('0x4a')]);}}}})['catch'](function(_0x579a80){logger[_0x237b('0x2a')](JSON['stringify'](_0x579a80));});}exports[_0x237b('0x54')]=function(_0x44bfe0){return getJobs(_0x44bfe0);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};