From 7b706e7fc159d2f6ed64b92c864ef3cbcc48242d Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 30 Apr 2026 15:54:26 +0200 Subject: [PATCH] Aggiunta gestione microstatomacchina --- MP.Data/Repository/IOC/IIocRepository.cs | 7 ++++ MP.Data/Repository/IOC/IocRepository.cs | 41 +++++++++++++++++++++--- 2 files changed, 43 insertions(+), 5 deletions(-) diff --git a/MP.Data/Repository/IOC/IIocRepository.cs b/MP.Data/Repository/IOC/IIocRepository.cs index eb74fdde..60537ec1 100644 --- a/MP.Data/Repository/IOC/IIocRepository.cs +++ b/MP.Data/Repository/IOC/IIocRepository.cs @@ -34,6 +34,13 @@ namespace MP.Data.Repository.IOC /// Task EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv); + /// + /// Aggiornamento record Microstato macchina + /// + /// + /// + Task MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec); + #endregion Public Methods } } \ No newline at end of file diff --git a/MP.Data/Repository/IOC/IocRepository.cs b/MP.Data/Repository/IOC/IocRepository.cs index b2f5d65e..cbf3a1b8 100644 --- a/MP.Data/Repository/IOC/IocRepository.cs +++ b/MP.Data/Repository/IOC/IocRepository.cs @@ -102,9 +102,9 @@ namespace MP.Data.Repository.IOC /// public async Task EvListMicroStatoInsertAsync(MicroStatoMacchinaModel newRecMsm, EventListModel newRecEv) { - // eseguo in transazione... await using var dbCtx = await CreateContextAsync(); - await using var tx = await dbCtx.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); + //// eseguo in transazione... + //await using var tx = await dbCtx.Database.BeginTransactionAsync(IsolationLevel.ReadCommitted); try { @@ -132,17 +132,48 @@ namespace MP.Data.Repository.IOC // EF Core 8 raggruppa automaticamente INSERT/UPDATE in un batch var rowsAffected = await dbCtx.SaveChangesAsync(); - await tx.CommitAsync(); + //await tx.CommitAsync(); return rowsAffected > 0; } - catch + catch (Exception ex) { - await tx.RollbackAsync(); + //await tx.RollbackAsync(); + // Log dettagliato errore + Log.Error(ex, $"Errore in EvListMicroStatoInsertAsync: {newRecEv.IdxMacchina}"); throw; } } + public async Task MicroStatoMacchinaUpsertAsync(MicroStatoMacchinaModel newRec) + { + bool fatto = false; + using var dbCtx = new MoonProContext(options); + + 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; + } + #endregion Public Methods #region Protected Fields