diff --git a/WebDoorCreator.API/Controllers/QueueController.cs b/WebDoorCreator.API/Controllers/QueueController.cs index a02d448..155d356 100644 --- a/WebDoorCreator.API/Controllers/QueueController.cs +++ b/WebDoorCreator.API/Controllers/QueueController.cs @@ -84,6 +84,10 @@ namespace WebDoorCreator.API.Controllers var actProc = await QDataServ.RequestProcessing(); answ.Add("processing", actProc); + + + var actDone = await QDataServ.RequestDone(); + answ.Add("done", actProc); return answ; } diff --git a/WebDoorCreator.Data/Services/QueueDataService.cs b/WebDoorCreator.Data/Services/QueueDataService.cs index f1b214f..1823114 100644 --- a/WebDoorCreator.Data/Services/QueueDataService.cs +++ b/WebDoorCreator.Data/Services/QueueDataService.cs @@ -139,6 +139,33 @@ namespace WebDoorCreator.Data.Services return fatto; } + /// + /// Get Queue request done + /// + /// Dictionary of DoorId, saveVersNumb + public async Task> RequestDone() + { + string source = "REDIS"; + long numReq = 0; + Dictionary dictResult = new Dictionary(); + // cerco da cache + RedisKey currKey = new RedisKey(Constants.CALC_REQ_DDF_CACHE); + Stopwatch stopWatch = new Stopwatch(); + stopWatch.Start(); + numReq = redisDb.HashLength(currKey); + if (numReq > 0) + { + var rawData = await redisDb.HashGetAllAsync(currKey); + foreach (var item in rawData) + { + dictResult.Add($"{item.Name}", $"{item.Value}"); + } + } + stopWatch.Stop(); + TimeSpan ts = stopWatch.Elapsed; + Log.Debug($"RequestDone | {source} in: {ts.TotalMilliseconds} ms"); + return dictResult; + } /// /// Remove for single hash record /// @@ -394,6 +421,15 @@ namespace WebDoorCreator.Data.Services await RequestProcessingRemove(item.Name!); fatto = true; } + // cerco le richieste processed + currKey = new RedisKey(Constants.CALC_REQ_DONE); + rawData = await redisDb.HashGetAllAsync(currKey); + foreach (var item in rawData) + { + await RequestPendingUpsert(item.Name!, item.Value!); + await RequestDoneRemove(item.Name!); + fatto = true; + } stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; Log.Debug($"ResetQueue | REDIS in: {ts.TotalMilliseconds} ms"); diff --git a/WeebDoorCreator.SDK/WDC.cs b/WeebDoorCreator.SDK/WDC.cs index 7e8bb18..f128488 100644 --- a/WeebDoorCreator.SDK/WDC.cs +++ b/WeebDoorCreator.SDK/WDC.cs @@ -195,16 +195,23 @@ namespace WeebDoorCreator.SDK // cerco online RestClient client = new RestClient(apiUrl); var request = new RestRequest(URL); - var response = client.Get(request); - // controllo status code risposta - if (response.StatusCode == System.Net.HttpStatusCode.OK) + try { - // deserializzo risposta - answ = response.Content; + var response = client.Get(request); + // controllo status code risposta + if (response.StatusCode == System.Net.HttpStatusCode.OK) + { + // deserializzo risposta + answ = response.Content; + } + else + { + answ = "KO"; + } } - else + catch { - answ = "KO"; + answ = "ERR"; } // restituisco valore! return answ; @@ -242,7 +249,9 @@ namespace WeebDoorCreator.SDK } } catch - { } + { + answ = "ERR"; + } // restituisco valore! return answ; } @@ -274,7 +283,9 @@ namespace WeebDoorCreator.SDK } } catch - { } + { + answ = "ERR"; + } // restituisco valore! return answ; } @@ -305,16 +316,23 @@ namespace WeebDoorCreator.SDK { request.AddJsonBody(payload); } - var response = client.Post(request); - // controllo status code risposta - if (response.StatusCode == System.Net.HttpStatusCode.OK) + try { - // deserializzo risposta - answ = response.Content; + var response = client.Post(request); + // controllo status code risposta + if (response.StatusCode == System.Net.HttpStatusCode.OK) + { + // deserializzo risposta + answ = response.Content; + } + else + { + answ = "KO"; + } } - else + catch { - answ = "KO"; + answ = "ERR"; } // restituisco valore! return answ;