60ec3faf6ddf6d994a99da97554e9608d16bbf84
[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 _0x3c2e=['sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','stringify','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','intersection','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update','update\x20cron','run','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','format','name','email','bcc','subtractNumber','subtractUnit','../../files/reports','savename','%s.%s','basename','extname','zip','join','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','attachments','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a'];(function(_0x4d70df,_0x2ef178){var _0xc0d57c=function(_0x1ab8cd){while(--_0x1ab8cd){_0x4d70df['push'](_0x4d70df['shift']());}};_0xc0d57c(++_0x2ef178);}(_0x3c2e,0x1b4));var _0xe3c2=function(_0xdd5f8d,_0x31c56f){_0xdd5f8d=_0xdd5f8d-0x0;var _0x416989=_0x3c2e[_0xdd5f8d];return _0x416989;};'use strict';var fs=require('fs');var util=require(_0xe3c2('0x0'));var path=require('path');var _=require(_0xe3c2('0x1'));var moment=require(_0xe3c2('0x2'));var CronJobManager=require(_0xe3c2('0x3'));var jayson=require(_0xe3c2('0x4'));var BPromise=require(_0xe3c2('0x5'));var logger=require('../logger')(_0xe3c2('0x6'));var db=require(_0xe3c2('0x7'))['db'];var analyticCustomReportController=require(_0xe3c2('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xe3c2('0x9')][_0xe3c2('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x756e84,_0x5b4bd1){return function(){logger[_0xe3c2('0xb')](_0xe3c2('0xc'),_0x756e84['email']);var _0xec1ca8=!![];var _0x59c11f={'tls':{'rejectUnauthorized':![]}};if(_0x756e84[_0xe3c2('0xd')][_0xe3c2('0xe')][_0xe3c2('0xf')]){_0x59c11f['service']=_0x756e84[_0xe3c2('0xd')][_0xe3c2('0xe')][_0xe3c2('0xf')];}else{_0x59c11f['host']=_0x756e84['MailAccount']['Smtp'][_0xe3c2('0x10')];_0x59c11f[_0xe3c2('0x11')]=_0x756e84[_0xe3c2('0xd')][_0xe3c2('0xe')]['port'];_0x59c11f[_0xe3c2('0x12')]=_0x756e84[_0xe3c2('0xd')][_0xe3c2('0xe')][_0xe3c2('0x12')];}if(_0x756e84['MailAccount'][_0xe3c2('0xe')][_0xe3c2('0x13')]){_0x59c11f[_0xe3c2('0x14')]={'user':_0x756e84['MailAccount'][_0xe3c2('0xe')][_0xe3c2('0x15')],'pass':_0x756e84['MailAccount'][_0xe3c2('0xe')][_0xe3c2('0x16')]};}var _0xd3994f={'account':_0x59c11f,'message':{'from':util[_0xe3c2('0x17')]('\x22%s\x22\x20<%s>',_0x756e84['MailAccount'][_0xe3c2('0x18')],_0x756e84['MailAccount'][_0xe3c2('0x19')]||_0x756e84[_0xe3c2('0xd')][_0xe3c2('0xe')][_0xe3c2('0x15')]),'to':_0x756e84[_0xe3c2('0x19')],'cc':_0x756e84['cc'],'bcc':_0x756e84[_0xe3c2('0x1a')],'subject':util[_0xe3c2('0x17')]('Report\x20%s\x20last\x20%s\x20%s',_0x5b4bd1[_0xe3c2('0x18')],_0x756e84[_0xe3c2('0x1b')],_0x756e84[_0xe3c2('0x1c')])}};var _0x11106f=path['join'](__dirname,_0xe3c2('0x1d'));var _0x3c90af=_0x5b4bd1[_0xe3c2('0x1e')];var _0x367e77=util[_0xe3c2('0x17')](_0xe3c2('0x1f'),path[_0xe3c2('0x20')](_0x5b4bd1[_0xe3c2('0x1e')],path[_0xe3c2('0x21')](_0x5b4bd1[_0xe3c2('0x1e')])),_0xe3c2('0x22'));var _0x273f4e=path[_0xe3c2('0x23')](_0x11106f,_0x3c90af);var _0x4594d1=path[_0xe3c2('0x23')](_0x11106f,_0x367e77);if(fs[_0xe3c2('0x24')](_0x273f4e)){_0x5b4bd1[_0xe3c2('0x25')]=_0xe3c2('0x26');_0xd3994f[_0xe3c2('0x27')]['attachments']=[{'filename':_0x3c90af,'path':_0x273f4e}];_0xd3994f[_0xe3c2('0x27')][_0xe3c2('0x28')]=util[_0xe3c2('0x17')](_0xe3c2('0x29'),JSON['stringify'](_0x5b4bd1,null,0x2));}else if(fs[_0xe3c2('0x24')](_0x4594d1)){_0x5b4bd1['status']=_0xe3c2('0x26');_0xd3994f['message'][_0xe3c2('0x2a')]=[{'filename':_0x367e77,'path':_0x4594d1}];}else{_0xd3994f[_0xe3c2('0x27')][_0xe3c2('0x28')]=_0xe3c2('0x2b');if(!_0x756e84[_0xe3c2('0x2c')]){_0xec1ca8=![];logger[_0xe3c2('0xb')](_0xe3c2('0x2d'));}}if(_0xec1ca8){return client[_0xe3c2('0x2e')](_0xe3c2('0x2f'),_0xd3994f)[_0xe3c2('0x30')](function(_0x3ad999){if(_0x3ad999[_0xe3c2('0x31')]){return logger[_0xe3c2('0x31')]('error\x20mail',JSON[_0xe3c2('0x32')](_0x3ad999));}return logger['info'](_0xe3c2('0x33'));})['catch'](function(_0x3c9fe3){return logger['error']('error\x20mail',JSON[_0xe3c2('0x32')](_0x3c9fe3));});}};}function handleError(){return function(_0x23facb){return logger['error'](JSON[_0xe3c2('0x32')](_0x23facb));};}function handleResult(_0x2b3fe4){return function(_0x5da321){logger[_0xe3c2('0xb')](_0xe3c2('0x34'),JSON[_0xe3c2('0x32')](_0x5da321));if(_0x2b3fe4[_0xe3c2('0xd')]&&_0x2b3fe4[_0xe3c2('0xd')][_0xe3c2('0xe')]&&!_[_0xe3c2('0x35')](_0x2b3fe4['email'])){setTimeout(handleSendEmail(_0x2b3fe4,_0x5da321),0x3c*0x3e8);}};}function handleJob(_0x6048ce){return function(){try{if(_[_0xe3c2('0x35')](_0x6048ce[_0xe3c2('0x1b')])){return logger['info'](_0xe3c2('0x36'));}if(_[_0xe3c2('0x35')](_0x6048ce[_0xe3c2('0x1c')])){return logger['info'](_0xe3c2('0x37'));}var _0x4a6bf2={'startDate':moment()[_0xe3c2('0x38')](_0x6048ce[_0xe3c2('0x1b')],_0x6048ce[_0xe3c2('0x1c')])[_0xe3c2('0x17')](_0xe3c2('0x39')),'endDate':moment()[_0xe3c2('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x6048ce[_0xe3c2('0x3a')],'name':_0x6048ce[_0xe3c2('0x18')]};if(!_[_0xe3c2('0x35')](_0x6048ce[_0xe3c2('0x3b')])){logger[_0xe3c2('0xb')](_0xe3c2('0x3c'),_0x6048ce[_0xe3c2('0x3b')]);return analyticDefaultReportController[_0xe3c2('0x3d')]({'id':_0x6048ce[_0xe3c2('0x3b')]},_0x4a6bf2)[_0xe3c2('0x30')](handleResult(_0x6048ce))[_0xe3c2('0x3e')](handleError());}if(!_[_0xe3c2('0x35')](_0x6048ce['CustomReportId'])){logger[_0xe3c2('0xb')](_0xe3c2('0x3f'),_0x6048ce['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x6048ce[_0xe3c2('0x40')]},_0x4a6bf2)[_0xe3c2('0x30')](handleResult(_0x6048ce))[_0xe3c2('0x3e')](handleError());}}catch(_0x5abbcf){logger[_0xe3c2('0x31')](JSON[_0xe3c2('0x32')](_0x5abbcf));}return logger[_0xe3c2('0xb')](_0xe3c2('0x41'));};}function getJobs(_0x9d4722){var _0x39acf9={};if(_0x9d4722){_0x39acf9['id']=_0x9d4722;}return db[_0xe3c2('0x42')][_0xe3c2('0x43')]({'where':_0x39acf9,'include':[{'model':db[_0xe3c2('0xd')],'attributes':['id',_0xe3c2('0x18'),_0xe3c2('0x19')],'include':[{'model':db[_0xe3c2('0x44')],'as':_0xe3c2('0xe')}]}]})[_0xe3c2('0x30')](function(_0x24b6ed){var _0x582c28=_[_0xe3c2('0x45')](manager[_0xe3c2('0x46')]);var _0x3f873c=_[_0xe3c2('0x47')](_0x24b6ed,function(_0x5c5f1a){return _0x5c5f1a['id'][_0xe3c2('0x48')]();});var _0x2c69b6=_['keyBy'](_0x24b6ed,function(_0x328502){return _0x328502['id']['toString']();});var _0x195a50=_0x9d4722?_0x3f873c:_['difference'](_0x3f873c,_0x582c28);var _0x529c90=_[_0xe3c2('0x49')](_0x3f873c,_0x582c28);var _0x17d75e=_[_0xe3c2('0x4a')](_0x582c28,_0x3f873c);var _0x87c5e6;var _0x1f5562;for(_0x87c5e6=0x0;_0x87c5e6<_0x17d75e['length']&&!_0x9d4722;_0x87c5e6+=0x1){_0x1f5562=_0x17d75e[_0x87c5e6]['toString']();if(manager[_0xe3c2('0x4b')](_0x1f5562)){manager[_0xe3c2('0x4c')](_0x1f5562);manager[_0xe3c2('0x4d')](_0x1f5562);logger[_0xe3c2('0xb')](_0xe3c2('0x4e'),_0x1f5562);}}logger[_0xe3c2('0xb')](_0xe3c2('0x4f'),JSON[_0xe3c2('0x32')](_0x195a50));for(_0x87c5e6=0x0;_0x87c5e6<_0x195a50[_0xe3c2('0x50')];_0x87c5e6+=0x1){_0x1f5562=_0x195a50[_0x87c5e6][_0xe3c2('0x48')]();logger['info'](_0xe3c2('0x51'),_0x1f5562);if(_0x9d4722){logger[_0xe3c2('0xb')](_0xe3c2('0x52'),_0x9d4722);logger['info'](JSON['stringify'](_0x2c69b6[_0x1f5562]));BPromise[_0xe3c2('0x53')]()[_0xe3c2('0x30')](handleJob(_0x2c69b6[_0x1f5562]));logger[_0xe3c2('0xb')](_0xe3c2('0x54'),_0x2c69b6[_0x1f5562]['name'],_0x2c69b6[_0x1f5562][_0xe3c2('0x55')]);}else if(_0x2c69b6[_0x1f5562][_0xe3c2('0x55')]&&_0x2c69b6[_0x1f5562][_0xe3c2('0x56')]&&moment()[_0xe3c2('0x57')](_0x2c69b6[_0x1f5562][_0xe3c2('0x58')],_0x2c69b6[_0x1f5562][_0xe3c2('0x59')])){manager['add'](_0x1f5562,_0x2c69b6[_0x1f5562][_0xe3c2('0x55')],handleJob(_0x2c69b6[_0x1f5562]));manager[_0xe3c2('0x5a')](_0x1f5562);logger[_0xe3c2('0xb')](_0xe3c2('0x5b'),_0x2c69b6[_0x1f5562][_0xe3c2('0x18')],_0x2c69b6[_0x1f5562]['cron']);}else if(manager[_0xe3c2('0x4b')](_0x1f5562)){manager['stop'](_0x1f5562);manager[_0xe3c2('0x4d')](_0x1f5562);logger[_0xe3c2('0xb')](_0xe3c2('0x5c'),_0x2c69b6[_0x1f5562][_0xe3c2('0x18')],_0x2c69b6[_0x1f5562][_0xe3c2('0x55')]);}}for(_0x87c5e6=0x0,_0x1f5562;_0x87c5e6<_0x529c90['length']&&!_0x9d4722;_0x87c5e6+=0x1){_0x1f5562=_0x529c90[_0x87c5e6][_0xe3c2('0x48')]();if(manager[_0xe3c2('0x4b')](_0x1f5562)){if(_0x2c69b6[_0x1f5562][_0xe3c2('0x55')]&&_0x2c69b6[_0x1f5562][_0xe3c2('0x56')]&&moment()['isBetween'](_0x2c69b6[_0x1f5562]['startAt'],_0x2c69b6[_0x1f5562][_0xe3c2('0x59')])){manager[_0xe3c2('0x5d')](_0x1f5562,_0x2c69b6[_0x1f5562]['cron'],handleJob(_0x2c69b6[_0x1f5562]));logger[_0xe3c2('0xb')](_0xe3c2('0x5e'),_0x2c69b6[_0x1f5562]['name'],_0x2c69b6[_0x1f5562]['cron']);}else{manager[_0xe3c2('0x4c')](_0x1f5562);manager[_0xe3c2('0x4d')](_0x1f5562);logger[_0xe3c2('0xb')]('stop\x20cron',_0x2c69b6[_0x1f5562]['name'],_0x2c69b6[_0x1f5562][_0xe3c2('0x55')]);}}}})[_0xe3c2('0x3e')](function(_0x45830d){logger[_0xe3c2('0x31')](JSON[_0xe3c2('0x32')](_0x45830d));});}exports[_0xe3c2('0x5f')]=function(_0x35e0cc){return getJobs(_0x35e0cc);};exports[_0xe3c2('0x5a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};