diff --git a/MP.MONO.Core/EvData.cs b/MP.MONO.Core/EvData.cs
new file mode 100644
index 0000000..6c63a1c
--- /dev/null
+++ b/MP.MONO.Core/EvData.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MP.MONO.Core
+{
+ public class EvData
+ {
+ public DateTime DtRif { get; set; } = DateTime.Now;
+
+ public double Value { get; set; } = 0;
+ }
+}
diff --git a/MP.MONO.Core/MP.MONO.Core.csproj b/MP.MONO.Core/MP.MONO.Core.csproj
index 36574d2..ad72607 100644
--- a/MP.MONO.Core/MP.MONO.Core.csproj
+++ b/MP.MONO.Core/MP.MONO.Core.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/MP.MONO.Data/Controllers/MpDbController.cs b/MP.MONO.Data/Controllers/MpDbController.cs
new file mode 100644
index 0000000..66c9d60
--- /dev/null
+++ b/MP.MONO.Data/Controllers/MpDbController.cs
@@ -0,0 +1,27 @@
+using Microsoft.Extensions.Configuration;
+using NLog;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MP.MONO.Data.Controllers
+{
+ public class MpDbController : IDisposable
+ {
+ private static IConfiguration _configuration;
+ private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
+
+ public MpDbController(IConfiguration configuration)
+ {
+ _configuration = configuration;
+ }
+
+ public void Dispose()
+ {
+ // Clear database context
+ //Log.Info("Dispose di GWMSController");
+ }
+ }
+}
diff --git a/MP.MONO.Data/DbModels/TypeConfModel.cs b/MP.MONO.Data/DbModels/TypeConfModel.cs
new file mode 100644
index 0000000..55d7190
--- /dev/null
+++ b/MP.MONO.Data/DbModels/TypeConfModel.cs
@@ -0,0 +1,52 @@
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+
+
+//
+// This is here so CodeMaid doesn't reorganize this document
+//
+namespace MP.MONO.Data.DbModels
+{
+ ///
+ /// Tabella Codifica Tipi (valore min/max e css associati)
+ ///
+ [Table("TypeConf")]
+ public class TypeConfModel
+ {
+ #region Public Properties
+
+ ///
+ /// UID
+ ///
+ [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int TypeConfId { get; set; }
+
+ ///
+ /// Tipo
+ ///
+ public string Type { get; set; } = "";
+
+ ///
+ /// Valore minimo x intervallo set
+ ///
+ public double MinVal { get; set; } = 0;
+ ///
+ /// Valore minimo x intervallo set
+ ///
+ public double MaxVal { get; set; } = 999;
+
+ ///
+ /// Classe css associata (default)
+ ///
+ [MaxLength(50)]
+ public string CssClass { get; set; } = "";
+
+ ///
+ /// Classe css associata (override): se non vuota usa questa
+ ///
+ [MaxLength(50)]
+ public string CssClassOvr { get; set; } = "";
+
+ #endregion Public Properties
+ }
+}
diff --git a/MP.MONO.Data/MP.MONO.Data.csproj b/MP.MONO.Data/MP.MONO.Data.csproj
index af4f74c..82d810e 100644
--- a/MP.MONO.Data/MP.MONO.Data.csproj
+++ b/MP.MONO.Data/MP.MONO.Data.csproj
@@ -11,7 +11,6 @@
-
diff --git a/MP.MONO.UI/Data/CurrentDataService.cs b/MP.MONO.UI/Data/CurrentDataService.cs
index 7c47fa1..c406d07 100644
--- a/MP.MONO.UI/Data/CurrentDataService.cs
+++ b/MP.MONO.UI/Data/CurrentDataService.cs
@@ -1,8 +1,78 @@
+using Microsoft.AspNetCore.Identity.UI.Services;
+using Microsoft.Extensions.Caching.Distributed;
+using Microsoft.Extensions.Caching.Memory;
+using MP.MONO.Data.Controllers;
+using NLog;
+
namespace MP.MONO.UI.Data
{
- public class CurrentDataService
+ public class CurrentDataService : IDisposable
{
+ private static IConfiguration _configuration;
+ private static ILogger _logger;
+ private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
+ private readonly IEmailSender _emailSender;
+ private readonly IDistributedCache distributedCache;
+ private readonly IMemoryCache memoryCache;
+
+ public static MpDbController dbController;
+
+ ///
+ /// Durata assoluta massima della cache IN SECONDI
+ ///
+ private int chAbsExp = 60 * 5;
+
+ ///
+ /// Durata della cache IN SECONDI in modalità inattiva (non acceduta) prima di venire rimossa
+ /// NON estende oltre il tempo massimo di validità della cache (chAbsExp)
+ ///
+ private int chSliExp = 60 * 1;
+
+ public CurrentDataService(IConfiguration configuration, ILogger logger, IMemoryCache memoryCache, IDistributedCache distributedCache, IEmailSender emailSender)
+ {
+ _logger = logger;
+ _configuration = configuration;
+ _emailSender = emailSender;
+ // conf cache
+ this.memoryCache = memoryCache;
+ this.distributedCache = distributedCache;
+ // conf DB
+ string connStr = _configuration.GetConnectionString("MP.MONO.Data");
+ if (string.IsNullOrEmpty(connStr))
+ {
+ _logger.LogError("ConnString empty!");
+ }
+ else
+ {
+ dbController = new MpDbController(configuration);
+ _logger.LogInformation("DbController OK");
+ }
+ }
+
+ private DistributedCacheEntryOptions cacheOpt(bool fastCache)
+ {
+ var numSecAbsExp = fastCache ? chAbsExp : chAbsExp * 10;
+ var numSecSliExp = fastCache ? chSliExp : chSliExp * 10;
+ return new DistributedCacheEntryOptions().SetAbsoluteExpiration(DateTime.Now.AddSeconds(numSecAbsExp)).SetSlidingExpiration(TimeSpan.FromSeconds(numSecSliExp));
+ }
+ public void Dispose()
+ {
+ // Clear database controller
+ dbController.Dispose();
+ }
+
+
+ ///
+ /// Hash Redis contenente i dati MP di una specifico TYPE (es StatusMacchina, StateMachineIngressi, ...)
+ ///
+ ///
+ ///
+ private static string mHash(string dataType)
+ {
+ return $"DATA:{dataType}";
+ }
+
protected Dictionary ParametersList { get; set; } = new Dictionary();
public async Task> GetCurrentParameters()
diff --git a/MP.MONO.UI/appsettings.json b/MP.MONO.UI/appsettings.json
index 2524115..4180e8d 100644
--- a/MP.MONO.UI/appsettings.json
+++ b/MP.MONO.UI/appsettings.json
@@ -8,14 +8,10 @@
"AllowedHosts": "*",
"ConnectionStrings": {
"Redis": "localhost:6379",
- //"AuthConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
- //"DefaultConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
- //"AdminConnection": "Server=10.74.83.97;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
- //"GWMS.Data": "Server=10.74.83.97;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
"AuthConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
- "DefaultConnection": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
- "AdminConnection": "Server=localhost;port=3306;database=GWMS;user=root;pwd=Egalware_24068!;sslmode=None;",
- "GWMS.Data": "Server=localhost;port=3306;database=GWMS;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
+ "DefaultConnection": "Server=localhost;port=3306;database=MAPO.MONO;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;",
+ "AdminConnection": "Server=localhost;port=3306;database=MAPO.MONO;user=root;pwd=Egalware_24068!;sslmode=None;",
+ "MP.MONO.Data": "Server=localhost;port=3306;database=MAPO.MONO;user=GWMS;pwd=GWMS_secret_pwd;sslmode=None;"
},
"DbConfig": {
"Server": "localhost",