From 08677aabbe64b8a9d44c90d843ec656497f526df Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Wed, 3 Dec 2025 17:14:53 +0100 Subject: [PATCH] Modifica condizione update info con check esistenza CodApp vs log --- LiMan.DB/Controllers/DbController.cs | 216 +++++++++++++++++---------- 1 file changed, 134 insertions(+), 82 deletions(-) diff --git a/LiMan.DB/Controllers/DbController.cs b/LiMan.DB/Controllers/DbController.cs index 0c46467..aa627bd 100644 --- a/LiMan.DB/Controllers/DbController.cs +++ b/LiMan.DB/Controllers/DbController.cs @@ -1599,108 +1599,160 @@ namespace LiMan.DB.Controllers bool changed = false; using (LMDbContext localDbCtx = new LMDbContext(_configuration)) { - // cerco record esistente... - var currRec = localDbCtx - .DbSetInstallRel - .Where(x => x.CodApp == upRec.CodApp && x.CodImp == upRec.CodImp && x.AppKey == upRec.AppKey) - .FirstOrDefault(); - if (currRec != null) + // in primis verifico se CodApp รจ gestito, altrimenti loggo e stop... + var okCodApp = localDbCtx + .DbSetApp + .Any(x => x.CodApp == upRec.CodApp); + if (!okCodApp) { - // se idxSubLic mancante cerco... - if (currRec.IdxSubLic == 0) + Log.Info($"Errore | InstallRelUpsert | CodApp not found: {upRec.CodApp} "); + } + else + { + // cerco record esistente... + var currRec = localDbCtx + .DbSetInstallRel + .Where(x => x.CodApp == upRec.CodApp && x.CodImp == upRec.CodImp && x.AppKey == upRec.AppKey) + .FirstOrDefault(); + if (currRec != null) { + // se idxSubLic mancante cerco... + if (currRec.IdxSubLic == 0) + { + // cerco idxSublic da info... + var recIst = localDbCtx + .DbSetSubLicenze + .FirstOrDefault(x => x.Chiave == upRec.AppKey && x.CodImpiego == upRec.CodImp); + if (recIst != null) + { + currRec.IdxSubLic = recIst.IdxSubLic; + currRec.IdxLic = recIst.IdxLic; + } + else + { + recIst = localDbCtx + .DbSetSubLicenze + .FirstOrDefault(x => x.Chiave == upRec.AppKey); + if (recIst != null) + { + // log disuguaglianza chiave + Log.Info($"Mismatch licenza SubLic 01 | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | App.CodImp: {upRec.CodImp} | Db.CodImp: {recIst.CodImpiego}"); + + currRec.IdxSubLic = recIst.IdxSubLic; + currRec.IdxLic = recIst.IdxLic; + // salvo record variazione licenza + LogCodImp recLogCodImp = new LogCodImp() + { + IdxLic = recIst.IdxLic, + IdxSubLic = recIst.IdxSubLic, + CodApp = upRec.CodApp, + CodImpOld = recIst.CodImpiego, + CodImpNew = upRec.CodImp, + DtMod = DateTime.Now + }; + localDbCtx + .DbSetLogCodImp + .Add(recLogCodImp); + + // aggiorno CodImp se non bloccato... + if (recIst.VetoUnlock <= DateTime.Now) + { + recIst.CodImpiego = upRec.CodImp; + localDbCtx.Entry(recIst).State = EntityState.Modified; + // log update codImpiego + Log.Info($"Aggiornamento SubLicenza 01 | CodImp Aggiornato | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | App.CodImp: {upRec.CodImp} | Db.CodImp: {recIst.CodImpiego}"); + } + } + } + } + // indico cambiato SSE variata la versione... + changed = !currRec.VersNum.Equals(upRec.VersNum); + + // ...quindi aggiorno... + currRec.DtCheck = upRec.DtCheck; + currRec.MastKey = upRec.MastKey; + currRec.NumImp = upRec.NumImp; + currRec.VersNum = upRec.VersNum; + localDbCtx.Entry(currRec).State = EntityState.Modified; + } + else + { + bool insOk = false; // cerco idxSublic da info... var recIst = localDbCtx .DbSetSubLicenze .FirstOrDefault(x => x.Chiave == upRec.AppKey && x.CodImpiego == upRec.CodImp); if (recIst != null) - { - currRec.IdxSubLic = recIst.IdxSubLic; - currRec.IdxLic = recIst.IdxLic; - } - } - // indico cambiato SSE variata la versione... - changed = !currRec.VersNum.Equals(upRec.VersNum); - - // ...quindi aggiorno... - currRec.DtCheck = upRec.DtCheck; - currRec.MastKey = upRec.MastKey; - currRec.NumImp = upRec.NumImp; - currRec.VersNum = upRec.VersNum; - localDbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - bool insOk = false; - // cerco idxSublic da info... - var recIst = localDbCtx - .DbSetSubLicenze - .FirstOrDefault(x => x.Chiave == upRec.AppKey && x.CodImpiego == upRec.CodImp); - if (recIst != null) - { - upRec.IdxSubLic = recIst.IdxSubLic; - upRec.IdxLic = recIst.IdxLic; - insOk = true; - } - // se non trovo cerco SOLO con chiave... - else - { - recIst = localDbCtx - .DbSetSubLicenze - .FirstOrDefault(x => x.Chiave == upRec.AppKey); - if (recIst != null) { upRec.IdxSubLic = recIst.IdxSubLic; upRec.IdxLic = recIst.IdxLic; insOk = true; - // salvo record variazione licenza - LogCodImp recLogCodImp = new LogCodImp() + } + // se non trovo cerco SOLO con chiave... + else + { + recIst = localDbCtx + .DbSetSubLicenze + .FirstOrDefault(x => x.Chiave == upRec.AppKey); + if (recIst != null) { - IdxLic = recIst.IdxLic, - IdxSubLic = recIst.IdxSubLic, - CodApp = upRec.CodApp, - CodImpOld = recIst.CodImpiego, - CodImpNew = upRec.CodImp, - DtMod = DateTime.Now - }; + // log disuguaglianza chiave + Log.Info($"Mismatch licenza SubLic 02 | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | App.CodImp: {upRec.CodImp} | Db.CodImp: {recIst.CodImpiego}"); + + upRec.IdxSubLic = recIst.IdxSubLic; + upRec.IdxLic = recIst.IdxLic; + insOk = true; + // salvo record variazione licenza + LogCodImp recLogCodImp = new LogCodImp() + { + IdxLic = recIst.IdxLic, + IdxSubLic = recIst.IdxSubLic, + CodApp = upRec.CodApp, + CodImpOld = recIst.CodImpiego, + CodImpNew = upRec.CodImp, + DtMod = DateTime.Now + }; + localDbCtx + .DbSetLogCodImp + .Add(recLogCodImp); + + // aggiorno CodImp se non bloccato... + if (recIst.VetoUnlock <= DateTime.Now) + { + recIst.CodImpiego = upRec.CodImp; + localDbCtx.Entry(recIst).State = EntityState.Modified; + // log update codImpiego + Log.Info($"Aggiornamento SubLicenza 02 | CodImp Aggiornato | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | App.CodImp: {upRec.CodImp} | Db.CodImp: {recIst.CodImpiego}"); + } + } + } + + if (insOk) + { + // altrimenti aggiungo... localDbCtx - .DbSetLogCodImp - .Add(recLogCodImp); - - // aggiorno CodImp - recIst.CodImpiego = upRec.CodImp; - localDbCtx.Entry(recIst).State = EntityState.Modified; - - // log disuguaglianza chiave - Log.Info($"Mismatch licenza SubLic | CodImp Aggiornato | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | App.CodImp: {upRec.CodImp} | Db.CodImp: {recIst.CodImpiego}"); + .DbSetInstallRel + .Add(upRec); + changed = true; + } + else + { + // loggo problema + Log.Error($"Exception licenza SubLic non trovata | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | CodImp: {upRec.CodImp}"); } } - - if (insOk) + // salvataggio! + try { - // altrimenti aggiungo... - localDbCtx - .DbSetInstallRel - .Add(upRec); - changed = true; + // salvo + var res = localDbCtx.SaveChanges(); + fatto = res != 0 && changed; } - else + catch (Exception ex) { - // loggo problema - Log.Error($"Exception licenza SubLic non trovata | CodApp: {upRec.CodApp} | AppKey: {upRec.AppKey} | CodImp: {upRec.CodImp}"); + Log.Error($"Eccezione in InstallRelUpsert | IdxLic: {upRec.IdxLic} | CodApp: {upRec.CodApp} | VersNum: {upRec.VersNum} {Environment.NewLine}{ex}"); } } - // salvataggio! - try - { - // salvo - var res = localDbCtx.SaveChanges(); - fatto = res != 0 && changed; - } - catch (Exception ex) - { - Log.Error($"Eccezione in InstallRelUpsert | IdxLic: {upRec.IdxLic} | CodApp: {upRec.CodApp} | VersNum: {upRec.VersNum} {Environment.NewLine}{ex}"); - } } return fatto; }