Built motion from commit 10af8726.|2.6.34
[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 _0xaae9=['delete\x20cron','toRun','resolve','run\x20job','cron','active','isBetween','startAt','start','add\x20cron','stop\x20cron','endAt','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','retry','client','http','number','AnalyticExtractedReport','then','catch','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','Smtp','user','bcc','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','status','Sent','message','attachments','text','Empty','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','Loading','Completed','Report\x20file\x20creation\x20still\x20running\x20after\x20timeout.\x0aYou\x20can\x20find\x20the\x20report\x20when\x20it\x20will\x20be\x20completed\x20in\x20Analytics\x20->\x20Extracted\x20Reports.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','Failed','Report\x20extraction\x20procedure\x20has\x20run\x20into\x20an\x20unexpected\x20error.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','error','request','SendMail','error\x20mail','stringify','email\x20sent','case\x20loading','currentAttempt','retryOptions','retries','job','operation','still\x20loading','case\x20completed','data','stop','case\x20failed','Unrecognized\x20status:','entity','dataValues','Job\x20ID\x20','\x20Attempt\x20#:','report\x20status:','sendMail','isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','name','CloudProvider','keys','jobs','map','toString','difference','length','exists'];(function(_0x5d5b1a,_0xea27e5){var _0x5d35a7=function(_0x3fa8e2){while(--_0x3fa8e2){_0x5d5b1a['push'](_0x5d5b1a['shift']());}};_0x5d35a7(++_0xea27e5);}(_0xaae9,0x156));var _0x9aae=function(_0x3e7669,_0x2fb3dd){_0x3e7669=_0x3e7669-0x0;var _0x22a04c=_0xaae9[_0x3e7669];return _0x22a04c;};'use strict';var fs=require('fs');var util=require(_0x9aae('0x0'));var path=require(_0x9aae('0x1'));var _=require(_0x9aae('0x2'));var moment=require(_0x9aae('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x9aae('0x4'));var BPromise=require(_0x9aae('0x5'));var logger=require(_0x9aae('0x6'))('schedule');var db=require(_0x9aae('0x7'))['db'];const retry=require(_0x9aae('0x8'));var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x9aae('0x9')][_0x9aae('0xa')]({'port':0x232b});var manager=new CronJobManager();function getReportData(_0x471954){const _0x5b6767={};if(typeof _0x471954===_0x9aae('0xb')){_0x5b6767['id']=_0x471954;}return db[_0x9aae('0xc')]['findOne']({'where':_0x5b6767})[_0x9aae('0xd')](function(_0x4718fa){return _0x4718fa;})[_0x9aae('0xe')](function(_0x449e2f){logger['error'](_0x449e2f);});}function handleSendEmail(_0x1d6d4a,_0x2b9548){logger[_0x9aae('0xf')](_0x9aae('0x10'),_0x1d6d4a[_0x9aae('0x11')]);var _0x4d0eff=!![];var _0x175a57=_0x1d6d4a[_0x9aae('0x12')][_0x9aae('0x13')]();var _0x5347b2={'account':_0x175a57,'message':{'from':util[_0x9aae('0x14')](_0x9aae('0x15'),_0x1d6d4a[_0x9aae('0x12')]['name'],_0x1d6d4a[_0x9aae('0x12')][_0x9aae('0x11')]||_0x1d6d4a[_0x9aae('0x12')][_0x9aae('0x16')][_0x9aae('0x17')]),'to':_0x1d6d4a[_0x9aae('0x11')],'cc':_0x1d6d4a['cc'],'bcc':_0x1d6d4a[_0x9aae('0x18')],'subject':util[_0x9aae('0x14')]('Report\x20%s\x20last\x20%s\x20%s',_0x2b9548['name'],_0x1d6d4a['subtractNumber'],_0x1d6d4a['subtractUnit'])}};var _0x5b350a=path[_0x9aae('0x19')](__dirname,_0x9aae('0x1a'));var _0x5a177e=_0x2b9548[_0x9aae('0x1b')];var _0x2e7305=util[_0x9aae('0x14')](_0x9aae('0x1c'),path[_0x9aae('0x1d')](_0x2b9548[_0x9aae('0x1b')],path[_0x9aae('0x1e')](_0x2b9548['savename'])),_0x9aae('0x1f'));var _0x2ec3ed=path[_0x9aae('0x19')](_0x5b350a,_0x5a177e);var _0xf7061f=path[_0x9aae('0x19')](_0x5b350a,_0x2e7305);if(fs[_0x9aae('0x20')](_0x2ec3ed)){_0x2b9548[_0x9aae('0x21')]=_0x9aae('0x22');_0x5347b2[_0x9aae('0x23')][_0x9aae('0x24')]=[{'filename':_0x5a177e,'path':_0x2ec3ed}];_0x5347b2[_0x9aae('0x23')][_0x9aae('0x25')]=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON['stringify'](_0x2b9548,null,0x2));}else if(fs[_0x9aae('0x20')](_0xf7061f)){_0x2b9548['status']=_0x9aae('0x22');_0x5347b2['message'][_0x9aae('0x24')]=[{'filename':_0x2e7305,'path':_0xf7061f}];}else{if(_0x2b9548[_0x9aae('0x21')]===_0x9aae('0x26')){_0x5347b2[_0x9aae('0x23')][_0x9aae('0x25')]=_0x9aae('0x27');if(!_0x1d6d4a[_0x9aae('0x28')]){_0x4d0eff=![];logger['info']('empty\x20file,\x20email\x20not\x20sent');}}else if(_0x2b9548[_0x9aae('0x21')]===_0x9aae('0x29')){_0x5347b2[_0x9aae('0x23')][_0x9aae('0x25')]='Report\x20still\x20running\x20after\x20timeout.\x0aYou\x20can\x20find\x20the\x20report\x20when\x20it\x20will\x20be\x20completed\x20in\x20Analytics\x20->\x20Extracted\x20Reports.\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';}else if(_0x2b9548[_0x9aae('0x21')]===_0x9aae('0x2a')){_0x5347b2[_0x9aae('0x23')]['text']=_0x9aae('0x2b');}else if(_0x2b9548[_0x9aae('0x21')]===_0x9aae('0x2c')){_0x5347b2[_0x9aae('0x23')][_0x9aae('0x25')]=_0x9aae('0x2d');}else{logger[_0x9aae('0x2e')]('[handleSendEmail]\x20Unrecognized\x20status:',_0x2b9548['status']);}}if(_0x4d0eff){return client[_0x9aae('0x2f')](_0x9aae('0x30'),_0x5347b2)[_0x9aae('0xd')](function(_0x4f1cea){if(_0x4f1cea[_0x9aae('0x2e')]){return logger['error'](_0x9aae('0x31'),JSON[_0x9aae('0x32')](_0x4f1cea));}return logger[_0x9aae('0xf')](_0x9aae('0x33'));})[_0x9aae('0xe')](function(_0x16d9bf){return logger[_0x9aae('0x2e')](_0x9aae('0x31'),JSON[_0x9aae('0x32')](_0x16d9bf));});}}function handleError(){return function(_0x65d970){return logger[_0x9aae('0x2e')](JSON[_0x9aae('0x32')](_0x65d970));};}function loading(_0x5c51d3){logger[_0x9aae('0xf')](_0x9aae('0x34'));if(_0x5c51d3[_0x9aae('0x35')]===_0x5c51d3[_0x9aae('0x36')][_0x9aae('0x37')]){handleSendEmail(_0x5c51d3[_0x9aae('0x38')],_0x5c51d3['data']);_0x5c51d3['operation']['stop']();}else{_0x5c51d3[_0x9aae('0x39')][_0x9aae('0x8')](_0x9aae('0x3a'));}}function completed(_0x41ab89){logger[_0x9aae('0xf')](_0x9aae('0x3b'));handleSendEmail(_0x41ab89[_0x9aae('0x38')],_0x41ab89[_0x9aae('0x3c')]);_0x41ab89['operation'][_0x9aae('0x3d')]();}function empty(_0x421b9b){logger['info']('case\x20empty');handleSendEmail(_0x421b9b['job'],_0x421b9b[_0x9aae('0x3c')]);_0x421b9b[_0x9aae('0x39')][_0x9aae('0x3d')]();}function failed(_0x7773cc){logger['info'](_0x9aae('0x3e'));handleSendEmail(_0x7773cc[_0x9aae('0x38')],_0x7773cc[_0x9aae('0x3c')]);_0x7773cc[_0x9aae('0x39')]['stop']();}function urecognized(_0x14c060){logger[_0x9aae('0x2e')](_0x9aae('0x3f'),_0x14c060[_0x9aae('0x40')][_0x9aae('0x41')][_0x9aae('0x21')]);_0x14c060[_0x9aae('0x39')][_0x9aae('0x3d')]();}const reportStatusStrategies={'Loading':loading,'Completed':completed,'Empty':empty,'Failed':failed,'Unrecognized':urecognized};function retryer(_0x303d02,_0x2d24a2){const _0x3cdec9={'retries':0x3,'factor':0x2,'minTimeout':0x5b*0x3e8,'maxTimeout':0xa*0x3c*0x3e8};const _0x3b7850=retry[_0x9aae('0x39')](_0x3cdec9);_0x3b7850['attempt'](_0x1cbb58=>{logger[_0x9aae('0xf')](_0x9aae('0x42')+_0x303d02['id']+_0x9aae('0x43')+_0x1cbb58);try{getReportData(_0x2d24a2['id'])[_0x9aae('0xd')](function(_0x39a091){_0x2d24a2=_0x39a091;logger[_0x9aae('0xf')](_0x9aae('0x44'),_0x39a091['dataValues'][_0x9aae('0x21')]);if(!reportStatusStrategies[_0x39a091['dataValues']['status']]){logger[_0x9aae('0x2e')](_0x9aae('0x44'),_0x39a091[_0x9aae('0x41')][_0x9aae('0x21')]);_0x3b7850[_0x9aae('0x8')]();}reportStatusStrategies[_0x39a091[_0x9aae('0x41')][_0x9aae('0x21')]]({'operation':_0x3b7850,'currentAttempt':_0x1cbb58,'retryOptions':_0x3cdec9,'job':_0x303d02,'data':_0x2d24a2,'entity':_0x39a091});});}catch(_0x337c80){_0x3b7850[_0x9aae('0x8')](_0x337c80);}});}function handleResult(_0x35736e){return function(_0x1e47ad){if(_0x35736e[_0x9aae('0x45')]&&_0x35736e[_0x9aae('0x12')]&&_0x35736e[_0x9aae('0x12')][_0x9aae('0x16')]&&!_[_0x9aae('0x46')](_0x35736e[_0x9aae('0x11')])){retryer(_0x35736e,_0x1e47ad);}};}function handleJob(_0x5ed6bd){return function(){try{if(_[_0x9aae('0x46')](_0x5ed6bd[_0x9aae('0x47')])){return logger[_0x9aae('0xf')](_0x9aae('0x48'));}if(_[_0x9aae('0x46')](_0x5ed6bd[_0x9aae('0x49')])){return logger[_0x9aae('0xf')](_0x9aae('0x4a'));}var _0x227e32={'startDate':moment()['subtract'](_0x5ed6bd[_0x9aae('0x47')],_0x5ed6bd['subtractUnit'])[_0x9aae('0x14')](_0x9aae('0x4b')),'endDate':moment()[_0x9aae('0x14')](_0x9aae('0x4b')),'type':_0x9aae('0x4c'),'output':_0x5ed6bd['output'],'name':_0x5ed6bd['name']};if(!_[_0x9aae('0x46')](_0x5ed6bd[_0x9aae('0x4d')])){logger[_0x9aae('0xf')](_0x9aae('0x4e'),_0x5ed6bd['DefaultReportId']);return analyticDefaultReportController[_0x9aae('0x4f')]({'id':_0x5ed6bd[_0x9aae('0x4d')]},_0x227e32)[_0x9aae('0xd')](handleResult(_0x5ed6bd))['catch'](handleError());}if(!_[_0x9aae('0x46')](_0x5ed6bd[_0x9aae('0x50')])){logger['info'](_0x9aae('0x51'),_0x5ed6bd['CustomReportId']);return analyticCustomReportController[_0x9aae('0x4f')]({'id':_0x5ed6bd[_0x9aae('0x50')]},_0x227e32)[_0x9aae('0xd')](handleResult(_0x5ed6bd))[_0x9aae('0xe')](handleError());}}catch(_0x208651){logger[_0x9aae('0x2e')](JSON[_0x9aae('0x32')](_0x208651));}return logger['info'](_0x9aae('0x52'));};}function getJobs(_0x392a5e){var _0x1a143c={};if(_0x392a5e){_0x1a143c['id']=_0x392a5e;}return db[_0x9aae('0x53')][_0x9aae('0x54')]({'where':_0x1a143c,'include':[{'model':db[_0x9aae('0x12')],'attributes':['id',_0x9aae('0x55'),_0x9aae('0x11')],'include':[{'model':db['MailServerOut'],'as':_0x9aae('0x16'),'include':[{'model':db[_0x9aae('0x56')],'as':_0x9aae('0x56')}]}]}]})[_0x9aae('0xd')](function(_0x1f6c25){var _0x317962=_[_0x9aae('0x57')](manager[_0x9aae('0x58')]);var _0x278d0a=_[_0x9aae('0x59')](_0x1f6c25,function(_0x34c10c){return _0x34c10c['id'][_0x9aae('0x5a')]();});var _0x1162a9=_['keyBy'](_0x1f6c25,function(_0x48d91c){return _0x48d91c['id'][_0x9aae('0x5a')]();});var _0x4d9ef8=_0x392a5e?_0x278d0a:_[_0x9aae('0x5b')](_0x278d0a,_0x317962);var _0x3aa17a=_['intersection'](_0x278d0a,_0x317962);var _0x293ec6=_[_0x9aae('0x5b')](_0x317962,_0x278d0a);var _0x36a729;var _0x2911d9;for(_0x36a729=0x0;_0x36a729<_0x293ec6[_0x9aae('0x5c')]&&!_0x392a5e;_0x36a729+=0x1){_0x2911d9=_0x293ec6[_0x36a729][_0x9aae('0x5a')]();if(manager[_0x9aae('0x5d')](_0x2911d9)){manager[_0x9aae('0x3d')](_0x2911d9);manager['deleteJob'](_0x2911d9);logger[_0x9aae('0xf')](_0x9aae('0x5e'),_0x2911d9);}}logger[_0x9aae('0xf')](_0x9aae('0x5f'),JSON['stringify'](_0x4d9ef8));for(_0x36a729=0x0;_0x36a729<_0x4d9ef8[_0x9aae('0x5c')];_0x36a729+=0x1){_0x2911d9=_0x4d9ef8[_0x36a729][_0x9aae('0x5a')]();if(_0x392a5e){logger[_0x9aae('0xf')](JSON[_0x9aae('0x32')](_0x1162a9[_0x2911d9]));BPromise[_0x9aae('0x60')]()[_0x9aae('0xd')](handleJob(_0x1162a9[_0x2911d9]));logger[_0x9aae('0xf')](_0x9aae('0x61'),_0x1162a9[_0x2911d9][_0x9aae('0x55')],_0x1162a9[_0x2911d9][_0x9aae('0x62')]);}else if(_0x1162a9[_0x2911d9][_0x9aae('0x62')]&&_0x1162a9[_0x2911d9][_0x9aae('0x63')]&&moment()[_0x9aae('0x64')](_0x1162a9[_0x2911d9][_0x9aae('0x65')],_0x1162a9[_0x2911d9]['endAt'])){manager['add'](_0x2911d9,_0x1162a9[_0x2911d9][_0x9aae('0x62')],handleJob(_0x1162a9[_0x2911d9]));manager[_0x9aae('0x66')](_0x2911d9);logger[_0x9aae('0xf')](_0x9aae('0x67'),_0x1162a9[_0x2911d9][_0x9aae('0x55')],_0x1162a9[_0x2911d9][_0x9aae('0x62')]);}else if(manager[_0x9aae('0x5d')](_0x2911d9)){manager[_0x9aae('0x3d')](_0x2911d9);manager['deleteJob'](_0x2911d9);logger['info'](_0x9aae('0x68'),_0x1162a9[_0x2911d9][_0x9aae('0x55')],_0x1162a9[_0x2911d9]['cron']);}}for(_0x36a729=0x0,_0x2911d9;_0x36a729<_0x3aa17a['length']&&!_0x392a5e;_0x36a729+=0x1){_0x2911d9=_0x3aa17a[_0x36a729][_0x9aae('0x5a')]();if(manager[_0x9aae('0x5d')](_0x2911d9)){if(_0x1162a9[_0x2911d9][_0x9aae('0x62')]&&_0x1162a9[_0x2911d9]['active']&&moment()[_0x9aae('0x64')](_0x1162a9[_0x2911d9]['startAt'],_0x1162a9[_0x2911d9][_0x9aae('0x69')])){manager[_0x9aae('0x6a')](_0x2911d9,_0x1162a9[_0x2911d9][_0x9aae('0x62')],handleJob(_0x1162a9[_0x2911d9]));logger[_0x9aae('0xf')](_0x9aae('0x6b'),_0x1162a9[_0x2911d9][_0x9aae('0x55')],_0x1162a9[_0x2911d9][_0x9aae('0x62')]);}else{manager[_0x9aae('0x3d')](_0x2911d9);manager['deleteJob'](_0x2911d9);logger[_0x9aae('0xf')](_0x9aae('0x68'),_0x1162a9[_0x2911d9][_0x9aae('0x55')],_0x1162a9[_0x2911d9][_0x9aae('0x62')]);}}}})[_0x9aae('0xe')](function(_0xb4c8bf){logger[_0x9aae('0x2e')](JSON[_0x9aae('0x32')](_0xb4c8bf));});}exports[_0x9aae('0x6c')]=function(_0x4a3e4b){return getJobs(_0x4a3e4b);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};