5b0c1aa8082e794aad57361a4317a3262559ed31
[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 _0x29a4=['stop\x20cron','exists','update','run','path','lodash','moment','cron-job-manager','bluebird','../../mysqldb','../../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>','name','Smtp','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','status','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','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','empty\x20file,\x20email\x20not\x20sent','request','error','error\x20mail','email\x20sent','data','isNil','subtractNumber','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','then','catch','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','map','toString','difference','length','stop','deleteJob','toRun','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','add','start'];(function(_0x704a28,_0x56e3f0){var _0x2b9686=function(_0x111c0d){while(--_0x111c0d){_0x704a28['push'](_0x704a28['shift']());}};_0x2b9686(++_0x56e3f0);}(_0x29a4,0x1e4));var _0x429a=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x29a4[_0x487b0c];return _0x1adbdc;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x429a('0x0'));var _=require(_0x429a('0x1'));var moment=require(_0x429a('0x2'));var CronJobManager=require(_0x429a('0x3'));var jayson=require('jayson/promise');var BPromise=require(_0x429a('0x4'));var logger=require('../logger')('schedule');var db=require(_0x429a('0x5'))['db'];var analyticCustomReportController=require(_0x429a('0x6'));var analyticDefaultReportController=require(_0x429a('0x7'));var client=jayson[_0x429a('0x8')][_0x429a('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x27736d,_0x40bf7c){return function(){logger[_0x429a('0xa')](_0x429a('0xb'),_0x27736d[_0x429a('0xc')]);var _0x27656e=!![];var _0x3197d3=_0x27736d[_0x429a('0xd')][_0x429a('0xe')]();var _0x4ce1c4={'account':_0x3197d3,'message':{'from':util[_0x429a('0xf')](_0x429a('0x10'),_0x27736d[_0x429a('0xd')][_0x429a('0x11')],_0x27736d[_0x429a('0xd')]['email']||_0x27736d[_0x429a('0xd')][_0x429a('0x12')]['user']),'to':_0x27736d[_0x429a('0xc')],'cc':_0x27736d['cc'],'bcc':_0x27736d[_0x429a('0x13')],'subject':util[_0x429a('0xf')](_0x429a('0x14'),_0x40bf7c[_0x429a('0x11')],_0x27736d['subtractNumber'],_0x27736d[_0x429a('0x15')])}};var _0x47f985=path[_0x429a('0x16')](__dirname,'../../files/reports');var _0x1883b9=_0x40bf7c[_0x429a('0x17')];var _0x4f0cbc=util[_0x429a('0xf')](_0x429a('0x18'),path[_0x429a('0x19')](_0x40bf7c[_0x429a('0x17')],path[_0x429a('0x1a')](_0x40bf7c[_0x429a('0x17')])),_0x429a('0x1b'));var _0x480a32=path['join'](_0x47f985,_0x1883b9);var _0x414e98=path['join'](_0x47f985,_0x4f0cbc);if(fs[_0x429a('0x1c')](_0x480a32)){_0x40bf7c[_0x429a('0x1d')]='Sent';_0x4ce1c4[_0x429a('0x1e')]['attachments']=[{'filename':_0x1883b9,'path':_0x480a32}];_0x4ce1c4[_0x429a('0x1e')][_0x429a('0x1f')]=util[_0x429a('0xf')](_0x429a('0x20'),JSON[_0x429a('0x21')](_0x40bf7c,null,0x2));}else if(fs[_0x429a('0x1c')](_0x414e98)){_0x40bf7c[_0x429a('0x1d')]=_0x429a('0x22');_0x4ce1c4[_0x429a('0x1e')]['attachments']=[{'filename':_0x4f0cbc,'path':_0x414e98}];}else{_0x4ce1c4[_0x429a('0x1e')]['text']=_0x429a('0x23');if(!_0x27736d['sendIfEmpty']){_0x27656e=![];logger[_0x429a('0xa')](_0x429a('0x24'));}}if(_0x27656e){return client[_0x429a('0x25')]('SendMail',_0x4ce1c4)['then'](function(_0x3d70bf){if(_0x3d70bf['error']){return logger[_0x429a('0x26')](_0x429a('0x27'),JSON['stringify'](_0x3d70bf));}return logger[_0x429a('0xa')](_0x429a('0x28'));})['catch'](function(_0x40387f){return logger[_0x429a('0x26')]('error\x20mail',JSON[_0x429a('0x21')](_0x40387f));});}};}function handleError(){return function(_0x4eb6ab){return logger['error'](JSON[_0x429a('0x21')](_0x4eb6ab));};}function handleResult(_0x56fd50){return function(_0x513798){logger['info'](_0x429a('0x29'),JSON[_0x429a('0x21')](_0x513798));if(_0x56fd50['MailAccount']&&_0x56fd50[_0x429a('0xd')]['Smtp']&&!_[_0x429a('0x2a')](_0x56fd50['email'])){setTimeout(handleSendEmail(_0x56fd50,_0x513798),0x3c*0x3e8);}};}function handleJob(_0x15d1c1){return function(){try{if(_[_0x429a('0x2a')](_0x15d1c1[_0x429a('0x2b')])){return logger['info']('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x429a('0x2a')](_0x15d1c1[_0x429a('0x15')])){return logger[_0x429a('0xa')](_0x429a('0x2c'));}var _0x118550={'startDate':moment()['subtract'](_0x15d1c1[_0x429a('0x2b')],_0x15d1c1[_0x429a('0x15')])[_0x429a('0xf')](_0x429a('0x2d')),'endDate':moment()[_0x429a('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x429a('0x2e'),'output':_0x15d1c1['output'],'name':_0x15d1c1[_0x429a('0x11')]};if(!_[_0x429a('0x2a')](_0x15d1c1['DefaultReportId'])){logger[_0x429a('0xa')](_0x429a('0x2f'),_0x15d1c1[_0x429a('0x30')]);return analyticDefaultReportController[_0x429a('0x31')]({'id':_0x15d1c1[_0x429a('0x30')]},_0x118550)[_0x429a('0x32')](handleResult(_0x15d1c1))[_0x429a('0x33')](handleError());}if(!_[_0x429a('0x2a')](_0x15d1c1['CustomReportId'])){logger['info'](_0x429a('0x34'),_0x15d1c1['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x15d1c1[_0x429a('0x35')]},_0x118550)[_0x429a('0x32')](handleResult(_0x15d1c1))[_0x429a('0x33')](handleError());}}catch(_0xe1dccd){logger[_0x429a('0x26')](JSON[_0x429a('0x21')](_0xe1dccd));}return logger[_0x429a('0xa')](_0x429a('0x36'));};}function getJobs(_0x303abc){var _0x242868={};if(_0x303abc){_0x242868['id']=_0x303abc;}return db[_0x429a('0x37')][_0x429a('0x38')]({'where':_0x242868,'include':[{'model':db[_0x429a('0xd')],'attributes':['id','name',_0x429a('0xc')],'include':[{'model':db[_0x429a('0x39')],'as':_0x429a('0x12'),'include':[{'model':db[_0x429a('0x3a')],'as':_0x429a('0x3a')}]}]}]})[_0x429a('0x32')](function(_0x5df4bc){var _0x31a05b=_['keys'](manager['jobs']);var _0x315e0a=_[_0x429a('0x3b')](_0x5df4bc,function(_0x31b3be){return _0x31b3be['id'][_0x429a('0x3c')]();});var _0x52466f=_['keyBy'](_0x5df4bc,function(_0x31d0e6){return _0x31d0e6['id'][_0x429a('0x3c')]();});var _0x579daa=_0x303abc?_0x315e0a:_[_0x429a('0x3d')](_0x315e0a,_0x31a05b);var _0x400755=_['intersection'](_0x315e0a,_0x31a05b);var _0x4d1bac=_[_0x429a('0x3d')](_0x31a05b,_0x315e0a);var _0x498216;var _0x53e730;for(_0x498216=0x0;_0x498216<_0x4d1bac[_0x429a('0x3e')]&&!_0x303abc;_0x498216+=0x1){_0x53e730=_0x4d1bac[_0x498216][_0x429a('0x3c')]();if(manager['exists'](_0x53e730)){manager[_0x429a('0x3f')](_0x53e730);manager[_0x429a('0x40')](_0x53e730);logger[_0x429a('0xa')]('delete\x20cron',_0x53e730);}}logger['info'](_0x429a('0x41'),JSON['stringify'](_0x579daa));for(_0x498216=0x0;_0x498216<_0x579daa[_0x429a('0x3e')];_0x498216+=0x1){_0x53e730=_0x579daa[_0x498216][_0x429a('0x3c')]();logger[_0x429a('0xa')](_0x429a('0x42'),_0x53e730);if(_0x303abc){logger[_0x429a('0xa')](_0x429a('0x43'),_0x303abc);logger[_0x429a('0xa')](JSON[_0x429a('0x21')](_0x52466f[_0x53e730]));BPromise['resolve']()[_0x429a('0x32')](handleJob(_0x52466f[_0x53e730]));logger[_0x429a('0xa')](_0x429a('0x44'),_0x52466f[_0x53e730]['name'],_0x52466f[_0x53e730][_0x429a('0x45')]);}else if(_0x52466f[_0x53e730][_0x429a('0x45')]&&_0x52466f[_0x53e730][_0x429a('0x46')]&&moment()[_0x429a('0x47')](_0x52466f[_0x53e730][_0x429a('0x48')],_0x52466f[_0x53e730][_0x429a('0x49')])){manager[_0x429a('0x4a')](_0x53e730,_0x52466f[_0x53e730]['cron'],handleJob(_0x52466f[_0x53e730]));manager[_0x429a('0x4b')](_0x53e730);logger[_0x429a('0xa')]('add\x20cron',_0x52466f[_0x53e730][_0x429a('0x11')],_0x52466f[_0x53e730][_0x429a('0x45')]);}else if(manager['exists'](_0x53e730)){manager['stop'](_0x53e730);manager[_0x429a('0x40')](_0x53e730);logger['info'](_0x429a('0x4c'),_0x52466f[_0x53e730]['name'],_0x52466f[_0x53e730][_0x429a('0x45')]);}}for(_0x498216=0x0,_0x53e730;_0x498216<_0x400755[_0x429a('0x3e')]&&!_0x303abc;_0x498216+=0x1){_0x53e730=_0x400755[_0x498216][_0x429a('0x3c')]();if(manager[_0x429a('0x4d')](_0x53e730)){if(_0x52466f[_0x53e730][_0x429a('0x45')]&&_0x52466f[_0x53e730][_0x429a('0x46')]&&moment()[_0x429a('0x47')](_0x52466f[_0x53e730][_0x429a('0x48')],_0x52466f[_0x53e730][_0x429a('0x49')])){manager[_0x429a('0x4e')](_0x53e730,_0x52466f[_0x53e730][_0x429a('0x45')],handleJob(_0x52466f[_0x53e730]));logger[_0x429a('0xa')]('update\x20cron',_0x52466f[_0x53e730][_0x429a('0x11')],_0x52466f[_0x53e730][_0x429a('0x45')]);}else{manager[_0x429a('0x3f')](_0x53e730);manager[_0x429a('0x40')](_0x53e730);logger[_0x429a('0xa')](_0x429a('0x4c'),_0x52466f[_0x53e730][_0x429a('0x11')],_0x52466f[_0x53e730][_0x429a('0x45')]);}}}})['catch'](function(_0x47d326){logger[_0x429a('0x26')](JSON[_0x429a('0x21')](_0x47d326));});}exports[_0x429a('0x4f')]=function(_0x26bb06){return getJobs(_0x26bb06);};exports[_0x429a('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};