diff --git a/MP-TAB3/MP-TAB3.csproj b/MP-TAB3/MP-TAB3.csproj
index b79bd3a4..f073261a 100644
--- a/MP-TAB3/MP-TAB3.csproj
+++ b/MP-TAB3/MP-TAB3.csproj
@@ -3,7 +3,7 @@
net8.0
enable
- 8.16.2606.119
+ 8.16.2606.408
enable
MP_TAB3
diff --git a/MP-TAB3/Program.cs b/MP-TAB3/Program.cs
index 178df0d6..f00f0736 100644
--- a/MP-TAB3/Program.cs
+++ b/MP-TAB3/Program.cs
@@ -2,16 +2,18 @@
using Blazored.LocalStorage;
using Blazored.SessionStorage;
#endif
-using Microsoft.AspNetCore.Components;
-using Microsoft.AspNetCore.Components.Web;
-using Microsoft.AspNetCore.StaticFiles;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Diagnostics;
+using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.FileProviders;
using MP.Data;
using MP.Data.Services;
using NLog;
using NLog.Web;
using StackExchange.Redis;
-using static Org.BouncyCastle.Math.EC.ECCurve;
+using ZiggyCreatures.Caching.Fusion;
+using ZiggyCreatures.Caching.Fusion.Backplane.StackExchangeRedis;
+using ZiggyCreatures.Caching.Fusion.Serialization.NewtonsoftJson;
var builder = WebApplication.CreateBuilder(args);
@@ -27,15 +29,45 @@ var cString = configuration.GetConnectionString("Redis");
string connStringRedis = cString ?? "localhost:6379, DefaultDatabase=5, connectTimeout=5000, syncTimeout=5000, asyncTimeout=5000, abortConnect=false, ssl=false";
//string redisSrvAddr = connStringRedis.Substring(0, connStringRedis.IndexOf(":"));
// avvio oggetto shared x redis...
-var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
+IConnectionMultiplexer redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
// Add services x accesso dati
builder.Services.AddSingleton(redisMultiplexer);
+// ✅ FusionCache
+builder.Services.AddFusionCache()
+ .WithDistributedCache(sp => sp.GetRequiredService())
+ .WithSerializer(new FusionCacheNewtonsoftJsonSerializer())
+ .WithBackplane(new RedisBackplane(new RedisBackplaneOptions
+ {
+ ConnectionMultiplexerFactory = () => Task.FromResult(redisMultiplexer)
+ }));
+
+// Metodi principali x accesso dati
+var connStr = builder.Configuration.GetConnectionString("MP.Data")
+ ?? throw new InvalidOperationException("ConnString 'MP.Data' mancante.");
+// aggiungo il costruttore x i vari DbContextFactory
+builder.Services.AddDbContextFactory(options =>
+ options.UseSqlServer(connStr)
+ .EnableSensitiveDataLogging(false) // true solo in Sviluppo
+ .ConfigureWarnings(w => w.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning)));
+
+var connStrFL = builder.Configuration.GetConnectionString("MP.Flux")
+ ?? throw new InvalidOperationException("ConnString 'MP.Flux' mancante.");
+builder.Services.AddDbContextFactory(options =>
+ options.UseSqlServer(connStrFL)
+ .EnableSensitiveDataLogging(false) // true solo in Sviluppo
+ .ConfigureWarnings(w => w.Ignore(CoreEventId.ManyServiceProvidersCreatedWarning)));
+
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();
+
+// Init centralizzato Repository/Servizi da MP.Data Services
+builder.Services.AddTabDataLayer();
+
+#if false
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
@@ -43,13 +75,10 @@ builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddScoped();
-#if false
-builder.Services.AddBlazoredLocalStorage();
-builder.Services.AddBlazoredSessionStorage();
-#endif
// aggiunta helper local/session storage service
builder.Services.AddScoped();
-builder.Services.AddScoped();
+builder.Services.AddScoped();
+#endif
// gestione email
builder.Services.Configure(builder.Configuration.GetSection(nameof(MailKitMailSettings)));
@@ -62,7 +91,7 @@ logger.Info("Aggiunti services");
var app = builder.Build();
// aggiunt base URL x routing corretto
-var pathBase= configuration.GetValue("SpecialConf:AppUrl") ?? (configuration.GetValue("OptConf:AppUrl") ?? "");
+var pathBase = configuration.GetValue("SpecialConf:AppUrl") ?? (configuration.GetValue("OptConf:AppUrl") ?? "");
app.UsePathBase(pathBase);
// Configure the HTTP request pipeline.
@@ -78,7 +107,7 @@ app.UseHttpsRedirection();
app.UseStaticFiles();
// gestione static files: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-8.0
-string BasePathDisegni = configuration.GetValue("ServerConf:BasePathDisegni") ?? configuration.GetValue("OptConf:BasePathDisegni")?? "";
+string BasePathDisegni = configuration.GetValue("ServerConf:BasePathDisegni") ?? configuration.GetValue("OptConf:BasePathDisegni") ?? "";
if (!string.IsNullOrEmpty(BasePathDisegni))
{
// verifico esista folder disegni
diff --git a/MP-TAB3/Resources/ChangeLog.html b/MP-TAB3/Resources/ChangeLog.html
index 7e42922e..6e774415 100644
--- a/MP-TAB3/Resources/ChangeLog.html
+++ b/MP-TAB3/Resources/ChangeLog.html
@@ -1,6 +1,6 @@
Modulo MAPOSPEC
- Versione: 8.16.2606.119
+ Versione: 8.16.2606.408
Note di rilascio:
-
diff --git a/MP-TAB3/Resources/VersNum.txt b/MP-TAB3/Resources/VersNum.txt
index 28d1df86..988a0006 100644
--- a/MP-TAB3/Resources/VersNum.txt
+++ b/MP-TAB3/Resources/VersNum.txt
@@ -1 +1 @@
-8.16.2606.119
+8.16.2606.408
diff --git a/MP-TAB3/Resources/manifest.xml b/MP-TAB3/Resources/manifest.xml
index d464ba46..1c9cc682 100644
--- a/MP-TAB3/Resources/manifest.xml
+++ b/MP-TAB3/Resources/manifest.xml
@@ -1,6 +1,6 @@
-
- 8.16.2606.119
+ 8.16.2606.408
https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/MP-TAB3.zip
https://nexus.steamware.net/repository/SWS/MP-TAB3/stable/LAST/ChangeLog.html
false
diff --git a/MP-TAB3/appsettings.json b/MP-TAB3/appsettings.json
index 6ef14f69..47c80c14 100644
--- a/MP-TAB3/appsettings.json
+++ b/MP-TAB3/appsettings.json
@@ -8,16 +8,10 @@
"AllowedHosts": "*",
"CodApp": "MP.TAB",
"ConnectionStrings": {
- //"Redis": "redis.ufficio:26379,serviceName=devel,DefaultDatabase=6,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false,allowAdmin=true",
- //"MP.All": "Server=SQL2022PROD;Database=Donati_LAV_MoonPro_prod; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
- //"MP.Mon": "Server=SQL2022PROD;Database=Donati_LAV_MoonPro_prod; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
- //"MP.IS": "Server=SQL2022PROD;Database=MoonPro_IS_EdilChim; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.INVE;",
- //"MP.Tab": "Server=SQL2022PROD;Database=Donati_LAV_MoonPro_prod; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
- //"MP.Mag": "Server=SQL2022PROD;Database=MoonPro_MAG; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;"
-
"Redis": "redis.ufficio:26379,serviceName=devel,DefaultDatabase=5,connectTimeout=5000,syncTimeout=5000,asyncTimeout=5000,abortConnect=false,ssl=false,allowAdmin=true",
"MP.All": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
"MP.Data": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
+ "MP.Flux": "Server=SQL2016DEV;Database=MoonPro_FluxData; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
"MP.Mon": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
"MP.IS": "Server=SQL2016DEV;Database=MoonPro_IS_EdilChim; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.INVE;",
"MP.Tab": "Server=SQL2016DEV;Database=MoonPro; User ID=sa;Password=keyhammer16; integrated security=False; MultipleActiveResultSets=True; App=MP.TAB3;",
diff --git a/MP.AppAuth/Controllers/AppAuthController.cs b/MP.AppAuth/Controllers/AppAuthController.cs
index bd6047d5..91407d3e 100644
--- a/MP.AppAuth/Controllers/AppAuthController.cs
+++ b/MP.AppAuth/Controllers/AppAuthController.cs
@@ -12,16 +12,23 @@ namespace MP.AppAuth.Controllers
{
public class AppAuthController
{
+ #region Private Fields
+
+ private readonly IConfiguration _configuration;
+
+ private static Logger Log = LogManager.GetCurrentClassLogger();
+
+ #endregion
+
#region Public Constructors
public AppAuthController(IConfiguration configuration)
{
_configuration = configuration;
-
Log.Info("Avviata classe AppAuthController");
}
- #endregion Public Constructors
+ #endregion
#region Public Methods
@@ -189,8 +196,6 @@ namespace MP.AppAuth.Controllers
return dbResult;
}
-
-
///
/// Elenco Record x gestione Update
///
@@ -225,12 +230,5 @@ namespace MP.AppAuth.Controllers
}
#endregion Public Methods
-
- #region Private Fields
-
- private static IConfiguration _configuration;
- private static Logger Log = LogManager.GetCurrentClassLogger();
-
- #endregion Private Fields
}
-}
\ No newline at end of file
+}
diff --git a/MP.AppAuth/Controllers/AppUserController.cs b/MP.AppAuth/Controllers/AppUserController.cs
index dde09586..f906fbb5 100644
--- a/MP.AppAuth/Controllers/AppUserController.cs
+++ b/MP.AppAuth/Controllers/AppUserController.cs
@@ -11,6 +11,16 @@ namespace MP.AppAuth.Controllers
{
public class AppUserController : IDisposable
{
+ #region Private Fields
+
+ private readonly IConfiguration _configuration;
+
+ private static Logger Log = LogManager.GetCurrentClassLogger();
+
+ private bool _disposed = false;
+
+ #endregion
+
#region Public Constructors
public AppUserController(IConfiguration configuration)
@@ -19,7 +29,7 @@ namespace MP.AppAuth.Controllers
Log.Info("Avviata classe AppUserController");
}
- #endregion Public Constructors
+ #endregion
#region Public Methods
@@ -42,18 +52,28 @@ namespace MP.AppAuth.Controllers
return dbResult;
}
- public void Dispose()
- {
- GC.Collect();
- }
-
#endregion Public Methods
- #region Private Fields
+ #region Protected Methods
- private static IConfiguration _configuration = null!;
- private static Logger Log = LogManager.GetCurrentClassLogger();
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposed)
+ {
+ if (disposing)
+ {
+ // Free managed resources here
+ }
+ _disposed = true;
+ }
+ }
- #endregion Private Fields
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ #endregion
}
-}
\ No newline at end of file
+}
diff --git a/MP.AppAuth/Controllers/MPController .cs b/MP.AppAuth/Controllers/MPController .cs
index b3dee069..739b5150 100644
--- a/MP.AppAuth/Controllers/MPController .cs
+++ b/MP.AppAuth/Controllers/MPController .cs
@@ -10,19 +10,15 @@ namespace MP.AppAuth.Controllers
{
public class MPController : IDisposable
{
- #region Public Fields
-
- public static MPController dbController;
-
- #endregion Public Fields
-
#region Private Fields
- private static IConfiguration _configuration;
+ private readonly IConfiguration _configuration;
private static Logger Log = LogManager.GetCurrentClassLogger();
- #endregion Private Fields
+ private bool _disposed = false;
+
+ #endregion
#region Public Constructors
@@ -32,7 +28,7 @@ namespace MP.AppAuth.Controllers
Log.Info("Avviata classe MpController");
}
- #endregion Public Constructors
+ #endregion
#region Public Methods
@@ -271,15 +267,6 @@ namespace MP.AppAuth.Controllers
return fatto;
}
- public void Dispose()
- {
- if (dbController != null)
- {
- // Clear database controller
- dbController.Dispose();
- }
- }
-
///
/// Elenco Record x ListValues
///
@@ -380,5 +367,27 @@ namespace MP.AppAuth.Controllers
}
#endregion Public Methods
+
+ #region Protected Methods
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposed)
+ {
+ if (disposing)
+ {
+ // Free managed resources here
+ }
+ _disposed = true;
+ }
+ }
+
+ public void Dispose()
+ {
+ Dispose(true);
+ GC.SuppressFinalize(this);
+ }
+
+ #endregion
}
-}
\ No newline at end of file
+}
diff --git a/MP.AppAuth/DataServiceCollectionExtensions.cs b/MP.AppAuth/DataServiceCollectionExtensions.cs
new file mode 100644
index 00000000..56841d9a
--- /dev/null
+++ b/MP.AppAuth/DataServiceCollectionExtensions.cs
@@ -0,0 +1,23 @@
+using Microsoft.Extensions.DependencyInjection;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace MP.AppAuth
+{
+ public static class DataServiceCollectionExtensions
+ {
+ ///
+ /// Aggiunta repository/servizi specifici per IOC
+ ///
+ ///
+ ///
+ public static IServiceCollection AddAuthLandDataLayer(this IServiceCollection services)
+ {
+
+ return services;
+ }
+ }
+}
diff --git a/MP.AppAuth/MoonProContext.cs b/MP.AppAuth/MoonProContext.cs
index 6a1d615d..03219310 100644
--- a/MP.AppAuth/MoonProContext.cs
+++ b/MP.AppAuth/MoonProContext.cs
@@ -18,11 +18,12 @@ namespace MP.AppAuth
#region Public Constructors
- [Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
+ [Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. DbContextOptions must be supplied.")]
public MoonProContext()
{
}
+ [Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. DbContextOptions must be supplied.")]
public MoonProContext(IConfiguration configuration)
{
_configuration = configuration;
diff --git a/MP.AppAuth/Services/AppAuthService.cs b/MP.AppAuth/Services/AppAuthService.cs
index 7ab866af..f4ec89f4 100644
--- a/MP.AppAuth/Services/AppAuthService.cs
+++ b/MP.AppAuth/Services/AppAuthService.cs
@@ -20,10 +20,6 @@ namespace MP.AppAuth.Services
// diritti (cablato)
public const string RoleSuperAdmin = "MoonPro_SuperAdmin";
- public static AppAuthController dbController;
- public static MPController MpDbController;
- public static AppUserController userController;
-
#endregion Public Fields
#region Private Fields
@@ -37,15 +33,15 @@ namespace MP.AppAuth.Services
private const string rKeyPermUser = $"{redisBaseAddr}:PERM_USER";
- private static IConfiguration _configuration;
+ private readonly IConfiguration _configuration;
- private static ILogger _logger;
+ private readonly ILogger _logger;
- private static JsonSerializerSettings? JSSettings;
+ private readonly JsonSerializerSettings? JSSettings;
private static Logger Log = LogManager.GetCurrentClassLogger();
- private static string Modulo = "";
+ private string Modulo = "";
///
/// Durata cache lunga IN SECONDI
@@ -60,23 +56,27 @@ namespace MP.AppAuth.Services
///
/// Oggetto per connessione a REDIS
///
- private IConnectionMultiplexer redisConn;
+ private readonly IConnectionMultiplexer redisConn;
//ISubscriber sub = redis.GetSubscriber();
///
/// Oggetto DB redis da impiegare x chiamate R/W
///
- private StackExchange.Redis.IDatabase redisDb = null!;
+ private readonly StackExchange.Redis.IDatabase redisDb;
- private Random rnd = new Random();
+ private readonly Random rnd = new Random();
private Dictionary Vocabolario = new Dictionary();
+ private readonly AppAuthController _appAuthController;
+ private readonly MPController _mpController;
+ private readonly AppUserController _appUserController;
+
#endregion Private Fields
#region Public Constructors
- public AppAuthService(IConfiguration configuration, ILogger logger, IConnectionMultiplexer redisConnMult)
+ public AppAuthService(IConfiguration configuration, ILogger logger, IConnectionMultiplexer redisConnMult, AppAuthController appAuthController, MPController mpController, AppUserController appUserController)
{
_logger = logger;
_configuration = configuration;
@@ -103,9 +103,9 @@ namespace MP.AppAuth.Services
}
else
{
- dbController = new AppAuthController(configuration);
- MpDbController = new MPController(configuration);
- userController = new AppUserController(configuration);
+ _appAuthController = appAuthController;
+ _mpController = mpController;
+ _appUserController = appUserController;
_logger.LogInformation("DbController OK");
}
}
@@ -114,7 +114,7 @@ namespace MP.AppAuth.Services
#region Private Properties
- private string CodApp { get; set; } = "";
+ private string CodApp { get; }
///
/// Durata cache lunga (+ perturbazione percentuale +/-10%)
@@ -153,7 +153,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagCauSca();
+ dbResult = _mpController.AnagCauSca();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagCauSca: {ts.TotalMilliseconds} ms");
@@ -169,7 +169,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagClassiTempo();
+ dbResult = _mpController.AnagClassiTempo();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagClassiTempo: {ts.TotalMilliseconds} ms");
@@ -185,7 +185,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagEventi();
+ dbResult = _mpController.AnagEventi();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagEventi: {ts.TotalMilliseconds} ms");
@@ -201,7 +201,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = dbController.AnagGruppiGetAll();
+ dbResult = _appAuthController.AnagGruppiGetAll();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagGruppiAll: {ts.TotalMilliseconds} ms");
@@ -213,7 +213,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = dbController.AnagGruppiFilt(codTipo);
+ dbResult = _appAuthController.AnagGruppiFilt(codTipo);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagGruppiFilt: {ts.TotalMilliseconds} ms");
@@ -229,7 +229,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagIngressi();
+ dbResult = _mpController.AnagIngressi();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagIngressi: {ts.TotalMilliseconds} ms");
@@ -241,7 +241,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.AnagKeyValuesUpsert(currRec);
+ answ = _mpController.AnagKeyValuesUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"AnagKeyValAdd | Aggiunto rec | NomeVar: {currRec.NomeVar} | durata: {ts.TotalMilliseconds} ms");
@@ -253,7 +253,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.AnagKeyValuesDelete(NomeVar);
+ answ = _mpController.AnagKeyValuesDelete(NomeVar);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"AnagKeyValDelete | Effettuata cancellazione | NomeVar: {NomeVar} | durata: {ts.TotalMilliseconds} ms");
@@ -265,7 +265,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagKeyValuesGetAll();
+ dbResult = _mpController.AnagKeyValuesGetAll();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagKeyValList: {ts.TotalMilliseconds} ms");
@@ -277,7 +277,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.AnagKeyValuesUpsert(currRec);
+ answ = _mpController.AnagKeyValuesUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"AnagKeyValUpd | Effettuata modifica | NomeVar: {currRec.NomeVar} | durata: {ts.TotalMilliseconds} ms");
@@ -293,7 +293,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagMicroStati();
+ dbResult = _mpController.AnagMicroStati();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagMicroStati: {ts.TotalMilliseconds} ms");
@@ -305,7 +305,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- var rawData = dbController
+ var rawData = _appAuthController
.AnagOpByGruppoGetFilt(codGruppo, searchVal);
dbResult = rawData
.GroupBy(user => user.MatrOpr)
@@ -322,7 +322,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = dbController.AnagOpGetAll(searchVal);
+ dbResult = _appAuthController.AnagOpGetAll(searchVal);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagOperList: {ts.TotalMilliseconds} ms");
@@ -338,7 +338,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.AnagStati();
+ dbResult = _mpController.AnagStati();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per AnagStati: {ts.TotalMilliseconds} ms");
@@ -350,7 +350,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.ConfigUpsert(currRec);
+ answ = _mpController.ConfigUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"ConfigAdd | Aggiunto rec | Chiave: {currRec.Chiave} | durata: {ts.TotalMilliseconds} ms");
@@ -362,7 +362,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.ConfigDelete(Chiave);
+ answ = _mpController.ConfigDelete(Chiave);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"ConfigDelete | Effettuata cancellazione | Chiave: {Chiave} | durata: {ts.TotalMilliseconds} ms");
@@ -374,7 +374,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.ConfigGetAll();
+ dbResult = _mpController.ConfigGetAll();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per ConfigList: {ts.TotalMilliseconds} ms");
@@ -386,7 +386,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.ConfigUpsert(currRec);
+ answ = _mpController.ConfigUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"ConfigUpd | Effettuata modifica | Chiave: {currRec.Chiave} | durata: {ts.TotalMilliseconds} ms");
@@ -415,7 +415,7 @@ namespace MP.AppAuth.Services
else
{
// recupero diritti utente
- dbResult = userController.DirittiUtente(UserName, Modulo);
+ dbResult = _appUserController.DirittiUtente(UserName, Modulo);
rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
@@ -430,11 +430,8 @@ namespace MP.AppAuth.Services
public void Dispose()
{
- // Clear database controller
- if (MpDbController != null)
- {
- MpDbController.Dispose();
- }
+ // Clear database controllers
+ _mpController?.Dispose();
}
public async Task FlushRedisCache()
@@ -455,7 +452,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.ListValues();
+ dbResult = _mpController.ListValues();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per ListValues: {ts.TotalMilliseconds} ms");
@@ -484,7 +481,7 @@ namespace MP.AppAuth.Services
else
{
// recupero diritti utente
- dbResult = MpDbController.MacchineGetAll();
+ dbResult = _mpController.MacchineGetAll();
rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
redisDb.StringSet(currKey, rawData, UltraLongCache);
}
@@ -526,7 +523,7 @@ namespace MP.AppAuth.Services
else
{
// recupero diritti utente
- var userRightList = userController.DirittiUtente(UserName, Modulo);
+ var userRightList = _appUserController.DirittiUtente(UserName, Modulo);
// proietto come funzioni...
var ListFunc = userRightList.Select(x => x.Funzione).ToList();
// trasformo i permessi utente
@@ -534,7 +531,7 @@ namespace MP.AppAuth.Services
{
ListFunc = new List();
}
- dbResult = dbController.PermessiGetByFunc(ListFunc);
+ dbResult = _appAuthController.PermessiGetByFunc(ListFunc);
rawData = JsonConvert.SerializeObject(dbResult, JSSettings);
await redisDb.StringSetAsync(currKey, rawData, UltraLongCache);
}
@@ -565,7 +562,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = dbController.UpdManGetAll();
+ dbResult = _appAuthController.UpdManGetAll();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per UpdManList: {ts.TotalMilliseconds} ms");
@@ -577,7 +574,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.VocabolarioUpsert(currRec);
+ answ = _mpController.VocabolarioUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"VocabolarioAdd | Aggiunto rec | lingua: {currRec.Lingua} | lemma: {currRec.Lemma} | durata: {ts.TotalMilliseconds} ms");
@@ -589,7 +586,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.VocabolarioDelete(currRec);
+ answ = _mpController.VocabolarioDelete(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"VocabolarioDelete | Effettuata cancellazione | lingua: {currRec.Lingua} | lemma: {currRec.Lemma} | durata: {ts.TotalMilliseconds} ms");
@@ -601,7 +598,7 @@ namespace MP.AppAuth.Services
List dbResult = new List();
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- dbResult = MpDbController.VocabolarioGetAll();
+ dbResult = _mpController.VocabolarioGetAll();
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"Effettuata lettura da DB per VocabolarioList: {ts.TotalMilliseconds} ms");
@@ -613,7 +610,7 @@ namespace MP.AppAuth.Services
bool answ = false;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
- answ = MpDbController.VocabolarioUpsert(currRec);
+ answ = _mpController.VocabolarioUpsert(currRec);
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
Log.Trace($"VocabolarioUpd | Effettuata modifica | lingua: {currRec.Lingua} | lemma: {currRec.Lemma} | durata: {ts.TotalMilliseconds} ms");
@@ -641,7 +638,7 @@ namespace MP.AppAuth.Services
}
else
{
- Vocabolario = dbController
+ Vocabolario = _appAuthController
.VocabolarioGetAll()
.ToDictionary(x => $"{x.Lingua}#{x.Lemma}", x => x.Traduzione);
rawData = JsonConvert.SerializeObject(Vocabolario);
@@ -665,10 +662,10 @@ namespace MP.AppAuth.Services
{
bool answ = false;
var masterEndpoint = redisConn.GetEndPoints()
- .Where(ep => redisConn.GetServer(ep).IsConnected && !redisConn.GetServer(ep).IsReplica)
- .FirstOrDefault();
+ .Where(ep => redisConn.GetServer(ep).IsConnected && !redisConn.GetServer(ep).IsReplica)
+ .FirstOrDefault();
- // sepattern è "*" elimino intero DB...
+ // se pattern è "*" elimino intero DB...
if (masterEndpoint != null && (pat2Flush.Equals(new RedisValue("*")) || pat2Flush == RedisValue.Null))
{
redisConn.GetServer(masterEndpoint).FlushDatabase(database: redisDb.Database);
@@ -699,4 +696,4 @@ namespace MP.AppAuth.Services
#endregion Private Methods
}
-}
\ No newline at end of file
+}
diff --git a/MP.Core/Utils.cs b/MP.Core/Utils.cs
index b138599a..5af55b84 100644
--- a/MP.Core/Utils.cs
+++ b/MP.Core/Utils.cs
@@ -12,6 +12,7 @@ namespace MP.Core
public const string redisAnagGruppi = redisBaseAddr + "Cache:AnagGruppi";
public const string redisAnagStati = redisBaseAddr + "Cache:AnagStati";
+ public const string redisAnagGruppiOpr = redisBaseAddr + "Cache:GrpByOpr";
public const string redisArtByDossier = redisBaseAddr + "Cache:ArtByDossier";
public const string redisArtList = redisBaseAddr + "Cache:ArtList";
diff --git a/MP.Data/Controllers/MpIocController.cs b/MP.Data/Controllers/MpIocController.cs
index c452739b..6502ccf6 100644
--- a/MP.Data/Controllers/MpIocController.cs
+++ b/MP.Data/Controllers/MpIocController.cs
@@ -15,15 +15,30 @@ namespace MP.Data.Controllers
{
public class MpIocController
{
+ protected readonly IDbContextFactory _ctxFactory;
+ protected readonly IDbContextFactory _ctxFactoryFL;
#region Public Constructors
- public MpIocController(IConfiguration configuration)
+ public MpIocController(
+ IConfiguration configuration,
+ IDbContextFactory ctxFactory,
+ IDbContextFactory ctxFactoryFL)
{
- _configuration = configuration;
- string connStr = _configuration.GetConnectionString("MP.Data");
+#if false
+ _configuration = configuration;
+#endif
+ _ctxFactory = ctxFactory;
+ _ctxFactoryFL = ctxFactoryFL;
+#if false
+ string connStr = configuration.GetConnectionString("MP.Data");
options = new DbContextOptionsBuilder()
.UseSqlServer(connStr)
+ .Options;
+ string connStrFlux = configuration.GetConnectionString("MP.Flux");
+ optionsFlux = new DbContextOptionsBuilder()
+ .UseSqlServer(connStrFlux)
.Options;
+#endif
Log.Info("Avviata classe MpIocController");
}
@@ -43,7 +58,7 @@ namespace MP.Data.Controllers
///
public async Task AlarmLogInsertAsync(DateTime dtRif, string machineId, string memAddress, int memIndex, int statusVal, string valDecoded)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var DtRif = new SqlParameter("@DtRif", dtRif);
var MachineId = new SqlParameter("@MachineId", machineId);
@@ -63,7 +78,7 @@ namespace MP.Data.Controllers
///
public async Task
> AnagStatiGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetAnagStati
@@ -81,7 +96,7 @@ namespace MP.Data.Controllers
///
public async Task> ArticoliGetLastByMaccAsync(string idxMacc)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = await dbCtx
@@ -107,7 +122,7 @@ namespace MP.Data.Controllers
///
public async Task AutoStartOdlAsync(int idxOdl, int MatrOpr, string idxMacchina, decimal tCRich, int pzPallet, string note, bool startNewOdl, int qtyRich, string keyRich)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxOdl = new SqlParameter("@idxOdl ", idxOdl);
var MatrApp = new SqlParameter("@MatrApp ", MatrOpr);
@@ -138,7 +153,7 @@ namespace MP.Data.Controllers
///
public async Task CheckCambiaStatoBatchAsync(tipoInputEvento tipoInput, string IdxMacchina, DateTime InizioStato, int IdxTipo, string CodArt, string Value, int MatrOpr, string pallet)
{
- await using var dbCtx = new MoonProContext(options);
+ await using var dbCtx = _ctxFactory.CreateDbContext();
//await using var tx = await dbCtx.Database.BeginTransactionAsync();
try
@@ -224,7 +239,7 @@ namespace MP.Data.Controllers
///
public async Task ConfermaProdMacchinaAsync(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzScarto, DateTime DataOraApp, int MatrOpr)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", DateTime.Now);
@@ -267,7 +282,7 @@ namespace MP.Data.Controllers
///
public async Task ConfermaProdMacchinaFullAsync(string idxMacchina, int modoConfProd, int numPzConfermati, int numPzLasciati, int numPzScarto, DateTime DataOraApp, int MatrOpr)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", DateTime.Now);
@@ -306,7 +321,7 @@ namespace MP.Data.Controllers
///
public async Task> ConfFluxFiltAsync(string idxMacc)
{
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = _ctxFactoryFL.CreateDbContext();
var query = dbCtx.DbSetConfFlux
.AsNoTracking()
@@ -326,7 +341,7 @@ namespace MP.Data.Controllers
///
public async Task> ConfigGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetConfig
@@ -343,7 +358,7 @@ namespace MP.Data.Controllers
///
public async Task ConfigUpdateAsync(ConfigModel updRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
bool fatto = false;
var dbResult = await dbCtx
@@ -365,7 +380,7 @@ namespace MP.Data.Controllers
///
public async Task> DatiMacchineGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetDatiMacchine
@@ -388,7 +403,7 @@ namespace MP.Data.Controllers
///
public async Task DDB_InsStatoBatchAsync(string idxMacchina, DateTime inizioStato, int idxStato, string codArt, string value, int matrOpr, string pallet)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var InizioStato = new SqlParameter("@InizioStato", inizioStato);
@@ -411,7 +426,7 @@ namespace MP.Data.Controllers
///
public async Task> DecNumArtGetFiltAsync(string codArt = "")
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var query = dbCtx.DbSetDecNumArt
.AsNoTracking()
@@ -432,17 +447,13 @@ namespace MP.Data.Controllers
///
public async Task> DossGetLastByMaccAsync(string idxMacc)
{
- List dbResult = new();
- using (var dbCtx = new MoonPro_FluxContext(_configuration))
- {
- var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
- dbResult = await dbCtx
- .DbSetDossiers
- .FromSqlRaw("exec dbo.stp_DOSS_getLastByMacch @idxMacchina", IdxMacchina)
- .AsNoTracking()
- .ToListAsync();
- }
- return dbResult;
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
+ var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
+ return await dbCtx
+ .DbSetDossiers
+ .FromSqlRaw("exec dbo.stp_DOSS_getLastByMacch @idxMacchina", IdxMacchina)
+ .AsNoTracking()
+ .ToListAsync();
}
///
@@ -452,7 +463,7 @@ namespace MP.Data.Controllers
///
public async Task EvListInsertAsync(EventListModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbCtx.DbSetEvList.Add(newRec);
return await dbCtx.SaveChangesAsync() > 0;
@@ -467,7 +478,7 @@ namespace MP.Data.Controllers
public async Task EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv)
{
// eseguo in transazione...
- await using var dbCtx = new MoonProContext(options);
+ await using var dbCtx = _ctxFactory.CreateDbContext();
await using var tx = await dbCtx.Database.BeginTransactionAsync();
try
@@ -518,18 +529,15 @@ namespace MP.Data.Controllers
///
public async Task> FluxLogFirstByMaccAsync(string idxMacc, int numMax)
{
- List dbResult = new();
-
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var NumMax = new SqlParameter("@numMax", numMax);
- dbResult = await dbCtx
- .DbSetFluxLog
- .FromSqlRaw("exec dbo.stp_FL_getFirstByMacc @IdxMacchina, @numMax", IdxMacchina, NumMax)
- .AsNoTracking()
- .ToListAsync();
- return dbResult;
+ return await dbCtx
+ .DbSetFluxLog
+ .FromSqlRaw("exec dbo.stp_FL_getFirstByMacc @IdxMacchina, @numMax", IdxMacchina, NumMax)
+ .AsNoTracking()
+ .ToListAsync();
}
///
@@ -543,17 +551,15 @@ namespace MP.Data.Controllers
///
public async Task> FluxLogGetLastFiltAsync(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec)
{
- List dbResult = new List();
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
- dbResult = await dbCtx
- .DbSetFluxLog
- .AsNoTracking()
- .Where(x => (x.dtEvento >= DtMin && x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux))
- .OrderByDescending(x => x.dtEvento)
- .Take(MaxRec)
- .ToListAsync();
- return dbResult;
+ return await dbCtx
+ .DbSetFluxLog
+ .AsNoTracking()
+ .Where(x => (x.dtEvento >= DtMin && x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux))
+ .OrderByDescending(x => x.dtEvento)
+ .Take(MaxRec)
+ .ToListAsync();
}
///
@@ -563,15 +569,13 @@ namespace MP.Data.Controllers
///
public async Task FluxLogInsertAsync(FluxLogModel newRec)
{
- bool fatto = false;
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
var currRec = dbCtx
- .DbSetFluxLog
- .Add(newRec);
- await dbCtx.SaveChangesAsync();
+ .DbSetFluxLog
+ .Add(newRec);
+ return await dbCtx.SaveChangesAsync()>0;
- return fatto;
}
///
@@ -581,8 +585,7 @@ namespace MP.Data.Controllers
///
public async Task FluxLogTakeSnapshotLastAsync(string idxMacc, DateTime dataInizio, DateTime dataFine)
{
- bool fatto = false;
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var DataInizio = new SqlParameter("@DtMin", dataInizio);
@@ -591,8 +594,7 @@ namespace MP.Data.Controllers
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina, @DtMin, @DtMax", IdxMacchina, DataInizio, DataFine);
- fatto = result > 0;
- return fatto;
+ return result > 0;
}
///
@@ -605,7 +607,7 @@ namespace MP.Data.Controllers
public async Task KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc)
{
bool fatto = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var currRec = await dbCtx
.DbSetKeepAlive
@@ -638,7 +640,7 @@ namespace MP.Data.Controllers
public async Task> ListLinkFiltAsync(string tipoLink)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbResult = await dbCtx
.DbSetLinkMenu
@@ -658,7 +660,7 @@ namespace MP.Data.Controllers
public async Task> ListValuesFiltAsync(string tabName, string fieldName)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var query = dbCtx
.DbSetListValues
@@ -682,7 +684,7 @@ namespace MP.Data.Controllers
public async Task> Macchine2SlaveAsync()
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbResult = await dbCtx
.DbSetM2S
@@ -700,7 +702,7 @@ namespace MP.Data.Controllers
public async Task> MacchineGetAllAsync()
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbResult = await dbCtx
.DbSetMacchine
@@ -712,7 +714,7 @@ namespace MP.Data.Controllers
public async Task MacchineGetByIdxAsync(string IdxMacchina)
{
MacchineModel dbResult = null;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbResult = await dbCtx
.DbSetMacchine
@@ -729,7 +731,7 @@ namespace MP.Data.Controllers
public async Task> MacchineGetFiltAsync(string codGruppo)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
if (codGruppo == "*")
{
@@ -763,7 +765,7 @@ namespace MP.Data.Controllers
///
public async Task MacchineUpsertAsync(MacchineModel entity)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
// Recuperiamo l'entità tracciata dal context
var trackedEntity = await dbCtx
@@ -791,7 +793,7 @@ namespace MP.Data.Controllers
public async Task> MicroStatoMacchinaGetByIdxMaccAsync(string IdxMacc)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
dbResult = await dbCtx
.DbSetMicroStatoMacc
@@ -809,7 +811,7 @@ namespace MP.Data.Controllers
public async Task MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec)
{
bool fatto = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var actRec = await dbCtx
.DbSetMicroStatoMacc
@@ -842,7 +844,7 @@ namespace MP.Data.Controllers
public async Task> MseGetAllAsync(int maxAge = 2000)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge);
@@ -862,7 +864,7 @@ namespace MP.Data.Controllers
///
public async Task OdlAutoDayGenAsync(string idxMacchina, DateTime dataInizio, DateTime dataFine, string codArticolo)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataInizio = new SqlParameter("@DataInizio", dataInizio);
@@ -884,7 +886,7 @@ namespace MP.Data.Controllers
///
public async Task OdlAutoDayGenFullAsync(string idxMacchina, DateTime dataInizio, DateTime dataFine, string codArticolo, int? pzPODL, int? pzPallet, string? keyRichiesta, int? tcAssegnato, string? codGruppo, bool flgCreaPODL, bool flgCheckTC)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataInizio = new SqlParameter("@DataInizio", dataInizio);
@@ -913,7 +915,7 @@ namespace MP.Data.Controllers
public async Task OdlCurrByMaccAsync(string idxMacchina)
{
ODLExpModel answ = new();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
// attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!!
@@ -936,7 +938,7 @@ namespace MP.Data.Controllers
///
public async Task OdlFixMachineSlave(string idxMacchina, int numDayPrev, int doInsert)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var idxMaccParam = new SqlParameter("@IdxMacchina", idxMacchina ?? "");
var numDayPrevParam = new SqlParameter("@NumDayPrev", numDayPrev);
@@ -958,7 +960,7 @@ namespace MP.Data.Controllers
///
public async Task OdlFixMachineSlaveAsync(string idxMacchina, int numDayPrev, int doInsert)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var NumDayPrev = new SqlParameter("@NumDayPrev", numDayPrev);
@@ -977,7 +979,7 @@ namespace MP.Data.Controllers
public async Task OdlLastByMaccAsync(string idxMacchina)
{
ODLExpModel answ = new();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
// attenzione: se la stored resituisce una tabella, il primo elemento va recuperato in RAM!!!
@@ -1001,7 +1003,7 @@ namespace MP.Data.Controllers
public async Task> OdlListByMaccPeriodoAsync(string idxMacchina, DateTime dtStart, DateTime dtEnd)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataFrom = new SqlParameter("@dataFrom", dtStart);
@@ -1023,7 +1025,7 @@ namespace MP.Data.Controllers
public async Task PezziProdMacchinaAsync(string idxMacchina)
{
PzProdModel dbResult = new PzProdModel();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
dbResult = (await dbCtx
@@ -1046,7 +1048,7 @@ namespace MP.Data.Controllers
public async Task> POdlGetByMaccArtAsync(string idxMacchina, string codArticolo, string codGruppo, bool onlyFree)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var pCodArticolo = new SqlParameter("@CodArticolo", codArticolo);
@@ -1069,7 +1071,7 @@ namespace MP.Data.Controllers
///
public async Task RecalcMseAsync(string idxMacchina, int maxAgeSec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var rigaProd = await StatoProdMacchinaAsync(idxMacchina, DateTime.Now);
var MaxAgeSec = new SqlParameter("@maxAgeSec ", maxAgeSec);
@@ -1093,7 +1095,7 @@ namespace MP.Data.Controllers
///
public async Task RegControlliInsertAsync(string idxMacchina, int matrOpr, bool esitoOk, string note, DateTime dataOra)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var MatrOpr = new SqlParameter("@MatrOpr", matrOpr);
@@ -1114,7 +1116,7 @@ namespace MP.Data.Controllers
///
public async Task RegDichiarInsertAsync(RegistroDichiarazioniModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var TagCode = new SqlParameter("@TagCode", newRec.TagCode);
var IdxMacchina = new SqlParameter("@IdxMacchina", newRec.IdxMacchina);
@@ -1136,7 +1138,7 @@ namespace MP.Data.Controllers
///
public async Task RegDichiarUpdateAsync(RegistroDichiarazioniModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var Original_IdxDich = new SqlParameter("@Original_IdxDich", newRec.IdxDich);
var DtRec = new SqlParameter("@DtRec", newRec.DtRec);
@@ -1157,7 +1159,7 @@ namespace MP.Data.Controllers
///
public async Task RegScartiInsertAsync(RegistroScartiModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@idxMacchina", newRec.IdxMacchina);
var DataOra = new SqlParameter("@DataOra", newRec.DataOra);
@@ -1184,7 +1186,7 @@ namespace MP.Data.Controllers
public async Task RemRebootLogAddAndCleanAsync(RemoteRebootLogModel newRec, bool doClean, int num2keep)
{
bool fatto = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
// 1. Transazione minima: SOLO INSERT + COMMIT
await using var tx = await dbCtx.Database.BeginTransactionAsync();
@@ -1227,7 +1229,7 @@ namespace MP.Data.Controllers
///
public async Task RemRebootLogAddAsync(RemoteRebootLogModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = dbCtx
.DbSetRemRebLog
@@ -1242,7 +1244,7 @@ namespace MP.Data.Controllers
///
public async Task> RemRebootLogGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetRemRebLog
@@ -1258,7 +1260,7 @@ namespace MP.Data.Controllers
///
public async Task> RemRebootLogGetLastAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetRemRebLog
.FromSqlRaw("EXEC stp_RRL_getLast")
@@ -1273,7 +1275,7 @@ namespace MP.Data.Controllers
///
public async Task RemRebootLogKeepLastAsync(int num2keep)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var pNum2Keep = new SqlParameter("@num2keep", num2keep);
// La SP gestisce già la logica di soglia (1.5x), ma la specifico x sicurezza
@@ -1291,7 +1293,7 @@ namespace MP.Data.Controllers
///
public async Task SignalLogInsertAsync(SignalLogModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var currRec = dbCtx
.DbSetSignalLog
@@ -1307,7 +1309,7 @@ namespace MP.Data.Controllers
///
public async Task> SMES_getHwTransitionsAsync(string idxMacchina, int idxTipo)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
@@ -1327,7 +1329,7 @@ namespace MP.Data.Controllers
///
public async Task> SMES_getUserForcedAsync(string idxMacchina, int idxTipo)
{
- await using var dbCtx = new MoonProContext(options);
+ await using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var IdxTipo = new SqlParameter("@IdxTipo", idxTipo);
@@ -1346,18 +1348,14 @@ namespace MP.Data.Controllers
///
public List StateMachineIngressi(int idxFam)
{
- List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
- dbResult = dbCtx
- .DbSetSMI
- .FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn)
- .AsNoTracking()
- .AsEnumerable()
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
+ return dbCtx
+ .DbSetSMI
+ .FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn)
+ .AsNoTracking()
+ .AsEnumerable()
+ .ToList();
}
///
@@ -1366,7 +1364,7 @@ namespace MP.Data.Controllers
///
public async Task> StateMachineIngressiAsync(int idxFam)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam);
var dbResult = await dbCtx
@@ -1386,7 +1384,7 @@ namespace MP.Data.Controllers
///
public async Task StatoProdMacchinaAsync(string idxMacchina, DateTime dtReq)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina);
var DataOra = new SqlParameter("@DataOra ", dtReq);
@@ -1406,7 +1404,7 @@ namespace MP.Data.Controllers
///
public async Task> VMSFDGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var dbResult = await dbCtx
.DbSetMSFD
@@ -1424,7 +1422,7 @@ namespace MP.Data.Controllers
///
public async Task VMSFDGetByMaccAsync(string idxMacc)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var dbResult = (await dbCtx
@@ -1444,7 +1442,7 @@ namespace MP.Data.Controllers
///
public async Task> VMSFDGetMultiByMaccAsync(string idxMacc)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = _ctxFactory.CreateDbContext();
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
@@ -1461,9 +1459,14 @@ namespace MP.Data.Controllers
#region Private Fields
- private static IConfiguration _configuration;
+#if false
+ private static IConfiguration _configuration;
+#endif
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
- private DbContextOptions options;
+#if false
+ private DbContextOptions options;
+#endif
+ private DbContextOptions optionsFlux;
#endregion Private Fields
diff --git a/MP.Data/Controllers/MpLandController.cs b/MP.Data/Controllers/MpLandController.cs
index 9a77ad18..8ab7d25e 100644
--- a/MP.Data/Controllers/MpLandController.cs
+++ b/MP.Data/Controllers/MpLandController.cs
@@ -15,18 +15,30 @@ namespace MP.Data.Controllers
public class MpLandController : IDisposable
{
#region Public Constructors
+ protected readonly IDbContextFactory _ctxFactory;
+ protected readonly IDbContextFactory _ctxFactoryFL;
+ protected readonly IDbContextFactory _ctxFactorySta;
- public MpLandController(IConfiguration configuration)
+ public MpLandController(
+ IConfiguration configuration,
+ IDbContextFactory ctxFactory,
+ IDbContextFactory ctxFactoryFL,
+ IDbContextFactory ctxFactorySta)
{
_configuration = configuration;
+ _ctxFactory = ctxFactory;
+ _ctxFactoryFL = ctxFactoryFL;
+ _ctxFactorySta = ctxFactorySta;
+#if false
string connStr = _configuration.GetConnectionString("MP.Land");
- if(string.IsNullOrEmpty(connStr))
+ if (string.IsNullOrEmpty(connStr))
{
connStr = _configuration.GetConnectionString("MP.Data");
}
options = new DbContextOptionsBuilder()
.UseSqlServer(connStr)
- .Options;
+ .Options;
+#endif
Log.Info("Avviato MpLandController");
}
@@ -34,6 +46,7 @@ namespace MP.Data.Controllers
#region Public Methods
+#if false
///
/// Restituisce info dimensione, tabelle e num righe DB gestiti
///
@@ -70,58 +83,53 @@ namespace MP.Data.Controllers
// leggo per DB principale
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.All")))
{
- using (var dbCtx = new MoonProContext(options))
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ var singleRes = dbCtx
+ .DbSetDbSize
+ .FromSqlRaw(stp_DbInfo)
+ .AsEnumerable()
+ .FirstOrDefault();
+ if (singleRes != null)
{
- var singleRes = dbCtx
- .DbSetDbSize
- .FromSqlRaw(stp_DbInfo)
- .AsEnumerable()
- .FirstOrDefault();
- if (singleRes != null)
- {
- dbResult.Add(singleRes);
- }
+ dbResult.Add(singleRes);
}
}
// leggo per FluxLog
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.Flux")))
{
- using (var dbCtx = new MoonPro_FluxContext(_configuration))
+ using var dbCtx = _ctxFactoryFL.CreateDbContext();
+ var singleRes = dbCtx
+ .DbSetDbSize
+ .FromSqlRaw(stp_DbInfo)
+ .AsEnumerable()
+ .FirstOrDefault();
+ if (singleRes != null)
{
- var singleRes = dbCtx
- .DbSetDbSize
- .FromSqlRaw(stp_DbInfo)
- .AsEnumerable()
- .FirstOrDefault();
- if (singleRes != null)
- {
- dbResult.Add(singleRes);
- }
+ dbResult.Add(singleRes);
}
}
// leggo per Stats
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("MP.Stats")))
{
- using (var dbCtx = new MoonPro_STATSContext(_configuration))
+ using var dbCtx = _ctxFactorySta.CreateDbContext();
+ var singleRes = dbCtx
+ .DbSetDbSize
+ .FromSqlRaw(stp_DbInfo)
+ .AsEnumerable()
+ .FirstOrDefault();
+ if (singleRes != null)
{
- var singleRes = dbCtx
- .DbSetDbSize
- .FromSqlRaw(stp_DbInfo)
- .AsEnumerable()
- .FirstOrDefault();
- if (singleRes != null)
- {
- dbResult.Add(singleRes);
- }
+ dbResult.Add(singleRes);
}
}
}
catch (Exception exc)
{
- Log.Error($"Eccezione in AllDbInfo:{Environment.NewLine}{exc}");
+ Log.Error($"Eccezione in AllDbInfoAsync:{Environment.NewLine}{exc}");
}
return dbResult;
- }
+ }
+#endif
///
/// Elenco da tabella Config
@@ -130,20 +138,18 @@ namespace MP.Data.Controllers
public List ConfigGetAll()
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbSetConfig
- .AsNoTracking()
- .OrderBy(x => x.Chiave)
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbSetConfig
+ .AsNoTracking()
+ .OrderBy(x => x.Chiave)
+ .ToList();
}
public void Dispose()
{
- _configuration = null;
+ Dispose(true);
+ GC.SuppressFinalize(this);
}
///
@@ -153,16 +159,13 @@ namespace MP.Data.Controllers
public List ElencoOperatori()
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbOperatori
- .Where(s => s.MatrOpr > 0)
- .AsNoTracking()
- .OrderBy(x => x.MatrOpr)
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbOperatori
+ .Where(s => s.MatrOpr > 0)
+ .AsNoTracking()
+ .OrderBy(x => x.MatrOpr)
+ .ToList();
}
///
@@ -172,13 +175,10 @@ namespace MP.Data.Controllers
public List MacchineGetAll()
{
List dbResult = new List();
- using (MoonProContext localDbCtx = new MoonProContext(options))
- {
- dbResult = localDbCtx
- .DbSetMacchine
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbSetMacchine
+ .ToList();
}
///
@@ -188,15 +188,12 @@ namespace MP.Data.Controllers
public List RemRebootLogGetAll()
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbSetRemRebLog
- .AsNoTracking()
- .OrderByDescending(x => x.IdxReboot)
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbSetRemRebLog
+ .AsNoTracking()
+ .OrderByDescending(x => x.IdxReboot)
+ .ToList();
}
///
@@ -206,15 +203,12 @@ namespace MP.Data.Controllers
public List RemRebootLogGetLast()
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbSetRemRebLog
- .FromSqlRaw("EXEC stp_RRL_getLast")
- .AsNoTracking()
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbSetRemRebLog
+ .FromSqlRaw("EXEC stp_RRL_getLast")
+ .AsNoTracking()
+ .ToList();
}
///
@@ -224,15 +218,12 @@ namespace MP.Data.Controllers
public List RemRebootLogGetLastNoMacc()
{
List dbResult = new List();
- using (var dbCtx = new MoonProContext(options))
- {
- dbResult = dbCtx
- .DbSetRemRebLog
- .FromSqlRaw("EXEC stp_RRL_GetLastNoMachine")
- .AsNoTracking()
- .ToList();
- }
- return dbResult;
+ using var dbCtx = _ctxFactory.CreateDbContext();
+ return dbCtx
+ .DbSetRemRebLog
+ .FromSqlRaw("EXEC stp_RRL_GetLastNoMachine")
+ .AsNoTracking()
+ .ToList();
}
///
@@ -243,7 +234,7 @@ namespace MP.Data.Controllers
public bool RollBackEntity(object item)
{
bool answ = false;
- using (var dbCtx = new MoonPro_STATSContext(_configuration))
+ using var dbCtx = _ctxFactory.CreateDbContext();
{
try
{
@@ -262,11 +253,30 @@ namespace MP.Data.Controllers
#endregion Public Methods
+ #region Protected Methods
+
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!_disposed)
+ {
+ if (disposing)
+ {
+ // Free managed resources here
+ }
+ _disposed = true;
+ }
+ }
+
+ #endregion Protected Methods
+
#region Private Fields
- private static IConfiguration _configuration;
private static Logger Log = LogManager.GetCurrentClassLogger();
- private DbContextOptions options;
+ private readonly IConfiguration _configuration;
+#if false
+ private readonly DbContextOptions options;
+#endif
+ private bool _disposed = false;
#endregion Private Fields
}
diff --git a/MP.Data/Controllers/MpSpecRepository.cs b/MP.Data/Controllers/MpSpecRepository.cs
index 224fb848..27b70da3 100644
--- a/MP.Data/Controllers/MpSpecRepository.cs
+++ b/MP.Data/Controllers/MpSpecRepository.cs
@@ -1,31 +1,36 @@
using Microsoft.Data.SqlClient;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
-using MP.Core.DTO;
-using MP.Core.Objects;
using MP.Data.DbModels;
using NLog;
using System;
using System.Collections.Generic;
using System.Data;
-using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
-using static EgwCoreLib.Utils.DtUtils;
namespace MP.Data.Controllers
{
public class MpSpecController
{
+ protected readonly IDbContextFactory _ctxFactory;
+ protected readonly IDbContextFactory _ctxFactoryFL;
#region Public Constructors
- public MpSpecController(IConfiguration configuration)
+ public MpSpecController(
+ IConfiguration configuration,
+ IDbContextFactory ctxFactory,
+ IDbContextFactory ctxFactoryFL)
{
_configuration = configuration;
+ _ctxFactory = ctxFactory;
+ _ctxFactoryFL = ctxFactoryFL;
+#if false
string connStr = _configuration.GetConnectionString("MP.Data");
options = new DbContextOptionsBuilder()
.UseSqlServer(connStr)
- .Options;
+ .Options;
+#endif
Log.Info("Avviata classe MpSpecController");
}
@@ -41,7 +46,7 @@ namespace MP.Data.Controllers
public async Task AnagCountersGetNextAsync(string cntType)
{
AnagCountersModel answ = new AnagCountersModel();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
bool outTable = true;
if (outTable)
{
@@ -102,7 +107,7 @@ namespace MP.Data.Controllers
///
public async Task> AnagEventiGeneralAsync(string TableName = "EvList", string FieldName = "Common")
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var pTableName = new SqlParameter("@TableName", TableName);
var pFieldName = new SqlParameter("@FieldName", FieldName);
var dbResult = await dbCtx
@@ -129,7 +134,7 @@ namespace MP.Data.Controllers
///
public async Task AnagGruppiDeleteAsync(AnagGruppiModel updRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetAnagGruppi
.AsNoTracking()
@@ -161,7 +166,7 @@ namespace MP.Data.Controllers
///
public async Task> AnagGruppiGetTipoAsync(string tipoGruppo)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetAnagGruppi
.Where(x => x.TipoGruppo == tipoGruppo)
@@ -176,7 +181,7 @@ namespace MP.Data.Controllers
///
public async Task> AnagGruppiRepartoDtoAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
// in primis recupero i reparti...
var listReparti = await AnagGruppiGetTipoAsync("REPARTO");
@@ -211,7 +216,7 @@ namespace MP.Data.Controllers
///
public async Task AnagGruppiUpsertAsync(AnagGruppiModel updRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetAnagGruppi
.AsNoTracking()
@@ -253,6 +258,8 @@ namespace MP.Data.Controllers
}
#endif
+
+#if false
///
/// Elenco codice articoli che abbiano dati Dossier
///
@@ -268,6 +275,8 @@ namespace MP.Data.Controllers
.ToListAsync();
}
+#endif
+
#if false
///
/// Conteggio num articoli Async
@@ -275,7 +284,7 @@ namespace MP.Data.Controllers
///
public async Task ArticoliCountAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var result = await dbCtx
.DbSetArticoli
.CountAsync();
@@ -291,7 +300,7 @@ namespace MP.Data.Controllers
///
public async Task ArticoliCountSearchAsync(string tipoArt = "*", string azienda = "*", string searchVal = "")
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
IQueryable query = dbCtx.DbSetArticoli.AsNoTracking();
// filtro tipo articolo
@@ -327,7 +336,7 @@ namespace MP.Data.Controllers
///
public async Task ArticoliCountUsedAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var result = await dbCtx
.DbSetCounter
.FromSqlRaw("EXEC stp_ART_CountUsed")
@@ -344,7 +353,7 @@ namespace MP.Data.Controllers
///
public async Task ArticoliDeleteRecordAsync(AnagArticoliModel currRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var currVal = dbCtx
.DbSetArticoli
.Where(x => x.CodArticolo == currRec.CodArticolo)
@@ -364,7 +373,7 @@ namespace MP.Data.Controllers
///
public async Task> ArticoliGetByTipoAsync(string tipo, string azienda = "*")
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetArticoli
.AsNoTracking()
@@ -383,7 +392,7 @@ namespace MP.Data.Controllers
///
public async Task> ArticoliGetSearchAsync(int numRecord, string tipoArt = "*", string azienda = "*", string searchVal = "")
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
IQueryable query = dbCtx.DbSetArticoli
.AsNoTracking();
@@ -421,7 +430,7 @@ namespace MP.Data.Controllers
///
public async Task> ArticoliGetUnusedAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetArticoli
.FromSqlRaw("EXEC stp_ART_getNotUsed")
@@ -435,7 +444,7 @@ namespace MP.Data.Controllers
///
public async Task> ArticoliGetUsedAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetArticoli
.FromSqlRaw("EXEC stp_ART_getUsed")
@@ -450,7 +459,7 @@ namespace MP.Data.Controllers
public async Task> ArticoliInKitAsync()
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
dbResult = await dbCtx
.DbSetArticoli
.FromSqlRaw("EXEC stp_TempKIT_getArtChild")
@@ -466,7 +475,7 @@ namespace MP.Data.Controllers
///
public async Task ArticoliUpdateRecord(AnagArticoliModel editRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var currRec = dbCtx
.DbSetArticoli
.Where(x => x.CodArticolo == editRec.CodArticolo)
@@ -488,6 +497,7 @@ namespace MP.Data.Controllers
return await dbCtx.SaveChangesAsync() > 0;
}
#endif
+#if false
///
/// Elenco da tabella Config Async
@@ -495,7 +505,7 @@ namespace MP.Data.Controllers
///
public async Task> ConfigGetAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetConfig
.AsNoTracking()
@@ -511,7 +521,7 @@ namespace MP.Data.Controllers
{
bool fatto = false;
ConfigModel dbResult = new ConfigModel();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
dbResult = await dbCtx
.DbSetConfig
.Where(x => x.Chiave == updRec.Chiave)
@@ -642,7 +652,7 @@ namespace MP.Data.Controllers
///
public async Task EvListInsertAsync(EventListModel newRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var currRec = await dbCtx
.DbSetEvList
.AddAsync(newRec);
@@ -869,7 +879,7 @@ namespace MP.Data.Controllers
public async Task Grp2MaccDeleteAsync(Gruppi2MaccModel rec2del)
{
bool answ = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetGrp2Macc
.Where(x => x.CodGruppo == rec2del.CodGruppo && x.IdxMacchina == rec2del.IdxMacchina)
@@ -891,7 +901,7 @@ namespace MP.Data.Controllers
public async Task Grp2MaccInsertAsync(Gruppi2MaccModel upsRec)
{
bool answ = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetGrp2Macc
.Where(x => x.CodGruppo == upsRec.CodGruppo && x.IdxMacchina == upsRec.IdxMacchina)
@@ -914,7 +924,7 @@ namespace MP.Data.Controllers
public async Task Grp2OperDeleteAsync(Gruppi2OperModel rec2del)
{
bool answ = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetGrp2Oper
.Where(x => x.CodGruppo == rec2del.CodGruppo && x.MatrOpr == rec2del.MatrOpr)
@@ -936,7 +946,7 @@ namespace MP.Data.Controllers
public async Task Grp2OperInsertAsync(Gruppi2OperModel upsRec)
{
bool answ = false;
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var dbRec = await dbCtx
.DbSetGrp2Oper
.Where(x => x.CodGruppo == upsRec.CodGruppo && x.MatrOpr == upsRec.MatrOpr)
@@ -957,7 +967,7 @@ namespace MP.Data.Controllers
///
public async Task IstKitDeleteAsync(IstanzeKitModel rec2del)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var actRec = await dbCtx
.DbSetInstKit
.Where(x => x.KeyKit == rec2del.KeyKit && x.KeyExtOrd == rec2del.KeyExtOrd)
@@ -980,7 +990,7 @@ namespace MP.Data.Controllers
///
public async Task> IstKitFiltAsync(string keyKit, string keyExtOrd)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetInstKit
.Where(x => (string.IsNullOrEmpty(keyKit) && string.IsNullOrEmpty(keyExtOrd)) || (x.KeyKit.Contains(keyKit) && !string.IsNullOrEmpty(keyKit)) || (x.KeyExtOrd.Contains(keyExtOrd) && !string.IsNullOrEmpty(keyExtOrd)))
@@ -995,7 +1005,7 @@ namespace MP.Data.Controllers
/// Chiave x filtro conf su tab WKS
public async Task IstKitInsertByWKSAsync(string CodArtParent, string KeyFilt)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var pCodArtParent = new SqlParameter("@CodArtParent", CodArtParent);
var pKeyFilt = new SqlParameter("@KeyFilt", KeyFilt);
@@ -1012,7 +1022,7 @@ namespace MP.Data.Controllers
///
public async Task IstKitUpsertAsync(IstanzeKitModel editRec)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var actRec = await dbCtx
.DbSetInstKit
.Where(x => x.KeyKit == editRec.KeyKit && x.KeyExtOrd == editRec.KeyExtOrd)
@@ -1060,7 +1070,7 @@ namespace MP.Data.Controllers
///
public async Task> ListLinkAllAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetLinkMenu
.AsNoTracking()
@@ -1076,7 +1086,7 @@ namespace MP.Data.Controllers
public async Task> ListLinkFiltAsync(string tipoLink)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetLinkMenu
.Where(x => x.TipoLink == tipoLink)
@@ -1085,6 +1095,8 @@ namespace MP.Data.Controllers
.ToListAsync();
}
+#endif
+
///
/// Elenco ODL filtrati x stato, articolo, KeyRich (che contiene stato)
///
@@ -1099,7 +1111,7 @@ namespace MP.Data.Controllers
public async Task> ListODLFiltAsync(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var InCorso = new SqlParameter("@InCorso", inCorso);
var CodArt = new SqlParameter("@CodArt", codArt);
@@ -1124,7 +1136,7 @@ namespace MP.Data.Controllers
///
public async Task> ListPODL_ByCodArtAsync(string CodArticolo, bool OnlyAvail)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var pCodArticolo = new SqlParameter("@CodArticolo", CodArticolo);
var pOnlyAvail = new SqlParameter("@onlyAvail", OnlyAvail);
@@ -1142,7 +1154,7 @@ namespace MP.Data.Controllers
///
public async Task> ListPODL_ByKitParentAsync(int IdxPodlParent)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var pIdxPodlParent = new SqlParameter("@IdxPodlParent", IdxPodlParent);
return await dbCtx
@@ -1162,7 +1174,7 @@ namespace MP.Data.Controllers
///
public async Task> ListPODL_KitFiltAsync(bool lanciato, string keyRichPart, string idxMacchina, string codGruppo, DateTime startDate, DateTime endDate)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var Lanc = new SqlParameter("@Lanciato", lanciato);
var KeyRich = new SqlParameter("@KeyRich", keyRichPart);
var CodGrp = new SqlParameter("@CodGruppo", codGruppo);
@@ -1187,7 +1199,7 @@ namespace MP.Data.Controllers
///
public async Task> ListPODLFiltAsync(bool lanciato, string keyRichPart, string idxMacchina, string codGruppo, DateTime startDate, DateTime endDate)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var Lanc = new SqlParameter("@Lanciato", lanciato);
var KeyRich = new SqlParameter("@KeyRich", keyRichPart);
var CodGrp = new SqlParameter("@CodGruppo", codGruppo);
@@ -1210,7 +1222,7 @@ namespace MP.Data.Controllers
///
public async Task> ListValuesFiltAsync(string tabName, string fieldName)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetListValues
.Where(x => x.TableName == tabName && x.FieldName == fieldName)
@@ -1226,7 +1238,7 @@ namespace MP.Data.Controllers
///
public async Task> MacchineByMatrOperAsync(int MatrOpr)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
if (MatrOpr == 0)
{
return await dbCtx
@@ -1265,7 +1277,7 @@ namespace MP.Data.Controllers
///
public async Task> MacchineGetFiltAsync(string codGruppo)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
if (codGruppo == "*")
{
return await dbCtx
@@ -1298,7 +1310,7 @@ namespace MP.Data.Controllers
///
public async Task> MacchineWithFluxAsync(DateTime dtStart, DateTime dtEnd)
{
- using var dbCtx = new MoonPro_FluxContext(_configuration);
+ using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync();
return await dbCtx
.DbSetFluxLog
.AsNoTracking()
@@ -1315,7 +1327,7 @@ namespace MP.Data.Controllers
public async Task> MseGetAllAsync(int maxAge = 2000)
{
List dbResult = new List();
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge);
@@ -1350,7 +1362,7 @@ namespace MP.Data.Controllers
///
public async Task OdlByKeyAsync(int IdxOdl)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetODLExp
.AsNoTracking()
@@ -1372,7 +1384,7 @@ namespace MP.Data.Controllers
bool fatto = false;
if (idxOdl > 0)
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
DateTime adesso = DateTime.Now;
// preparo i parametri
var IdxODL = new SqlParameter("@IdxODL", idxOdl);
@@ -1434,7 +1446,7 @@ namespace MP.Data.Controllers
///
public async Task> OdlGetCurrentAsync()
{
- using var dbCtx = new MoonProContext(options);
+ using var dbCtx = await _ctxFactory.CreateDbContextAsync();
return await dbCtx
.DbSetODL
.Where(x => x.DataInizio != null && x.DataFine == null)
@@ -1450,7 +1462,7 @@ namespace MP.Data.Controllers
List