8540d6337e2f2233379194ec86cc2eb5b690fc8f
[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 _0x9817=['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','SendMail','error','error\x20mail','catch','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','then','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','MailServerOut','Smtp','CloudProvider','jobs','map','toString','difference','length','exists','stop','deleteJob','delete\x20cron','index','my\x20id','resolve','cron','isBetween','startAt','endAt','start','add\x20cron','stop\x20cron','update','update\x20cron','run','util','moment','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','format','\x22%s\x22\x20<%s>','MailAccount','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename'];(function(_0x45ca7e,_0x1fe76f){var _0x1c6c65=function(_0x26067f){while(--_0x26067f){_0x45ca7e['push'](_0x45ca7e['shift']());}};_0x1c6c65(++_0x1fe76f);}(_0x9817,0x8c));var _0x7981=function(_0x4bb794,_0x1e6e9d){_0x4bb794=_0x4bb794-0x0;var _0xc03b38=_0x9817[_0x4bb794];return _0xc03b38;};'use strict';var fs=require('fs');var util=require(_0x7981('0x0'));var path=require('path');var _=require('lodash');var moment=require(_0x7981('0x1'));var CronJobManager=require(_0x7981('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0x7981('0x3'));var logger=require(_0x7981('0x4'))(_0x7981('0x5'));var db=require(_0x7981('0x6'))['db'];var analyticCustomReportController=require(_0x7981('0x7'));var analyticDefaultReportController=require(_0x7981('0x8'));var client=jayson['client'][_0x7981('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5816b4,_0x38fea0){return function(){logger['info'](_0x7981('0xa'),_0x5816b4[_0x7981('0xb')]);var _0x6ee63b=!![];var _0x33fb2d=_0x5816b4['MailAccount']['getSmtpOptions']();var _0x5dae20={'account':_0x33fb2d,'message':{'from':util[_0x7981('0xc')](_0x7981('0xd'),_0x5816b4[_0x7981('0xe')][_0x7981('0xf')],_0x5816b4[_0x7981('0xe')][_0x7981('0xb')]||_0x5816b4[_0x7981('0xe')]['Smtp'][_0x7981('0x10')]),'to':_0x5816b4[_0x7981('0xb')],'cc':_0x5816b4['cc'],'bcc':_0x5816b4[_0x7981('0x11')],'subject':util[_0x7981('0xc')](_0x7981('0x12'),_0x38fea0['name'],_0x5816b4[_0x7981('0x13')],_0x5816b4[_0x7981('0x14')])}};var _0x426d6f=path[_0x7981('0x15')](__dirname,_0x7981('0x16'));var _0xf62067=_0x38fea0[_0x7981('0x17')];var _0x132857=util[_0x7981('0xc')](_0x7981('0x18'),path[_0x7981('0x19')](_0x38fea0[_0x7981('0x17')],path[_0x7981('0x1a')](_0x38fea0[_0x7981('0x17')])),_0x7981('0x1b'));var _0x41fe91=path['join'](_0x426d6f,_0xf62067);var _0x3e6199=path['join'](_0x426d6f,_0x132857);if(fs[_0x7981('0x1c')](_0x41fe91)){_0x38fea0[_0x7981('0x1d')]=_0x7981('0x1e');_0x5dae20['message'][_0x7981('0x1f')]=[{'filename':_0xf62067,'path':_0x41fe91}];_0x5dae20['message'][_0x7981('0x20')]=util[_0x7981('0xc')](_0x7981('0x21'),JSON[_0x7981('0x22')](_0x38fea0,null,0x2));}else if(fs[_0x7981('0x1c')](_0x3e6199)){_0x38fea0['status']='Sent';_0x5dae20[_0x7981('0x23')][_0x7981('0x1f')]=[{'filename':_0x132857,'path':_0x3e6199}];}else{_0x5dae20[_0x7981('0x23')][_0x7981('0x20')]=_0x7981('0x24');if(!_0x5816b4[_0x7981('0x25')]){_0x6ee63b=![];logger[_0x7981('0x26')](_0x7981('0x27'));}}if(_0x6ee63b){return client['request'](_0x7981('0x28'),_0x5dae20)['then'](function(_0x342a94){if(_0x342a94[_0x7981('0x29')]){return logger[_0x7981('0x29')](_0x7981('0x2a'),JSON['stringify'](_0x342a94));}return logger['info']('email\x20sent');})[_0x7981('0x2b')](function(_0x2de026){return logger[_0x7981('0x29')]('error\x20mail',JSON[_0x7981('0x22')](_0x2de026));});}};}function handleError(){return function(_0x214bf4){return logger[_0x7981('0x29')](JSON[_0x7981('0x22')](_0x214bf4));};}function handleResult(_0x1eb214){return function(_0x424f65){logger[_0x7981('0x26')](_0x7981('0x2c'),JSON[_0x7981('0x22')](_0x424f65));if(_0x1eb214['MailAccount']&&_0x1eb214[_0x7981('0xe')]['Smtp']&&!_[_0x7981('0x2d')](_0x1eb214[_0x7981('0xb')])){setTimeout(handleSendEmail(_0x1eb214,_0x424f65),0x3c*0x3e8);}};}function handleJob(_0x23006a){return function(){try{if(_[_0x7981('0x2d')](_0x23006a[_0x7981('0x13')])){return logger[_0x7981('0x26')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x7981('0x2d')](_0x23006a[_0x7981('0x14')])){return logger[_0x7981('0x26')](_0x7981('0x2e'));}var _0x5b8fd7={'startDate':moment()[_0x7981('0x2f')](_0x23006a['subtractNumber'],_0x23006a[_0x7981('0x14')])[_0x7981('0xc')](_0x7981('0x30')),'endDate':moment()[_0x7981('0xc')](_0x7981('0x30')),'type':_0x7981('0x31'),'output':_0x23006a[_0x7981('0x32')],'name':_0x23006a[_0x7981('0xf')]};if(!_[_0x7981('0x2d')](_0x23006a['DefaultReportId'])){logger['info']('exec\x20defaul\x20report\x20id:%s',_0x23006a[_0x7981('0x33')]);return analyticDefaultReportController['runReport']({'id':_0x23006a['DefaultReportId']},_0x5b8fd7)[_0x7981('0x34')](handleResult(_0x23006a))[_0x7981('0x2b')](handleError());}if(!_['isNil'](_0x23006a['CustomReportId'])){logger[_0x7981('0x26')](_0x7981('0x35'),_0x23006a['CustomReportId']);return analyticCustomReportController['runReport']({'id':_0x23006a[_0x7981('0x36')]},_0x5b8fd7)[_0x7981('0x34')](handleResult(_0x23006a))['catch'](handleError());}}catch(_0x3c4ed2){logger['error'](JSON[_0x7981('0x22')](_0x3c4ed2));}return logger[_0x7981('0x26')](_0x7981('0x37'));};}function getJobs(_0x29f844){var _0x2b412b={};if(_0x29f844){_0x2b412b['id']=_0x29f844;}return db[_0x7981('0x38')][_0x7981('0x39')]({'where':_0x2b412b,'include':[{'model':db[_0x7981('0xe')],'attributes':['id',_0x7981('0xf'),_0x7981('0xb')],'include':[{'model':db[_0x7981('0x3a')],'as':_0x7981('0x3b'),'include':[{'model':db[_0x7981('0x3c')],'as':_0x7981('0x3c')}]}]}]})[_0x7981('0x34')](function(_0x2dfb52){var _0x2defbc=_['keys'](manager[_0x7981('0x3d')]);var _0x4022fd=_[_0x7981('0x3e')](_0x2dfb52,function(_0x5b4808){return _0x5b4808['id'][_0x7981('0x3f')]();});var _0x253665=_['keyBy'](_0x2dfb52,function(_0x280098){return _0x280098['id'][_0x7981('0x3f')]();});var _0x5be6b8=_0x29f844?_0x4022fd:_['difference'](_0x4022fd,_0x2defbc);var _0x4e79c4=_['intersection'](_0x4022fd,_0x2defbc);var _0x5e16a4=_[_0x7981('0x40')](_0x2defbc,_0x4022fd);var _0x466aa9;var _0x5de05d;for(_0x466aa9=0x0;_0x466aa9<_0x5e16a4[_0x7981('0x41')]&&!_0x29f844;_0x466aa9+=0x1){_0x5de05d=_0x5e16a4[_0x466aa9]['toString']();if(manager[_0x7981('0x42')](_0x5de05d)){manager[_0x7981('0x43')](_0x5de05d);manager[_0x7981('0x44')](_0x5de05d);logger['info'](_0x7981('0x45'),_0x5de05d);}}logger[_0x7981('0x26')]('toRun',JSON[_0x7981('0x22')](_0x5be6b8));for(_0x466aa9=0x0;_0x466aa9<_0x5be6b8['length'];_0x466aa9+=0x1){_0x5de05d=_0x5be6b8[_0x466aa9]['toString']();logger['info'](_0x7981('0x46'),_0x5de05d);if(_0x29f844){logger['info'](_0x7981('0x47'),_0x29f844);logger[_0x7981('0x26')](JSON[_0x7981('0x22')](_0x253665[_0x5de05d]));BPromise[_0x7981('0x48')]()[_0x7981('0x34')](handleJob(_0x253665[_0x5de05d]));logger['info']('run\x20job',_0x253665[_0x5de05d][_0x7981('0xf')],_0x253665[_0x5de05d][_0x7981('0x49')]);}else if(_0x253665[_0x5de05d][_0x7981('0x49')]&&_0x253665[_0x5de05d]['active']&&moment()[_0x7981('0x4a')](_0x253665[_0x5de05d][_0x7981('0x4b')],_0x253665[_0x5de05d][_0x7981('0x4c')])){manager['add'](_0x5de05d,_0x253665[_0x5de05d][_0x7981('0x49')],handleJob(_0x253665[_0x5de05d]));manager[_0x7981('0x4d')](_0x5de05d);logger[_0x7981('0x26')](_0x7981('0x4e'),_0x253665[_0x5de05d]['name'],_0x253665[_0x5de05d]['cron']);}else if(manager[_0x7981('0x42')](_0x5de05d)){manager[_0x7981('0x43')](_0x5de05d);manager[_0x7981('0x44')](_0x5de05d);logger[_0x7981('0x26')](_0x7981('0x4f'),_0x253665[_0x5de05d][_0x7981('0xf')],_0x253665[_0x5de05d][_0x7981('0x49')]);}}for(_0x466aa9=0x0,_0x5de05d;_0x466aa9<_0x4e79c4['length']&&!_0x29f844;_0x466aa9+=0x1){_0x5de05d=_0x4e79c4[_0x466aa9]['toString']();if(manager[_0x7981('0x42')](_0x5de05d)){if(_0x253665[_0x5de05d][_0x7981('0x49')]&&_0x253665[_0x5de05d]['active']&&moment()['isBetween'](_0x253665[_0x5de05d][_0x7981('0x4b')],_0x253665[_0x5de05d][_0x7981('0x4c')])){manager[_0x7981('0x50')](_0x5de05d,_0x253665[_0x5de05d][_0x7981('0x49')],handleJob(_0x253665[_0x5de05d]));logger[_0x7981('0x26')](_0x7981('0x51'),_0x253665[_0x5de05d]['name'],_0x253665[_0x5de05d][_0x7981('0x49')]);}else{manager['stop'](_0x5de05d);manager[_0x7981('0x44')](_0x5de05d);logger[_0x7981('0x26')]('stop\x20cron',_0x253665[_0x5de05d]['name'],_0x253665[_0x5de05d][_0x7981('0x49')]);}}}})[_0x7981('0x2b')](function(_0xa8d20e){logger[_0x7981('0x29')](JSON[_0x7981('0x22')](_0xa8d20e));});}exports[_0x7981('0x52')]=function(_0x5c57bc){return getJobs(_0x5c57bc);};exports[_0x7981('0x4d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};