f46075c93fcabfbedba43236fb42426bcd1c6329
[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 _0x871a=['path','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','retry','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','number','AnalyticExtractedReport','findOne','error','info','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','join','../../files/reports','savename','%s.%s','extname','existsSync','status','Sent','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','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','Loading','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','Completed','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','[handleSendEmail]\x20Unrecognized\x20status:','request','SendMail','catch','error\x20mail','case\x20loading','currentAttempt','retryOptions','retries','job','data','operation','stop','still\x20loading','case\x20completed','case\x20empty','case\x20failed','Unrecognized\x20status:','attempt','Job\x20ID\x20','dataValues','isNil','subtractNumber','subtractUnit\x20null\x20or\x20undefined','subtract','subtractUnit','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','then','exec\x20custom\x20report\x20id:%s','CustomReportId','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','keyBy','toString','difference','intersection','length','delete\x20cron','toRun','run\x20job','active','isBetween','startAt','endAt','add','cron','add\x20cron','exists','deleteJob','stop\x20cron','update','update\x20cron','run','start','util'];(function(_0x32745c,_0x24984a){var _0x45cb9d=function(_0xdf6de5){while(--_0xdf6de5){_0x32745c['push'](_0x32745c['shift']());}};_0x45cb9d(++_0x24984a);}(_0x871a,0xdb));var _0xa871=function(_0x197837,_0x439ae2){_0x197837=_0x197837-0x0;var _0x3eed5f=_0x871a[_0x197837];return _0x3eed5f;};'use strict';var fs=require('fs');var util=require(_0xa871('0x0'));var path=require(_0xa871('0x1'));var _=require('lodash');var moment=require('moment');var CronJobManager=require(_0xa871('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0xa871('0x3'));var logger=require(_0xa871('0x4'))(_0xa871('0x5'));var db=require(_0xa871('0x6'))['db'];const retry=require(_0xa871('0x7'));var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xa871('0x8'));var client=jayson[_0xa871('0x9')][_0xa871('0xa')]({'port':0x232b});var manager=new CronJobManager();function getReportData(_0xa38209){const _0x2fa2ec={};if(typeof _0xa38209===_0xa871('0xb')){_0x2fa2ec['id']=_0xa38209;}return db[_0xa871('0xc')][_0xa871('0xd')]({'where':_0x2fa2ec})['then'](function(_0x2e2c08){return _0x2e2c08;})['catch'](function(_0x2701b9){logger[_0xa871('0xe')](_0x2701b9);});}function handleSendEmail(_0x310de9,_0x3a6952){logger[_0xa871('0xf')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x310de9[_0xa871('0x10')]);var _0x270766=!![];var _0x37408f=_0x310de9['MailAccount'][_0xa871('0x11')]();var _0xeb40f3={'account':_0x37408f,'message':{'from':util[_0xa871('0x12')](_0xa871('0x13'),_0x310de9[_0xa871('0x14')]['name'],_0x310de9['MailAccount'][_0xa871('0x10')]||_0x310de9[_0xa871('0x14')][_0xa871('0x15')][_0xa871('0x16')]),'to':_0x310de9[_0xa871('0x10')],'cc':_0x310de9['cc'],'bcc':_0x310de9[_0xa871('0x17')],'subject':util['format'](_0xa871('0x18'),_0x3a6952[_0xa871('0x19')],_0x310de9['subtractNumber'],_0x310de9['subtractUnit'])}};var _0xa663c6=path[_0xa871('0x1a')](__dirname,_0xa871('0x1b'));var _0x1c8db8=_0x3a6952[_0xa871('0x1c')];var _0x4f107d=util[_0xa871('0x12')](_0xa871('0x1d'),path['basename'](_0x3a6952[_0xa871('0x1c')],path[_0xa871('0x1e')](_0x3a6952['savename'])),'zip');var _0x46756b=path[_0xa871('0x1a')](_0xa663c6,_0x1c8db8);var _0x440606=path['join'](_0xa663c6,_0x4f107d);if(fs[_0xa871('0x1f')](_0x46756b)){_0x3a6952[_0xa871('0x20')]=_0xa871('0x21');_0xeb40f3[_0xa871('0x22')][_0xa871('0x23')]=[{'filename':_0x1c8db8,'path':_0x46756b}];_0xeb40f3[_0xa871('0x22')][_0xa871('0x24')]=util['format'](_0xa871('0x25'),JSON[_0xa871('0x26')](_0x3a6952,null,0x2));}else if(fs['existsSync'](_0x440606)){_0x3a6952[_0xa871('0x20')]=_0xa871('0x21');_0xeb40f3[_0xa871('0x22')]['attachments']=[{'filename':_0x4f107d,'path':_0x440606}];}else{if(_0x3a6952[_0xa871('0x20')]==='Empty'){_0xeb40f3[_0xa871('0x22')][_0xa871('0x24')]=_0xa871('0x27');if(!_0x310de9[_0xa871('0x28')]){_0x270766=![];logger[_0xa871('0xf')](_0xa871('0x29'));}}else if(_0x3a6952[_0xa871('0x20')]===_0xa871('0x2a')){_0xeb40f3[_0xa871('0x22')][_0xa871('0x24')]=_0xa871('0x2b');}else if(_0x3a6952[_0xa871('0x20')]===_0xa871('0x2c')){_0xeb40f3[_0xa871('0x22')][_0xa871('0x24')]='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';}else if(_0x3a6952[_0xa871('0x20')]===_0xa871('0x2d')){_0xeb40f3[_0xa871('0x22')][_0xa871('0x24')]=_0xa871('0x2e');}else{logger[_0xa871('0xe')](_0xa871('0x2f'),_0x3a6952[_0xa871('0x20')]);}}if(_0x270766){return client[_0xa871('0x30')](_0xa871('0x31'),_0xeb40f3)['then'](function(_0xcde725){if(_0xcde725[_0xa871('0xe')]){return logger['error']('error\x20mail',JSON['stringify'](_0xcde725));}return logger[_0xa871('0xf')]('email\x20sent');})[_0xa871('0x32')](function(_0xa5e46f){return logger[_0xa871('0xe')](_0xa871('0x33'),JSON['stringify'](_0xa5e46f));});}}function handleError(){return function(_0x5b363e){return logger[_0xa871('0xe')](JSON[_0xa871('0x26')](_0x5b363e));};}function loading(_0x4e450c){logger[_0xa871('0xf')](_0xa871('0x34'));if(_0x4e450c[_0xa871('0x35')]===_0x4e450c[_0xa871('0x36')][_0xa871('0x37')]){handleSendEmail(_0x4e450c[_0xa871('0x38')],_0x4e450c[_0xa871('0x39')]);_0x4e450c[_0xa871('0x3a')][_0xa871('0x3b')]();}else{_0x4e450c['operation']['retry'](_0xa871('0x3c'));}}function completed(_0x26c5af){logger[_0xa871('0xf')](_0xa871('0x3d'));handleSendEmail(_0x26c5af['job'],_0x26c5af[_0xa871('0x39')]);_0x26c5af['operation'][_0xa871('0x3b')]();}function empty(_0x3d1128){logger[_0xa871('0xf')](_0xa871('0x3e'));handleSendEmail(_0x3d1128[_0xa871('0x38')],_0x3d1128[_0xa871('0x39')]);_0x3d1128[_0xa871('0x3a')]['stop']();}function failed(_0x20e0fa){logger[_0xa871('0xf')](_0xa871('0x3f'));handleSendEmail(_0x20e0fa[_0xa871('0x38')],_0x20e0fa[_0xa871('0x39')]);_0x20e0fa[_0xa871('0x3a')]['stop']();}function urecognized(_0x49d58f){logger[_0xa871('0xe')](_0xa871('0x40'),_0x49d58f['entity']['dataValues'][_0xa871('0x20')]);_0x49d58f[_0xa871('0x3a')][_0xa871('0x3b')]();}const reportStatusStrategies={'Loading':loading,'Completed':completed,'Empty':empty,'Failed':failed,'Unrecognized':urecognized};function retryer(_0x55b2ce,_0x4e1b0c){const _0x411c3d={'retries':0x3,'factor':0x2,'minTimeout':0x5b*0x3e8,'maxTimeout':0xa*0x3c*0x3e8};const _0x56b8c6=retry[_0xa871('0x3a')](_0x411c3d);_0x56b8c6[_0xa871('0x41')](_0xf7157f=>{logger[_0xa871('0xf')](_0xa871('0x42')+_0x55b2ce['id']+'\x20Attempt\x20#:'+_0xf7157f);try{getReportData(_0x4e1b0c['id'])['then'](function(_0x267cd8){_0x4e1b0c=_0x267cd8;logger[_0xa871('0xf')]('report\x20status:',_0x267cd8[_0xa871('0x43')][_0xa871('0x20')]);if(!reportStatusStrategies[_0x267cd8[_0xa871('0x43')][_0xa871('0x20')]]){logger[_0xa871('0xe')]('report\x20status:',_0x267cd8[_0xa871('0x43')][_0xa871('0x20')]);_0x56b8c6[_0xa871('0x7')]();}reportStatusStrategies[_0x267cd8[_0xa871('0x43')]['status']]({'operation':_0x56b8c6,'currentAttempt':_0xf7157f,'retryOptions':_0x411c3d,'job':_0x55b2ce,'data':_0x4e1b0c,'entity':_0x267cd8});});}catch(_0x1c3aaa){_0x56b8c6[_0xa871('0x7')](_0x1c3aaa);}});}function handleResult(_0x558c4c){return function(_0x3772bd){if(_0x558c4c['sendMail']&&_0x558c4c[_0xa871('0x14')]&&_0x558c4c['MailAccount'][_0xa871('0x15')]&&!_[_0xa871('0x44')](_0x558c4c[_0xa871('0x10')])){retryer(_0x558c4c,_0x3772bd);}};}function handleJob(_0x43f895){return function(){try{if(_['isNil'](_0x43f895[_0xa871('0x45')])){return logger[_0xa871('0xf')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0xa871('0x44')](_0x43f895['subtractUnit'])){return logger[_0xa871('0xf')](_0xa871('0x46'));}var _0x4e1274={'startDate':moment()[_0xa871('0x47')](_0x43f895['subtractNumber'],_0x43f895[_0xa871('0x48')])['format']('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xa871('0x12')](_0xa871('0x49')),'type':_0xa871('0x4a'),'output':_0x43f895[_0xa871('0x4b')],'name':_0x43f895[_0xa871('0x19')]};if(!_[_0xa871('0x44')](_0x43f895[_0xa871('0x4c')])){logger[_0xa871('0xf')]('exec\x20defaul\x20report\x20id:%s',_0x43f895[_0xa871('0x4c')]);return analyticDefaultReportController[_0xa871('0x4d')]({'id':_0x43f895[_0xa871('0x4c')]},_0x4e1274)[_0xa871('0x4e')](handleResult(_0x43f895))[_0xa871('0x32')](handleError());}if(!_[_0xa871('0x44')](_0x43f895['CustomReportId'])){logger[_0xa871('0xf')](_0xa871('0x4f'),_0x43f895[_0xa871('0x50')]);return analyticCustomReportController['runReport']({'id':_0x43f895[_0xa871('0x50')]},_0x4e1274)[_0xa871('0x4e')](handleResult(_0x43f895))[_0xa871('0x32')](handleError());}}catch(_0x3fa9c6){logger[_0xa871('0xe')](JSON[_0xa871('0x26')](_0x3fa9c6));}return logger[_0xa871('0xf')](_0xa871('0x51'));};}function getJobs(_0x1e38ba){var _0x5ee9fb={};if(_0x1e38ba){_0x5ee9fb['id']=_0x1e38ba;}return db[_0xa871('0x52')][_0xa871('0x53')]({'where':_0x5ee9fb,'include':[{'model':db[_0xa871('0x14')],'attributes':['id',_0xa871('0x19'),_0xa871('0x10')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db['CloudProvider'],'as':_0xa871('0x54')}]}]}]})[_0xa871('0x4e')](function(_0xe62219){var _0x17e2a3=_[_0xa871('0x55')](manager[_0xa871('0x56')]);var _0x57c587=_[_0xa871('0x57')](_0xe62219,function(_0x46f3e6){return _0x46f3e6['id']['toString']();});var _0x1ed617=_[_0xa871('0x58')](_0xe62219,function(_0x35f38d){return _0x35f38d['id'][_0xa871('0x59')]();});var _0x374360=_0x1e38ba?_0x57c587:_[_0xa871('0x5a')](_0x57c587,_0x17e2a3);var _0x47bf28=_[_0xa871('0x5b')](_0x57c587,_0x17e2a3);var _0xf7c8=_[_0xa871('0x5a')](_0x17e2a3,_0x57c587);var _0x584efb;var _0x19a0da;for(_0x584efb=0x0;_0x584efb<_0xf7c8[_0xa871('0x5c')]&&!_0x1e38ba;_0x584efb+=0x1){_0x19a0da=_0xf7c8[_0x584efb][_0xa871('0x59')]();if(manager['exists'](_0x19a0da)){manager[_0xa871('0x3b')](_0x19a0da);manager['deleteJob'](_0x19a0da);logger[_0xa871('0xf')](_0xa871('0x5d'),_0x19a0da);}}logger['info'](_0xa871('0x5e'),JSON[_0xa871('0x26')](_0x374360));for(_0x584efb=0x0;_0x584efb<_0x374360[_0xa871('0x5c')];_0x584efb+=0x1){_0x19a0da=_0x374360[_0x584efb][_0xa871('0x59')]();if(_0x1e38ba){logger[_0xa871('0xf')](JSON[_0xa871('0x26')](_0x1ed617[_0x19a0da]));BPromise['resolve']()[_0xa871('0x4e')](handleJob(_0x1ed617[_0x19a0da]));logger[_0xa871('0xf')](_0xa871('0x5f'),_0x1ed617[_0x19a0da][_0xa871('0x19')],_0x1ed617[_0x19a0da]['cron']);}else if(_0x1ed617[_0x19a0da]['cron']&&_0x1ed617[_0x19a0da][_0xa871('0x60')]&&moment()[_0xa871('0x61')](_0x1ed617[_0x19a0da][_0xa871('0x62')],_0x1ed617[_0x19a0da][_0xa871('0x63')])){manager[_0xa871('0x64')](_0x19a0da,_0x1ed617[_0x19a0da][_0xa871('0x65')],handleJob(_0x1ed617[_0x19a0da]));manager['start'](_0x19a0da);logger['info'](_0xa871('0x66'),_0x1ed617[_0x19a0da][_0xa871('0x19')],_0x1ed617[_0x19a0da][_0xa871('0x65')]);}else if(manager[_0xa871('0x67')](_0x19a0da)){manager[_0xa871('0x3b')](_0x19a0da);manager[_0xa871('0x68')](_0x19a0da);logger[_0xa871('0xf')](_0xa871('0x69'),_0x1ed617[_0x19a0da][_0xa871('0x19')],_0x1ed617[_0x19a0da][_0xa871('0x65')]);}}for(_0x584efb=0x0,_0x19a0da;_0x584efb<_0x47bf28[_0xa871('0x5c')]&&!_0x1e38ba;_0x584efb+=0x1){_0x19a0da=_0x47bf28[_0x584efb][_0xa871('0x59')]();if(manager['exists'](_0x19a0da)){if(_0x1ed617[_0x19a0da][_0xa871('0x65')]&&_0x1ed617[_0x19a0da][_0xa871('0x60')]&&moment()['isBetween'](_0x1ed617[_0x19a0da][_0xa871('0x62')],_0x1ed617[_0x19a0da][_0xa871('0x63')])){manager[_0xa871('0x6a')](_0x19a0da,_0x1ed617[_0x19a0da][_0xa871('0x65')],handleJob(_0x1ed617[_0x19a0da]));logger['info'](_0xa871('0x6b'),_0x1ed617[_0x19a0da][_0xa871('0x19')],_0x1ed617[_0x19a0da][_0xa871('0x65')]);}else{manager['stop'](_0x19a0da);manager[_0xa871('0x68')](_0x19a0da);logger[_0xa871('0xf')](_0xa871('0x69'),_0x1ed617[_0x19a0da][_0xa871('0x19')],_0x1ed617[_0x19a0da][_0xa871('0x65')]);}}}})[_0xa871('0x32')](function(_0x1c2863){logger[_0xa871('0xe')](JSON['stringify'](_0x1c2863));});}exports[_0xa871('0x6c')]=function(_0x74e04){return getJobs(_0x74e04);};exports[_0xa871('0x6d')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};