diff --git a/MP.Data/Controllers/MpIocController.cs b/MP.Data/Controllers/MpIocController.cs index 907fdb53..f2520dfa 100644 --- a/MP.Data/Controllers/MpIocController.cs +++ b/MP.Data/Controllers/MpIocController.cs @@ -15,8 +15,6 @@ namespace MP.Data.Controllers { public class MpIocController { - protected readonly IDbContextFactory _ctxFactory; - protected readonly IDbContextFactory _ctxFactoryFL; #region Public Constructors public MpIocController( @@ -524,30 +522,6 @@ namespace MP.Data.Controllers .ToListAsync(); } -#if false - /// - /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) - /// - /// Data massima x eventi - /// Data minima x eventi - /// * = tutte, altrimenti solo x una data macchina - /// *=tutti, altrimenti solo selezionato - /// numero massimo record da restituire - /// - public async Task> FluxLogGetLastFiltAsync(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec) - { - using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync(); - - 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(); - } -#endif - /// /// Aggiunta record FluxLog /// @@ -561,7 +535,6 @@ namespace MP.Data.Controllers .DbSetFluxLog .Add(newRec); return await dbCtx.SaveChangesAsync() > 0; - } /// @@ -583,268 +556,6 @@ namespace MP.Data.Controllers return result > 0; } -#if false - /// - /// Upsert record keepalive - /// - /// - /// - /// - /// - public async Task KeepAliveUpsertAsync(string IdxMacc, DateTime OraServer, DateTime OraMacc) - { - bool fatto = false; - using var dbCtx = _ctxFactory.CreateDbContext(); - - 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; - - return fatto; - } - - public async Task> ListLinkFiltAsync(string tipoLink) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - dbResult = await dbCtx - .DbSetLinkMenu - .Where(x => x.TipoLink == tipoLink) - .AsNoTracking() - .OrderBy(x => x.Ordine) - .ToListAsync(); - return dbResult; - } - - /// - /// Elenco valori ammessi x tabella/colonna con filtro parametrico - /// - /// Filtro tabella (se "" tutto) - /// Filtro colonna (se "" tutto) - /// - public async Task> ListValuesFiltAsync(string tabName, string fieldName) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - var query = dbCtx - .DbSetListValues - .AsNoTracking() - .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; - } - - /// - /// Intera tabella relazione master/slave in machine (gestione setup master - slave) - /// - /// - public async Task> Macchine2SlaveAsync() - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - dbResult = await dbCtx - .DbSetM2S - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - - return dbResult; - } - - /// - /// Elenco Record Macchine - /// - /// - public async Task> MacchineGetAllAsync() - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - dbResult = await dbCtx - .DbSetMacchine - .ToListAsync(); - - return dbResult; - } - - public async Task MacchineGetByIdxAsync(string IdxMacchina) - { - MacchineModel dbResult = null; - using var dbCtx = _ctxFactory.CreateDbContext(); - - dbResult = await dbCtx - .DbSetMacchine - .FirstOrDefaultAsync(x => x.IdxMacchina == IdxMacchina); - - return dbResult; - } - - /// - /// Elenco da tabella Macchine - /// - /// - /// - public async Task> MacchineGetFiltAsync(string codGruppo) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - if (codGruppo == "*") - { - dbResult = await dbCtx - .DbSetMacchine - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - else - { - dbResult = await dbCtx - .DbSetGrp2Macc - .Where(g => g.CodGruppo == codGruppo) - .Join(dbCtx.DbSetMacchine, - g => g.IdxMacchina, - m => m.IdxMacchina, - (g, m) => m - ) - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - - return dbResult; - } - - /// - /// Upsert Record Macchine ASYNC - /// - /// - public async Task MacchineUpsertAsync(MacchineModel entity) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - // Recuperiamo l'entità tracciata dal context - var trackedEntity = await dbCtx - .DbSetMacchine - .FirstOrDefaultAsync(x => x.IdxMacchina == entity.IdxMacchina); - - if (trackedEntity != null) - { - // Aggiorna i valori dell'entità tracciata con quelli della nuova - dbCtx.Entry(trackedEntity).CurrentValues.SetValues(entity); - } - else - { - dbCtx.DbSetMacchine.Update(entity); - } - bool fatto = await dbCtx.SaveChangesAsync() > 0; - return fatto; - } - - /// - /// Elenco da tabella Macchine - /// - /// - /// - public async Task> MicroStatoMacchinaGetByIdxMaccAsync(string IdxMacc) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - dbResult = await dbCtx - .DbSetMicroStatoMacc - .Where(x => x.IdxMacchina == IdxMacc) - .AsNoTracking() - .ToListAsync(); - return dbResult; - } - - /// - /// Aggiornamento record Microstato macchina - /// - /// - /// - public async Task MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec) - { - bool fatto = false; - using var dbCtx = _ctxFactory.CreateDbContext(); - - var actRec = await dbCtx - .DbSetMicroStatoMacc - .Where(x => x.IdxMacchina == newRec.IdxMacchina) - .AsNoTracking() - .FirstOrDefaultAsync(); - if (actRec == null) - { - dbCtx - .DbSetMicroStatoMacc - .Add(newRec); - } - else - { - actRec.IdxMicroStato = newRec.IdxMicroStato; - actRec.InizioStato = newRec.InizioStato; - actRec.Value = newRec.Value; - - dbCtx.Entry(actRec).State = EntityState.Modified; - } - fatto = await dbCtx.SaveChangesAsync() > 0; - - return fatto; - } - - /// - /// Elenco da tabella MappaStatoExplModel - /// - /// - public async Task> MseGetAllAsync(int maxAge = 2000) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); - - dbResult = await dbCtx - .DbSetMSE - .FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } -#endif - /// /// Generazione automatica ODL /// @@ -917,54 +628,6 @@ namespace MP.Data.Controllers return answ; } -#if false - /// - /// Fix ODL per macchine SLAVE - /// - /// - /// - /// - /// - public async Task OdlFixMachineSlave(string idxMacchina, int numDayPrev, int doInsert) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - 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; - } - - /// - /// Elenco ODL data macchina e periodo - /// - /// - /// - /// - /// - public async Task> OdlListByMaccPeriodoAsync(string idxMacchina, DateTime dtStart, DateTime dtEnd) - { - List dbResult = new List(); - using var dbCtx = _ctxFactory.CreateDbContext(); - - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - var DataFrom = new SqlParameter("@dataFrom", dtStart); - var DataTo = new SqlParameter("@dataTo", dtEnd); - dbResult = await dbCtx - .DbSetODLExp - .FromSqlRaw("EXEC stp_ODL_getByMacchinaPeriodo @IdxMacchina, @dataFrom, @dataTo", IdxMacchina, DataFrom, DataTo) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } -#endif - /// /// Fix ODL per macchine SLAVE Async /// @@ -1007,7 +670,6 @@ namespace MP.Data.Controllers return answ; } - /// /// Conteggio PzProd Macchina Async /// @@ -1192,183 +854,6 @@ namespace MP.Data.Controllers return fatto; } -#if false - /// - /// Update record Registro Dichiarazioni - /// - /// - /// - public async Task RegDichiarUpdateAsync(RegistroDichiarazioniModel newRec) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var Original_IdxDich = new SqlParameter("@Original_IdxDich", newRec.IdxDich); - var DtRec = new SqlParameter("@DtRec", newRec.DtRec); - var TagCode = new SqlParameter("@TagCode", newRec.TagCode); - var ValString = new SqlParameter("@ValString", newRec.ValString); - var MatrOpr = new SqlParameter("@MatrOpr", newRec.MatrOpr); - var result = await dbCtx - .Database - .ExecuteSqlRawAsync("exec dbo.stp_DD_updateQuery @Original_IdxDich, @DtRec, @TagCode, @ValString, @MatrOpr", Original_IdxDich, DtRec, TagCode, ValString, MatrOpr); - - return result != 0; - } - - /// - /// Aggiunta record RemoteRebootLog - /// - /// - /// - public async Task RemRebootLogAddAsync(RemoteRebootLogModel newRec) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var dbResult = dbCtx - .DbSetRemRebLog - .Add(newRec); - - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Recupera tutti i record di RemoteRebootLog - /// - /// - public async Task> RemRebootLogGetAllAsync() - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var dbResult = await dbCtx - .DbSetRemRebLog - .AsNoTracking() - .OrderByDescending(x => x.IdxReboot) - .ToListAsync(); - return dbResult; - } - - /// - /// Recupera ultimo record x ogni IdxMacchina x avere ultimo attivo - /// - /// - public async Task> RemRebootLogGetLastAsync() - { - using var dbCtx = _ctxFactory.CreateDbContext(); - var dbResult = await dbCtx - .DbSetRemRebLog - .FromSqlRaw("EXEC stp_RRL_getLast") - .AsNoTracking() - .ToListAsync(); - return dbResult; - } - - /// - /// Recupera ultimo record x ogni IdxMacchina x avere ultimo attivo - /// - /// - public async Task RemRebootLogKeepLastAsync(int num2keep) - { - 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 - var pThresh = new SqlParameter("@threshMult", 1.5); - var dbResult = await dbCtx.Database.ExecuteSqlRawAsync( - "EXEC dbo.stp_RRL_KeepLatest @num2keep, @threshMult", pNum2Keep, pThresh); - - return dbResult != 0; - } - - /// - /// Aggiunta record SignalLog Async - /// - /// - /// - public async Task SignalLogInsertAsync(SignalLogModel newRec) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var currRec = dbCtx - .DbSetSignalLog - .Add(newRec); - - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Tabella state machine eventi 2 stati data macchina e tipo evento - /// - /// - /// - public async Task> SMES_getHwTransitionsAsync(string idxMacchina, int idxTipo) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - var IdxTipo = new SqlParameter("@IdxTipo", idxTipo); - var dbResult = await dbCtx - .DbSetSMES - .FromSqlRaw("exec dbo.stp_TS_getByIdxMacchIdxTipoEv @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } - - /// - /// Tabella state machine eventi 2 stati data macchina e tipo evento - /// - /// - /// - public async Task> SMES_getUserForcedAsync(string idxMacchina, int idxTipo) - { - await using var dbCtx = _ctxFactory.CreateDbContext(); - - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - var IdxTipo = new SqlParameter("@IdxTipo", idxTipo); - var dbResult = await dbCtx - .DbSetSMES - .FromSqlRaw("exec dbo.stp_TS_getUserForcedTrans @IdxMacchina, @IdxTipo", IdxMacchina, IdxTipo) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } - - /// - /// Intera tabella state machine ingressi 2 eventi - /// - /// - public List StateMachineIngressi(int idxFam) - { - 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(); - } - - /// - /// Intera tabella state machine ingressi 2 eventi - /// - /// - public async Task> StateMachineIngressiAsync(int idxFam) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - - var IdxFamIn = new SqlParameter("@IdxFamigliaIngresso", idxFam); - var dbResult = await dbCtx - .DbSetSMI - .FromSqlRaw("exec dbo.stp_TRI_getByIdxFamIng @IdxFamigliaIngresso", IdxFamIn) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } -#endif - /// /// Stato prod macchina (completo) Async /// @@ -1450,7 +935,15 @@ namespace MP.Data.Controllers #endregion Public Methods + #region Protected Fields + + protected readonly IDbContextFactory _ctxFactory; + protected readonly IDbContextFactory _ctxFactoryFL; + + #endregion Protected Fields + #region Private Fields + private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); private DbContextOptions optionsFlux;