Modifica condizione update info con check esistenza CodApp vs log

This commit is contained in:
Samuele Locatelli
2025-12-03 17:14:53 +01:00
parent dc3e48e7c6
commit 08677aabbe
+134 -82
View File
@@ -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;
}