Merge remote-tracking branch 'gitlab.seriate/DataLayer' into feature/NewWarehouseTest
This commit is contained in:
@@ -246,8 +246,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// <summary>
|
||||
/// Recupero i dati NON sincronizzati in ordine crescente fino al num max indicato
|
||||
/// </summary>
|
||||
/// <param name="dtStart"></param>
|
||||
/// <param name="dtEnd"></param>
|
||||
/// <param name="numMax"></param>
|
||||
/// <returns></returns>
|
||||
public List<LogMachineModel> GetUnsentAsc(int numMax)
|
||||
{
|
||||
@@ -256,7 +255,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
// retrieve
|
||||
return localDbCtx
|
||||
.LogMachineList
|
||||
.Where(x => x.DtSent == null || x.DtSent < x.DtEvent)
|
||||
.Where(x => (x.DtSent == null || x.DtSent < x.DtEvent) && x.ProjCloudId > 0)
|
||||
.OrderBy(x => x.DtEvent)
|
||||
.Take(numMax)
|
||||
.ToList();
|
||||
@@ -293,6 +292,67 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
return done;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cerca di sistemare gli ID di Prod e ProjCloud mancanti
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public bool TryFixProjCloudId()
|
||||
{
|
||||
// init vars
|
||||
bool fatto = false;
|
||||
int prodId = 0;
|
||||
// vado sul DB
|
||||
using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
|
||||
{
|
||||
// retrieve
|
||||
var list2proc = localDbCtx
|
||||
.LogMachineList
|
||||
.Where(x => x.ProjCloudId == 0 && (x.EvType == Core.MachLog.MachLogTypes.PART_STATUS || x.EvType == Core.MachLog.MachLogTypes.MACHGROUP_STATUS))
|
||||
.OrderBy(x => x.DtEvent)
|
||||
.ToList();
|
||||
// se ci sono...
|
||||
if (list2proc != null && list2proc.Count > 0)
|
||||
{
|
||||
// recupero elenco PROD
|
||||
List<ProdModel> prodList = localDbCtx
|
||||
.ProdList
|
||||
.AsNoTracking()
|
||||
.ToList();
|
||||
|
||||
foreach (var item in list2proc)
|
||||
{
|
||||
prodId = 0;
|
||||
// cerco valore
|
||||
string[] dataList = item.VarValue.Split(';');
|
||||
if (dataList != null && dataList.Count() > 0)
|
||||
{
|
||||
int.TryParse(dataList[0], out prodId);
|
||||
// se trovato
|
||||
if (prodId > 0)
|
||||
{
|
||||
// salvo il valore prodId
|
||||
item.ProdId = prodId;
|
||||
// cerco il projCloudId in elenco
|
||||
var projRec = prodList.Where(x => x.ProdId == prodId).FirstOrDefault();
|
||||
if (projRec != null)
|
||||
{
|
||||
item.ProjCloudId = projRec.ProjCloudId;
|
||||
}
|
||||
// indico modificato
|
||||
localDbCtx.Entry(item).State = System.Data.Entity.EntityState.Modified;
|
||||
}
|
||||
}
|
||||
}
|
||||
// salvo
|
||||
localDbCtx.SaveChanges();
|
||||
// registro
|
||||
fatto = true;
|
||||
}
|
||||
}
|
||||
// risultato
|
||||
return fatto;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update single LogMachineModel
|
||||
/// </summary>
|
||||
|
||||
@@ -219,8 +219,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
/// </summary>
|
||||
/// <param name="batchSize">num record da inviare in ogni singolo batch (std: 50)</param>
|
||||
/// <param name="num2send">num max di record da inviare (std: 1000)</param>
|
||||
/// <param name="tryFixProj">Ture: cerca di sistemare ProdId e ProjCloudId prima di inviare</param>
|
||||
/// <returns></returns>
|
||||
public SyncResult CloudLogMaccSyncro(int batchSize = 50, int num2send = 1000)
|
||||
public SyncResult CloudLogMaccSyncro(int batchSize = 50, int num2send = 1000, bool tryFixProj = false)
|
||||
{
|
||||
SyncResult answ = SyncResult.ERR_ND;
|
||||
// verifico server ok
|
||||
@@ -235,6 +236,11 @@ namespace EgtBEAMWALL.DataLayer.Controllers
|
||||
using (LogMachineController lmDbContr = new LogMachineController())
|
||||
{
|
||||
bool okSend = false;
|
||||
// se richiesto PRIMA fa il try-fix ProdId e ProjCloudId
|
||||
if(tryFixProj)
|
||||
{
|
||||
bool fixDone = lmDbContr.TryFixProjCloudId();
|
||||
}
|
||||
// elenco record da inviare...
|
||||
List<LogMachineModel> recList = lmDbContr.GetUnsentAsc(num2send);
|
||||
// controllo ci sia qulcosa da inviare...
|
||||
|
||||
Reference in New Issue
Block a user