cfae36329d32942fa5c27967c206430784e3d593
[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 _0x1115=['add\x20cron','stop\x20cron','startAt','stop','start','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','Smtp','service','MailAccount','host','port','secure','auth','user','pass','format','name','email','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','savename','%s.%s','basename','extname','zip','join','status','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','stringify','existsSync','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','error\x20mail','isNil','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','toString','keyBy','difference','exists','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add'];(function(_0x1a0842,_0xad5f37){var _0x4602e8=function(_0x138731){while(--_0x138731){_0x1a0842['push'](_0x1a0842['shift']());}};_0x4602e8(++_0xad5f37);}(_0x1115,0x1c2));var _0x5111=function(_0x3c6352,_0x1a5faa){_0x3c6352=_0x3c6352-0x0;var _0x1a8ae6=_0x1115[_0x3c6352];return _0x1a8ae6;};'use strict';var fs=require('fs');var util=require(_0x5111('0x0'));var path=require(_0x5111('0x1'));var _=require(_0x5111('0x2'));var moment=require(_0x5111('0x3'));var CronJobManager=require(_0x5111('0x4'));var jayson=require(_0x5111('0x5'));var BPromise=require(_0x5111('0x6'));var logger=require(_0x5111('0x7'))('schedule');var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x5111('0x8'));var analyticDefaultReportController=require(_0x5111('0x9'));var client=jayson['client'][_0x5111('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x178501,_0x56dd2b){return function(){logger[_0x5111('0xb')](_0x5111('0xc'),_0x178501['email']);var _0x4b3da4=!![];var _0x395684={'tls':{'rejectUnauthorized':![]}};if(_0x178501['MailAccount'][_0x5111('0xd')][_0x5111('0xe')]){_0x395684[_0x5111('0xe')]=_0x178501[_0x5111('0xf')][_0x5111('0xd')]['service'];}else{_0x395684[_0x5111('0x10')]=_0x178501[_0x5111('0xf')][_0x5111('0xd')]['host'];_0x395684[_0x5111('0x11')]=_0x178501[_0x5111('0xf')][_0x5111('0xd')][_0x5111('0x11')];_0x395684[_0x5111('0x12')]=_0x178501['MailAccount'][_0x5111('0xd')][_0x5111('0x12')];}if(_0x178501[_0x5111('0xf')][_0x5111('0xd')]['authentication']){_0x395684[_0x5111('0x13')]={'user':_0x178501[_0x5111('0xf')][_0x5111('0xd')][_0x5111('0x14')],'pass':_0x178501[_0x5111('0xf')][_0x5111('0xd')][_0x5111('0x15')]};}var _0x14217e={'account':_0x395684,'message':{'from':util[_0x5111('0x16')]('\x22%s\x22\x20<%s>',_0x178501[_0x5111('0xf')][_0x5111('0x17')],_0x178501[_0x5111('0xf')]['email']||_0x178501[_0x5111('0xf')]['Smtp']['user']),'to':_0x178501[_0x5111('0x18')],'cc':_0x178501['cc'],'bcc':_0x178501[_0x5111('0x19')],'subject':util['format'](_0x5111('0x1a'),_0x56dd2b[_0x5111('0x17')],_0x178501[_0x5111('0x1b')],_0x178501['subtractUnit'])}};var _0x5d9802=path['join'](__dirname,_0x5111('0x1c'));var _0xef897f=_0x56dd2b[_0x5111('0x1d')];var _0x3cd966=util[_0x5111('0x16')](_0x5111('0x1e'),path[_0x5111('0x1f')](_0x56dd2b[_0x5111('0x1d')],path[_0x5111('0x20')](_0x56dd2b['savename'])),_0x5111('0x21'));var _0x33e3dd=path[_0x5111('0x22')](_0x5d9802,_0xef897f);var _0x217627=path[_0x5111('0x22')](_0x5d9802,_0x3cd966);if(fs['existsSync'](_0x33e3dd)){_0x56dd2b[_0x5111('0x23')]='Sent';_0x14217e[_0x5111('0x24')][_0x5111('0x25')]=[{'filename':_0xef897f,'path':_0x33e3dd}];_0x14217e[_0x5111('0x24')][_0x5111('0x26')]=util['format'](_0x5111('0x27'),JSON[_0x5111('0x28')](_0x56dd2b,null,0x2));}else if(fs[_0x5111('0x29')](_0x217627)){_0x56dd2b[_0x5111('0x23')]='Sent';_0x14217e[_0x5111('0x24')][_0x5111('0x25')]=[{'filename':_0x3cd966,'path':_0x217627}];}else{_0x14217e[_0x5111('0x24')][_0x5111('0x26')]=_0x5111('0x2a');if(!_0x178501[_0x5111('0x2b')]){_0x4b3da4=![];logger['info'](_0x5111('0x2c'));}}if(_0x4b3da4){return client[_0x5111('0x2d')]('SendMail',_0x14217e)[_0x5111('0x2e')](function(_0x167ec3){if(_0x167ec3[_0x5111('0x2f')]){return logger[_0x5111('0x2f')](_0x5111('0x30'),JSON['stringify'](_0x167ec3));}return logger[_0x5111('0xb')]('email\x20sent');})['catch'](function(_0x2cc8e2){return logger[_0x5111('0x2f')](_0x5111('0x30'),JSON[_0x5111('0x28')](_0x2cc8e2));});}};}function handleError(){return function(_0x2ef1ad){return logger[_0x5111('0x2f')](JSON['stringify'](_0x2ef1ad));};}function handleResult(_0x35b1ec){return function(_0x1a2bf6){logger[_0x5111('0xb')]('data',JSON[_0x5111('0x28')](_0x1a2bf6));if(_0x35b1ec[_0x5111('0xf')]&&_0x35b1ec['MailAccount'][_0x5111('0xd')]&&!_[_0x5111('0x31')](_0x35b1ec[_0x5111('0x18')])){setTimeout(handleSendEmail(_0x35b1ec,_0x1a2bf6),0x3c*0x3e8);}};}function handleJob(_0x46cc6c){return function(){try{if(_[_0x5111('0x31')](_0x46cc6c[_0x5111('0x1b')])){return logger[_0x5111('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x5111('0x31')](_0x46cc6c[_0x5111('0x32')])){return logger[_0x5111('0xb')](_0x5111('0x33'));}var _0x3f3cfd={'startDate':moment()[_0x5111('0x34')](_0x46cc6c[_0x5111('0x1b')],_0x46cc6c[_0x5111('0x32')])[_0x5111('0x16')](_0x5111('0x35')),'endDate':moment()[_0x5111('0x16')](_0x5111('0x35')),'type':_0x5111('0x36'),'output':_0x46cc6c[_0x5111('0x37')],'name':_0x46cc6c[_0x5111('0x17')]};if(!_[_0x5111('0x31')](_0x46cc6c[_0x5111('0x38')])){logger[_0x5111('0xb')]('exec\x20defaul\x20report\x20id:%s',_0x46cc6c['DefaultReportId']);return analyticDefaultReportController[_0x5111('0x39')]({'id':_0x46cc6c['DefaultReportId']},_0x3f3cfd)[_0x5111('0x2e')](handleResult(_0x46cc6c))[_0x5111('0x3a')](handleError());}if(!_[_0x5111('0x31')](_0x46cc6c[_0x5111('0x3b')])){logger[_0x5111('0xb')](_0x5111('0x3c'),_0x46cc6c[_0x5111('0x3b')]);return analyticCustomReportController[_0x5111('0x39')]({'id':_0x46cc6c[_0x5111('0x3b')]},_0x3f3cfd)[_0x5111('0x2e')](handleResult(_0x46cc6c))[_0x5111('0x3a')](handleError());}}catch(_0x364649){logger[_0x5111('0x2f')](JSON['stringify'](_0x364649));}return logger[_0x5111('0xb')](_0x5111('0x3d'));};}function getJobs(_0x2121c2){var _0x43ee74={};if(_0x2121c2){_0x43ee74['id']=_0x2121c2;}return db[_0x5111('0x3e')][_0x5111('0x3f')]({'where':_0x43ee74,'include':[{'model':db[_0x5111('0xf')],'attributes':['id',_0x5111('0x17'),_0x5111('0x18')],'include':[{'model':db[_0x5111('0x40')],'as':_0x5111('0xd')}]}]})[_0x5111('0x2e')](function(_0x3ef280){var _0x49f4f5=_[_0x5111('0x41')](manager[_0x5111('0x42')]);var _0x20ce03=_['map'](_0x3ef280,function(_0xb64310){return _0xb64310['id'][_0x5111('0x43')]();});var _0x5f2276=_[_0x5111('0x44')](_0x3ef280,function(_0x41c60b){return _0x41c60b['id']['toString']();});var _0x71ec70=_0x2121c2?_0x20ce03:_[_0x5111('0x45')](_0x20ce03,_0x49f4f5);var _0x3d1f51=_['intersection'](_0x20ce03,_0x49f4f5);var _0x2a4327=_[_0x5111('0x45')](_0x49f4f5,_0x20ce03);var _0x365294;var _0x4cce62;for(_0x365294=0x0;_0x365294<_0x2a4327['length']&&!_0x2121c2;_0x365294+=0x1){_0x4cce62=_0x2a4327[_0x365294][_0x5111('0x43')]();if(manager[_0x5111('0x46')](_0x4cce62)){manager['stop'](_0x4cce62);manager[_0x5111('0x47')](_0x4cce62);logger['info'](_0x5111('0x48'),_0x4cce62);}}logger[_0x5111('0xb')](_0x5111('0x49'),JSON['stringify'](_0x71ec70));for(_0x365294=0x0;_0x365294<_0x71ec70[_0x5111('0x4a')];_0x365294+=0x1){_0x4cce62=_0x71ec70[_0x365294][_0x5111('0x43')]();logger[_0x5111('0xb')](_0x5111('0x4b'),_0x4cce62);if(_0x2121c2){logger[_0x5111('0xb')](_0x5111('0x4c'),_0x2121c2);logger[_0x5111('0xb')](JSON['stringify'](_0x5f2276[_0x4cce62]));BPromise[_0x5111('0x4d')]()['then'](handleJob(_0x5f2276[_0x4cce62]));logger['info'](_0x5111('0x4e'),_0x5f2276[_0x4cce62][_0x5111('0x17')],_0x5f2276[_0x4cce62][_0x5111('0x4f')]);}else if(_0x5f2276[_0x4cce62][_0x5111('0x4f')]&&_0x5f2276[_0x4cce62][_0x5111('0x50')]&&moment()[_0x5111('0x51')](_0x5f2276[_0x4cce62]['startAt'],_0x5f2276[_0x4cce62][_0x5111('0x52')])){manager[_0x5111('0x53')](_0x4cce62,_0x5f2276[_0x4cce62][_0x5111('0x4f')],handleJob(_0x5f2276[_0x4cce62]));manager['start'](_0x4cce62);logger[_0x5111('0xb')](_0x5111('0x54'),_0x5f2276[_0x4cce62][_0x5111('0x17')],_0x5f2276[_0x4cce62]['cron']);}else if(manager[_0x5111('0x46')](_0x4cce62)){manager['stop'](_0x4cce62);manager[_0x5111('0x47')](_0x4cce62);logger[_0x5111('0xb')](_0x5111('0x55'),_0x5f2276[_0x4cce62][_0x5111('0x17')],_0x5f2276[_0x4cce62][_0x5111('0x4f')]);}}for(_0x365294=0x0,_0x4cce62;_0x365294<_0x3d1f51[_0x5111('0x4a')]&&!_0x2121c2;_0x365294+=0x1){_0x4cce62=_0x3d1f51[_0x365294]['toString']();if(manager[_0x5111('0x46')](_0x4cce62)){if(_0x5f2276[_0x4cce62][_0x5111('0x4f')]&&_0x5f2276[_0x4cce62][_0x5111('0x50')]&&moment()['isBetween'](_0x5f2276[_0x4cce62][_0x5111('0x56')],_0x5f2276[_0x4cce62][_0x5111('0x52')])){manager['update'](_0x4cce62,_0x5f2276[_0x4cce62]['cron'],handleJob(_0x5f2276[_0x4cce62]));logger[_0x5111('0xb')]('update\x20cron',_0x5f2276[_0x4cce62][_0x5111('0x17')],_0x5f2276[_0x4cce62][_0x5111('0x4f')]);}else{manager[_0x5111('0x57')](_0x4cce62);manager[_0x5111('0x47')](_0x4cce62);logger[_0x5111('0xb')](_0x5111('0x55'),_0x5f2276[_0x4cce62][_0x5111('0x17')],_0x5f2276[_0x4cce62][_0x5111('0x4f')]);}}}})[_0x5111('0x3a')](function(_0xdd4ad4){logger[_0x5111('0x2f')](JSON[_0x5111('0x28')](_0xdd4ad4));});}exports['run']=function(_0x32c769){return getJobs(_0x32c769);};exports[_0x5111('0x58')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};