diff --git a/GPW.CORE.Api/Controllers/CheckProjController.cs b/GPW.CORE.Api/Controllers/ProjCheckController.cs
similarity index 56%
rename from GPW.CORE.Api/Controllers/CheckProjController.cs
rename to GPW.CORE.Api/Controllers/ProjCheckController.cs
index e2a9b7d..7257b90 100644
--- a/GPW.CORE.Api/Controllers/CheckProjController.cs
+++ b/GPW.CORE.Api/Controllers/ProjCheckController.cs
@@ -1,13 +1,14 @@
using GPW.CORE.Api.Data;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
+using NLog;
using System.Text;
namespace GPW.CORE.Api.Controllers
{
[Route("api/[controller]")]
[ApiController]
- public class CheckProjController : ControllerBase
+ public class ProjCheckController : ControllerBase
{
///
@@ -15,32 +16,30 @@ namespace GPW.CORE.Api.Controllers
///
protected ApiDataService dataService { get; set; }
- private readonly ILogger _logger;
+ private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
- public CheckProjController(ILogger logger, ApiDataService DataService)
+ public ProjCheckController(ILogger logger, ApiDataService DataService)
{
- _logger = logger;
dataService = DataService;
- _logger.LogInformation("Avviata classe CheckProj");
+ Log.Info("Avviata classe CheckProj");
}
- [HttpGet("TryLock")]
+ [HttpGet("ResAlloc")]
public async Task Get()
{
string answ = "ND";
- StringBuilder sbLog = new StringBuilder();
StringBuilder sbActions = new StringBuilder();
+ sbActions.AppendLine("------------------------------");
// recupero progetti attivi...
+ Log.Info("----------------------------------------------");
var currProj = await dataService.AnagProjActiv();
- sbLog.AppendLine("-----------------------");
- sbLog.AppendLine($"Found {currProj.Count} Active Projects");
-
+ Log.Info($"Trovati {currProj.Count} Progetti Attivi");
// leggo fasi attive
var currFasiAct = await dataService.AnagFasiActiv();
- sbLog.AppendLine($"Found {currFasiAct.Count} Active Phases");
+ Log.Info($"Trovate {currFasiAct.Count} Fasi Attive");
+ Log.Info("----------------------------------------------");
- sbLog.AppendLine("-----------------------");
// ciclo elenco fasi ancestor di ognuno...
foreach (var itemProj in currProj)
{
@@ -48,32 +47,28 @@ namespace GPW.CORE.Api.Controllers
var subsetFasi = currFasiAct
.Where(x => x.IdxProgetto == itemProj.IdxProgetto && x.IdxFaseAncest == 0)
.ToList();
- sbLog.AppendLine("----------");
- string projData = $"[{itemProj.IdxProgetto}] {itemProj.ClienteNav.RagSociale} - {itemProj.NomeProj} | Found {subsetFasi.Count} Phases";
- sbLog.AppendLine(projData);
+ string projData = $"[P.{itemProj.IdxProgetto}] {itemProj.Gruppo} | {itemProj.ClienteNav.RagSociale} | {itemProj.NomeProj} | {subsetFasi.Count} Fasi";
+ Log.Info(projData);
// ciclo x ogni fase Parent
foreach (var parentFase in subsetFasi)
{
// se ne trovo valuto le ore impiegate...
- var statoFase = await dataService.CalcOreFase(parentFase.IdxFase);
+ var statoFase = await dataService.CalcOreFase(parentFase.IdxFase, false);
// se ore usate > (ore budget x %) --> CHIUDO!
- if (statoFase != null && statoFase.percUsed >= (decimal)statoFase.percOpen)
+ if (statoFase != null && statoFase.totOre >= (statoFase.budgetTime * (decimal)statoFase.percOpen))
{
// x ora LOG... poi chiudo...
- string currAction = $"!!! [{parentFase.IdxFase}] Budget exhausted for Phase {parentFase.NomeFase} {statoFase.totOre:N2}h used, {statoFase.percUsed:P1} vs {statoFase.percOpen:P1}";
- sbLog.AppendLine(currAction);
- sbActions.AppendLine("----------");
+ string currAction = $"[F.{parentFase.IdxFase}] Budget esaurito in Fase {parentFase.NomeFase} {statoFase.totOre:N2}h consumate, budgt {statoFase.budgetTime:N0} al {statoFase.percOpen:P1}";
+ Log.Warn(currAction);
sbActions.AppendLine(projData);
sbActions.AppendLine(currAction);
+ sbActions.AppendLine("------------------------------");
}
}
}
- // LOG esteso locale
- _logger.LogInformation(sbLog.ToString());
-
// ritorno solo LOG azioni
answ = sbActions.ToString();
return answ;
diff --git a/GPW.CORE.Api/Data/ApiDataService.cs b/GPW.CORE.Api/Data/ApiDataService.cs
index 0539f0f..371aead 100644
--- a/GPW.CORE.Api/Data/ApiDataService.cs
+++ b/GPW.CORE.Api/Data/ApiDataService.cs
@@ -40,7 +40,7 @@ namespace GPW.CORE.Api.Data
///
/// TTL da 1 min x cache Redis
///
- protected const int shortTTL = 60 * 1;
+ protected const int shortTTL = 60 * 5;
#endregion Protected Fields
@@ -207,7 +207,7 @@ namespace GPW.CORE.Api.Data
///
///
///
- public async Task CalcOreFase(int idxFase)
+ public async Task CalcOreFase(int idxFase, bool doLog)
{
CalcOreFasiModel? dbResult = new CalcOreFasiModel();
string cacheKey = $"{rKeyCalcOreFase}:{idxFase}";
@@ -226,7 +226,10 @@ namespace GPW.CORE.Api.Data
await setRSV(cacheKey, rawData, shortTTL);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
- Log.Trace($"Effettuata lettura da DB per CalcOreFase: {ts.TotalMilliseconds} ms");
+ if (doLog)
+ {
+ Log.Trace($"Effettuata lettura da DB per CalcOreFase: {ts.TotalMilliseconds} ms");
+ }
}
if (dbResult == null)
{
diff --git a/GPW.CORE.UI/GPW.CORE.UI.csproj b/GPW.CORE.UI/GPW.CORE.UI.csproj
index 87f30dc..cecdfe0 100644
--- a/GPW.CORE.UI/GPW.CORE.UI.csproj
+++ b/GPW.CORE.UI/GPW.CORE.UI.csproj
@@ -2,7 +2,7 @@
net6.0
- 3.0.2201.2614
+ 3.0.2201.2615
enable
enable