Continuo migrazione async metodi DB

This commit is contained in:
Samuele Locatelli
2026-04-20 08:45:22 +02:00
parent 50987d15fb
commit dd0854a6ef
10 changed files with 189 additions and 305 deletions
+174 -248
View File
@@ -12,7 +12,7 @@ using System.Threading.Tasks;
namespace MP.Data.Controllers
{
public class MpIocController : IDisposable
public class MpIocController /*: IDisposable*/
{
#region Public Constructors
@@ -158,7 +158,6 @@ namespace MP.Data.Controllers
.Database
.ExecuteSqlRawAsync("EXEC stp_ConfermaProduzCompleta @idxMacchina, @MatrApp, @dataFrom, @dataTo, @pezziConf, @pezziScar, @TipoConf, @DataOraApp, @TestConferma ", IdxMacchina, MatrApp, DataFrom, DataTo, PezziConf, PezziScar, TipoConf, DtOraApp, TestConferma);
return result != 0;
}
@@ -333,10 +332,12 @@ namespace MP.Data.Controllers
return dbResult;
}
#if false
public void Dispose()
{
_configuration = null;
}
#endif
/// <summary>
/// Stored x recuperare ultimi dossier macchina
@@ -370,58 +371,6 @@ namespace MP.Data.Controllers
dbCtx.DbSetEvList.Add(newRec);
return await dbCtx.SaveChangesAsync() > 0;
}
/// <summary>
/// Fix ODL per macchine SLAVE
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="numDayPrev"></param>
/// <param name="doInsert"></param>
/// <returns></returns>
public bool OdlFixMachineSlave(string idxMacchina, int numDayPrev, int doInsert)
{
using var dbCtx = new MoonProContext(_configuration);
var idxMaccParam = new SqlParameter("@IdxMacchina", idxMacchina ?? "");
var numDayPrevParam = new SqlParameter("@NumDayPrev", numDayPrev);
var doInsertParam = new SqlParameter("@DoInsert", doInsert);
var result = dbCtx.Database.ExecuteSqlRaw(
"EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert",
idxMaccParam, numDayPrevParam, doInsertParam
);
return result != -1;
}
/// <summary>
/// Fix ODL per macchine SLAVE Async
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="numDayPrev"></param>
/// <param name="doInsert"></param>
/// <returns></returns>
public async Task<bool> OdlFixMachineSlaveAsync(string idxMacchina, int numDayPrev, int doInsert)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var NumDayPrev = new SqlParameter("@NumDayPrev", numDayPrev);
var DoInsert = new SqlParameter("@DoInsert", doInsert);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert", IdxMacc, NumDayPrev, DoInsert);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlFixMachineSlaveAsync{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
/// Chiamata x stored recupero FluxLog x macchina (first)
@@ -432,17 +381,16 @@ namespace MP.Data.Controllers
public async Task<List<FluxLogModel>> FluxLogFirstByMaccAsync(string idxMacc, int numMax)
{
List<FluxLogModel> dbResult = new();
using (var dbCtx = new MoonPro_FluxContext(_configuration))
{
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();
}
using var dbCtx = new MoonPro_FluxContext(_configuration);
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;
}
@@ -455,19 +403,18 @@ namespace MP.Data.Controllers
/// <param name="CodFlux">*=tutti, altrimenti solo selezionato</param>
/// <param name="MaxRec">numero massimo record da restituire</param>
/// <returns></returns>
public List<FluxLogModel> FluxLogGetLastFilt(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec)
public async Task<List<FluxLogModel>> FluxLogGetLastFiltAsync(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec)
{
List<FluxLogModel> dbResult = new List<FluxLogModel>();
using (var dbCtx = new MoonPro_FluxContext(_configuration))
{
dbResult = 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)
.ToList();
}
using var dbCtx = new MoonPro_FluxContext(_configuration);
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;
}
@@ -476,48 +423,16 @@ namespace MP.Data.Controllers
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public bool FluxLogInsert(FluxLogModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonPro_FluxContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetFluxLog
.Add(newRec);
dbCtx.SaveChanges();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante FluxLogInsert{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
/// Aggiunta record FluxLog Async
/// </summary>
/// <param name="newRec"></param>
/// <returns></returns>
public async Task<bool> FluxLogInsertAsync(FluxLogModel newRec)
{
bool fatto = false;
using (var dbCtx = new MoonPro_FluxContext(_configuration))
{
try
{
var currRec = dbCtx
.DbSetFluxLog
.Add(newRec);
await dbCtx.SaveChangesAsync();
}
catch (Exception exc)
{
Log.Error($"Eccezione durante FluxLogInsertAsync{Environment.NewLine}{exc}");
}
}
using var dbCtx = new MoonPro_FluxContext(_configuration);
var currRec = dbCtx
.DbSetFluxLog
.Add(newRec);
await dbCtx.SaveChangesAsync();
return fatto;
}
@@ -529,99 +444,70 @@ namespace MP.Data.Controllers
public async Task<bool> FluxLogTakeSnapshotLastAsync(string idxMacc, DateTime dataInizio, DateTime dataFine)
{
bool fatto = false;
using (var dbCtx = new MoonPro_FluxContext(_configuration))
{
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var DataInizio = new SqlParameter("@DtMin", dataInizio);
var DataFine = new SqlParameter("@DtMax", dataFine);
using var dbCtx = new MoonPro_FluxContext(_configuration);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina, @DtMin, @DtMax", IdxMacchina, DataInizio, DataFine);
fatto = result > 0;
}
return fatto;
}
public bool KeepAliveUpsert(string IdxMacc, DateTime OraServer, DateTime OraMacc)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
var currRec = dbCtx
.DbSetKeepAlive
.Where(x => x.IdxMacchina == IdxMacc)
.FirstOrDefault();
if (currRec != null)
{
currRec.DataOraServer = OraServer;
currRec.DataOraMacchina = OraMacc;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
KeepAliveModel newRec = new KeepAliveModel()
{
IdxMacchina = IdxMacc,
DataOraMacchina = OraMacc,
DataOraServer = OraServer,
DataOraStart = DateTime.Now
};
dbCtx
.DbSetKeepAlive
.Add(newRec);
}
dbCtx.SaveChanges();
fatto = true;
}
var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacc);
var DataInizio = new SqlParameter("@DtMin", dataInizio);
var DataFine = new SqlParameter("@DtMax", dataFine);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina, @DtMin, @DtMax", IdxMacchina, DataInizio, DataFine);
fatto = result > 0;
return fatto;
}
/// <summary>
/// Upsert record keepalive
/// </summary>
/// <param name="IdxMacc"></param>
/// <param name="OraServer"></param>
/// <param name="OraMacc"></param>
/// <returns></returns>
public async Task<bool> KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
using var dbCtx = new MoonProContext(_configuration);
var currRec = await dbCtx
.DbSetKeepAlive
.Where(x => x.IdxMacchina == IdxMacc)
.FirstOrDefaultAsync();
if (currRec != null)
{
var currRec = await dbCtx
.DbSetKeepAlive
.Where(x => x.IdxMacchina == IdxMacc)
.FirstOrDefaultAsync();
if (currRec != null)
{
currRec.DataOraServer = OraServer;
currRec.DataOraMacchina = OraMacc;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
KeepAliveModel newRec = new KeepAliveModel()
{
IdxMacchina = IdxMacc,
DataOraMacchina = OraMacc,
DataOraServer = OraServer,
DataOraStart = DateTime.Now
};
dbCtx
.DbSetKeepAlive
.Add(newRec);
}
fatto = await dbCtx.SaveChangesAsync() > 0;
currRec.DataOraServer = OraServer;
currRec.DataOraMacchina = OraMacc;
dbCtx.Entry(currRec).State = EntityState.Modified;
}
else
{
KeepAliveModel newRec = new KeepAliveModel()
{
IdxMacchina = IdxMacc,
DataOraMacchina = OraMacc,
DataOraServer = OraServer,
DataOraStart = DateTime.Now
};
dbCtx
.DbSetKeepAlive
.Add(newRec);
}
fatto = await dbCtx.SaveChangesAsync() > 0;
return fatto;
}
public List<LinkMenuModel> ListLinkFilt(string tipoLink)
public async Task<List<LinkMenuModel>> ListLinkFiltAsync(string tipoLink)
{
List<LinkMenuModel> dbResult = new List<LinkMenuModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetLinkMenu
.Where(x => x.TipoLink == tipoLink)
.AsNoTracking()
.OrderBy(x => x.Ordine)
.ToList();
}
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
.DbSetLinkMenu
.Where(x => x.TipoLink == tipoLink)
.AsNoTracking()
.OrderBy(x => x.Ordine)
.ToListAsync();
return dbResult;
}
@@ -631,58 +517,41 @@ namespace MP.Data.Controllers
/// <param name="tabName">Filtro tabella (se "" tutto)</param>
/// <param name="fieldName">Filtro colonna (se "" tutto)</param>
/// <returns></returns>
public async Task<List<ListValuesModel>> ListValuesFilt(string tabName, string fieldName)
public async Task<List<ListValuesModel>> ListValuesFiltAsync(string tabName, string fieldName)
{
List<ListValuesModel> dbResult = new List<ListValuesModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
var query = dbCtx.DbSetListValues
.AsNoTracking()
.AsQueryable();
using var dbCtx = new MoonProContext(_configuration);
if (!string.IsNullOrEmpty(tabName))
query = query.Where(x => x.TableName == tabName);
if (!string.IsNullOrEmpty(fieldName))
query = query.Where(x => x.FieldName == fieldName);
dbResult = await query.ToListAsync();
}
return dbResult;
}
/// <summary>
/// Intera tabella relazione master/slave in machine (gestione setup master --&gt; slave)
/// </summary>
/// <returns></returns>
public List<Macchine2SlaveModel> Macchine2Slave()
{
List<Macchine2SlaveModel> dbResult = new List<Macchine2SlaveModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetM2S
var query = dbCtx
.DbSetListValues
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToList();
}
.AsQueryable();
if (!string.IsNullOrEmpty(tabName))
query = query.Where(x => x.TableName == tabName);
if (!string.IsNullOrEmpty(fieldName))
query = query.Where(x => x.FieldName == fieldName);
dbResult = await query.ToListAsync();
return dbResult;
}
/// <summary>
/// Intera tabella relazione master/slave in machine (gestione setup master --&gt; slave)
/// Intera tabella relazione master/slave in machine (gestione setup master - slave)
/// </summary>
/// <returns></returns>
public async Task<List<Macchine2SlaveModel>> Macchine2SlaveAsync()
{
List<Macchine2SlaveModel> dbResult = new List<Macchine2SlaveModel>();
using (var dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
.DbSetM2S
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
}
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
.DbSetM2S
.AsNoTracking()
.OrderBy(x => x.IdxMacchina)
.ToListAsync();
return dbResult;
}
@@ -690,38 +559,39 @@ namespace MP.Data.Controllers
/// Elenco Record Macchine
/// </summary>
/// <returns></returns>
public List<MacchineModel> MacchineGetAll()
public async Task<List<MacchineModel>> MacchineGetAllAsync()
{
List<MacchineModel> dbResult = new List<MacchineModel>();
using (MoonProContext dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
.DbSetMacchine
.ToList();
}
.ToListAsync();
return dbResult;
}
public MacchineModel? MacchineGetByIdx(string IdxMacchina)
{
MacchineModel dbResult = null;
using (MoonProContext dbCtx = new MoonProContext(_configuration))
{
dbResult = dbCtx
.DbSetMacchine
.FirstOrDefault(x => x.IdxMacchina == IdxMacchina);
}
using var dbCtx = new MoonProContext(_configuration);
dbResult = dbCtx
.DbSetMacchine
.FirstOrDefault(x => x.IdxMacchina == IdxMacchina);
return dbResult;
}
public async Task<MacchineModel?> MacchineGetByIdxAsync(string IdxMacchina)
{
MacchineModel dbResult = null;
using (MoonProContext dbCtx = new MoonProContext(_configuration))
{
dbResult = await dbCtx
using var dbCtx = new MoonProContext(_configuration);
dbResult = await dbCtx
.DbSetMacchine
.FirstOrDefaultAsync(x => x.IdxMacchina == IdxMacchina);
}
return dbResult;
}
@@ -837,6 +707,7 @@ namespace MP.Data.Controllers
return dbResult;
}
}
/// <summary>
/// Elenco da tabella Macchine
/// </summary>
@@ -1072,6 +943,58 @@ namespace MP.Data.Controllers
return answ;
}
/// <summary>
/// Fix ODL per macchine SLAVE
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="numDayPrev"></param>
/// <param name="doInsert"></param>
/// <returns></returns>
public async Task<bool> OdlFixMachineSlave(string idxMacchina, int numDayPrev, int doInsert)
{
using var dbCtx = new MoonProContext(_configuration);
var idxMaccParam = new SqlParameter("@IdxMacchina", idxMacchina ?? "");
var numDayPrevParam = new SqlParameter("@NumDayPrev", numDayPrev);
var doInsertParam = new SqlParameter("@DoInsert", doInsert);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert", idxMaccParam, numDayPrevParam, doInsertParam);
return result != -1;
}
/// <summary>
/// Fix ODL per macchine SLAVE Async
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="numDayPrev"></param>
/// <param name="doInsert"></param>
/// <returns></returns>
public async Task<bool> OdlFixMachineSlaveAsync(string idxMacchina, int numDayPrev, int doInsert)
{
bool fatto = false;
using (var dbCtx = new MoonProContext(_configuration))
{
try
{
var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina);
var NumDayPrev = new SqlParameter("@NumDayPrev", numDayPrev);
var DoInsert = new SqlParameter("@DoInsert", doInsert);
var result = await dbCtx
.Database
.ExecuteSqlRawAsync("EXEC stp_ODL_fixMachineSlave @IdxMacchina, @NumDayPrev, @DoInsert", IdxMacc, NumDayPrev, DoInsert);
fatto = result != 0;
}
catch (Exception exc)
{
Log.Error($"Eccezione durante OdlFixMachineSlaveAsync{Environment.NewLine}{exc}");
}
}
return fatto;
}
/// <summary>
/// ODL corrente macchina
/// </summary>
@@ -1263,6 +1186,7 @@ namespace MP.Data.Controllers
}
return answ;
}
/// <summary>
/// Effettua ricalcolo MSE x macchina indicata
/// </summary>
@@ -1570,6 +1494,7 @@ namespace MP.Data.Controllers
}
return dbResult;
}
/// <summary>
/// Tabella state machine eventi 2 stati data macchina e tipo evento
/// </summary>
@@ -1827,6 +1752,7 @@ namespace MP.Data.Controllers
}
return dbResult;
}
/// <summary>
/// Vista v_MSFD delle machine MULTI filtrato x macchina (da stored)
/// </summary>