Modifica condizione update info con check esistenza CodApp vs log
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user