76e33895639be951c89efe749c9ef9be03882cb7
[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 _0x164d=['active','isBetween','startAt','endAt','add','exists','stop\x20cron','update','run','util','path','lodash','cron-job-manager','jayson/promise','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','name','subtractUnit','join','../../files/reports','savename','%s.%s','zip','existsSync','message','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','status','Sent','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','stringify','email\x20sent','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','subtractNumber','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','CloudProvider','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron'];(function(_0x178347,_0x5c9b2d){var _0x4b61b6=function(_0x4f2ba7){while(--_0x4f2ba7){_0x178347['push'](_0x178347['shift']());}};_0x4b61b6(++_0x5c9b2d);}(_0x164d,0x1b7));var _0xd164=function(_0x4a3e45,_0x1e8ef3){_0x4a3e45=_0x4a3e45-0x0;var _0x48db76=_0x164d[_0x4a3e45];return _0x48db76;};'use strict';var fs=require('fs');var util=require(_0xd164('0x0'));var path=require(_0xd164('0x1'));var _=require(_0xd164('0x2'));var moment=require('moment');var CronJobManager=require(_0xd164('0x3'));var jayson=require(_0xd164('0x4'));var BPromise=require('bluebird');var logger=require(_0xd164('0x5'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xd164('0x6'));var analyticDefaultReportController=require(_0xd164('0x7'));var client=jayson[_0xd164('0x8')][_0xd164('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5bc105,_0x4d647a){return function(){logger[_0xd164('0xa')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x5bc105[_0xd164('0xb')]);var _0x500398=!![];var _0xcdaa76=_0x5bc105['MailAccount'][_0xd164('0xc')]();var _0x347b31={'account':_0xcdaa76,'message':{'from':util[_0xd164('0xd')](_0xd164('0xe'),_0x5bc105['MailAccount']['name'],_0x5bc105['MailAccount'][_0xd164('0xb')]||_0x5bc105[_0xd164('0xf')][_0xd164('0x10')][_0xd164('0x11')]),'to':_0x5bc105[_0xd164('0xb')],'cc':_0x5bc105['cc'],'bcc':_0x5bc105['bcc'],'subject':util[_0xd164('0xd')](_0xd164('0x12'),_0x4d647a[_0xd164('0x13')],_0x5bc105['subtractNumber'],_0x5bc105[_0xd164('0x14')])}};var _0x563632=path[_0xd164('0x15')](__dirname,_0xd164('0x16'));var _0x39b476=_0x4d647a[_0xd164('0x17')];var _0x4c564b=util[_0xd164('0xd')](_0xd164('0x18'),path['basename'](_0x4d647a['savename'],path['extname'](_0x4d647a['savename'])),_0xd164('0x19'));var _0x5ad793=path['join'](_0x563632,_0x39b476);var _0xc58b4b=path[_0xd164('0x15')](_0x563632,_0x4c564b);if(fs[_0xd164('0x1a')](_0x5ad793)){_0x4d647a['status']='Sent';_0x347b31[_0xd164('0x1b')][_0xd164('0x1c')]=[{'filename':_0x39b476,'path':_0x5ad793}];_0x347b31[_0xd164('0x1b')][_0xd164('0x1d')]=util[_0xd164('0xd')](_0xd164('0x1e'),JSON['stringify'](_0x4d647a,null,0x2));}else if(fs[_0xd164('0x1a')](_0xc58b4b)){_0x4d647a[_0xd164('0x1f')]=_0xd164('0x20');_0x347b31[_0xd164('0x1b')][_0xd164('0x1c')]=[{'filename':_0x4c564b,'path':_0xc58b4b}];}else{_0x347b31[_0xd164('0x1b')][_0xd164('0x1d')]=_0xd164('0x21');if(!_0x5bc105[_0xd164('0x22')]){_0x500398=![];logger['info'](_0xd164('0x23'));}}if(_0x500398){return client['request'](_0xd164('0x24'),_0x347b31)[_0xd164('0x25')](function(_0x557fb2){if(_0x557fb2[_0xd164('0x26')]){return logger[_0xd164('0x26')](_0xd164('0x27'),JSON[_0xd164('0x28')](_0x557fb2));}return logger[_0xd164('0xa')](_0xd164('0x29'));})['catch'](function(_0xc3ccf5){return logger[_0xd164('0x26')](_0xd164('0x27'),JSON[_0xd164('0x28')](_0xc3ccf5));});}};}function handleError(){return function(_0x2450ee){return logger['error'](JSON[_0xd164('0x28')](_0x2450ee));};}function handleResult(_0x8956dc){return function(_0x3b301d){logger[_0xd164('0xa')](_0xd164('0x2a'),JSON[_0xd164('0x28')](_0x3b301d));if(_0x8956dc[_0xd164('0xf')]&&_0x8956dc['MailAccount'][_0xd164('0x10')]&&!_[_0xd164('0x2b')](_0x8956dc['email'])){setTimeout(handleSendEmail(_0x8956dc,_0x3b301d),0x3c*0x3e8);}};}function handleJob(_0x2f100e){return function(){try{if(_[_0xd164('0x2b')](_0x2f100e['subtractNumber'])){return logger[_0xd164('0xa')](_0xd164('0x2c'));}if(_['isNil'](_0x2f100e[_0xd164('0x14')])){return logger[_0xd164('0xa')](_0xd164('0x2d'));}var _0x2d10bf={'startDate':moment()[_0xd164('0x2e')](_0x2f100e[_0xd164('0x2f')],_0x2f100e['subtractUnit'])[_0xd164('0xd')](_0xd164('0x30')),'endDate':moment()[_0xd164('0xd')](_0xd164('0x30')),'type':'scheduled','output':_0x2f100e[_0xd164('0x31')],'name':_0x2f100e[_0xd164('0x13')]};if(!_[_0xd164('0x2b')](_0x2f100e[_0xd164('0x32')])){logger[_0xd164('0xa')](_0xd164('0x33'),_0x2f100e[_0xd164('0x32')]);return analyticDefaultReportController[_0xd164('0x34')]({'id':_0x2f100e[_0xd164('0x32')]},_0x2d10bf)[_0xd164('0x25')](handleResult(_0x2f100e))[_0xd164('0x35')](handleError());}if(!_[_0xd164('0x2b')](_0x2f100e['CustomReportId'])){logger['info'](_0xd164('0x36'),_0x2f100e['CustomReportId']);return analyticCustomReportController[_0xd164('0x34')]({'id':_0x2f100e[_0xd164('0x37')]},_0x2d10bf)['then'](handleResult(_0x2f100e))[_0xd164('0x35')](handleError());}}catch(_0x9e53a){logger[_0xd164('0x26')](JSON['stringify'](_0x9e53a));}return logger[_0xd164('0xa')](_0xd164('0x38'));};}function getJobs(_0x7cd6b5){var _0x25bd39={};if(_0x7cd6b5){_0x25bd39['id']=_0x7cd6b5;}return db[_0xd164('0x39')][_0xd164('0x3a')]({'where':_0x25bd39,'include':[{'model':db[_0xd164('0xf')],'attributes':['id',_0xd164('0x13'),_0xd164('0xb')],'include':[{'model':db['MailServerOut'],'as':_0xd164('0x10'),'include':[{'model':db[_0xd164('0x3b')],'as':'CloudProvider'}]}]}]})['then'](function(_0xdc3cd7){var _0x31a38c=_[_0xd164('0x3c')](manager[_0xd164('0x3d')]);var _0x5af849=_[_0xd164('0x3e')](_0xdc3cd7,function(_0x15fa88){return _0x15fa88['id'][_0xd164('0x3f')]();});var _0x60a499=_[_0xd164('0x40')](_0xdc3cd7,function(_0x347ddf){return _0x347ddf['id'][_0xd164('0x3f')]();});var _0x40e3a3=_0x7cd6b5?_0x5af849:_[_0xd164('0x41')](_0x5af849,_0x31a38c);var _0x38da76=_[_0xd164('0x42')](_0x5af849,_0x31a38c);var _0x29c6f4=_[_0xd164('0x41')](_0x31a38c,_0x5af849);var _0x545c0a;var _0x1a63ae;for(_0x545c0a=0x0;_0x545c0a<_0x29c6f4[_0xd164('0x43')]&&!_0x7cd6b5;_0x545c0a+=0x1){_0x1a63ae=_0x29c6f4[_0x545c0a][_0xd164('0x3f')]();if(manager['exists'](_0x1a63ae)){manager[_0xd164('0x44')](_0x1a63ae);manager[_0xd164('0x45')](_0x1a63ae);logger[_0xd164('0xa')](_0xd164('0x46'),_0x1a63ae);}}logger['info'](_0xd164('0x47'),JSON[_0xd164('0x28')](_0x40e3a3));for(_0x545c0a=0x0;_0x545c0a<_0x40e3a3[_0xd164('0x43')];_0x545c0a+=0x1){_0x1a63ae=_0x40e3a3[_0x545c0a][_0xd164('0x3f')]();logger['info'](_0xd164('0x48'),_0x1a63ae);if(_0x7cd6b5){logger[_0xd164('0xa')](_0xd164('0x49'),_0x7cd6b5);logger[_0xd164('0xa')](JSON['stringify'](_0x60a499[_0x1a63ae]));BPromise[_0xd164('0x4a')]()[_0xd164('0x25')](handleJob(_0x60a499[_0x1a63ae]));logger[_0xd164('0xa')](_0xd164('0x4b'),_0x60a499[_0x1a63ae][_0xd164('0x13')],_0x60a499[_0x1a63ae][_0xd164('0x4c')]);}else if(_0x60a499[_0x1a63ae][_0xd164('0x4c')]&&_0x60a499[_0x1a63ae][_0xd164('0x4d')]&&moment()[_0xd164('0x4e')](_0x60a499[_0x1a63ae][_0xd164('0x4f')],_0x60a499[_0x1a63ae][_0xd164('0x50')])){manager[_0xd164('0x51')](_0x1a63ae,_0x60a499[_0x1a63ae][_0xd164('0x4c')],handleJob(_0x60a499[_0x1a63ae]));manager['start'](_0x1a63ae);logger[_0xd164('0xa')]('add\x20cron',_0x60a499[_0x1a63ae][_0xd164('0x13')],_0x60a499[_0x1a63ae]['cron']);}else if(manager[_0xd164('0x52')](_0x1a63ae)){manager[_0xd164('0x44')](_0x1a63ae);manager[_0xd164('0x45')](_0x1a63ae);logger['info'](_0xd164('0x53'),_0x60a499[_0x1a63ae]['name'],_0x60a499[_0x1a63ae]['cron']);}}for(_0x545c0a=0x0,_0x1a63ae;_0x545c0a<_0x38da76[_0xd164('0x43')]&&!_0x7cd6b5;_0x545c0a+=0x1){_0x1a63ae=_0x38da76[_0x545c0a][_0xd164('0x3f')]();if(manager[_0xd164('0x52')](_0x1a63ae)){if(_0x60a499[_0x1a63ae][_0xd164('0x4c')]&&_0x60a499[_0x1a63ae][_0xd164('0x4d')]&&moment()['isBetween'](_0x60a499[_0x1a63ae][_0xd164('0x4f')],_0x60a499[_0x1a63ae][_0xd164('0x50')])){manager[_0xd164('0x54')](_0x1a63ae,_0x60a499[_0x1a63ae][_0xd164('0x4c')],handleJob(_0x60a499[_0x1a63ae]));logger['info']('update\x20cron',_0x60a499[_0x1a63ae]['name'],_0x60a499[_0x1a63ae][_0xd164('0x4c')]);}else{manager[_0xd164('0x44')](_0x1a63ae);manager[_0xd164('0x45')](_0x1a63ae);logger[_0xd164('0xa')]('stop\x20cron',_0x60a499[_0x1a63ae][_0xd164('0x13')],_0x60a499[_0x1a63ae][_0xd164('0x4c')]);}}}})['catch'](function(_0x25d272){logger[_0xd164('0x26')](JSON['stringify'](_0x25d272));});}exports[_0xd164('0x55')]=function(_0x52a627){return getJobs(_0x52a627);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};