From d87262db1364373b68e09e1df0dfda17dafe8e05 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Mon, 14 Feb 2022 15:55:06 +0100 Subject: [PATCH] Inizio conf servizi accesso dati --- MP.MONO.Core/EvData.cs | 15 +++++ MP.MONO.Core/MP.MONO.Core.csproj | 2 +- MP.MONO.Data/Controllers/MpDbController.cs | 27 ++++++++ MP.MONO.Data/DbModels/TypeConfModel.cs | 52 ++++++++++++++++ MP.MONO.Data/MP.MONO.Data.csproj | 1 - MP.MONO.UI/Data/CurrentDataService.cs | 72 +++++++++++++++++++++- MP.MONO.UI/appsettings.json | 10 +-- 7 files changed, 169 insertions(+), 10 deletions(-) create mode 100644 MP.MONO.Core/EvData.cs create mode 100644 MP.MONO.Data/Controllers/MpDbController.cs create mode 100644 MP.MONO.Data/DbModels/TypeConfModel.cs 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",