diff --git a/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
index 3aa3a46c..5576c9b0 100644
--- a/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
+++ b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
@@ -491,13 +491,29 @@ namespace EgtBEAMWALL.DataLayer.Controllers
}
///
- /// Esegue sync di un SINGOLO progetto:
+ /// Esegue sync di un SINGOLO PROD (cloud proj):
/// - legge il progetto locale + upload x sync (verso cloud)
/// - riceve ID cloud e aggiorna in locale...
///
- /// Id del Proj da sincronizzare (invio dati con eventuale fix ProjCloudId)
+ /// Id del Prod da sincronizzare (invio dati con eventuale fix ProjCloudId)
/// Risultato sincronizzazione
- public SyncResult ProjSyncro(int ProjId)
+ public SyncResult ProjSyncro(int ProdId)
+ {
+ int cloudId = 0;
+ SyncResult answ = ProjSyncro(ProdId, ref cloudId);
+ return answ;
+ }
+
+
+ ///
+ /// Esegue sync di un SINGOLO PROD (cloud proj):
+ /// - legge il progetto locale + upload x sync (verso cloud)
+ /// - riceve ID cloud e aggiorna in locale...
+ ///
+ /// Id del Prod da sincronizzare (invio dati con eventuale fix ProjCloudId)
+ /// Id del Prod in rete (eventualmente creato) che verrà RESTITUITO x reference
+ /// Risultato sincronizzazione
+ public SyncResult ProjSyncro(int ProdId, ref int ProjCloudId)
{
SyncResult answ = SyncResult.ERR_ND;
// verifico server ok
@@ -508,10 +524,10 @@ namespace EgtBEAMWALL.DataLayer.Controllers
}
else
{
- using (ProjController dbContr = new ProjController())
+ using (ProdController dbContr = new ProdController())
{
// in primis recupero item
- var currRec = dbContr.FindByProjId(ProjId);
+ var currRec = dbContr.FindByProdId(ProdId);
if (currRec == null)
{
answ = SyncResult.ERR_ProjIdNotFound;
@@ -519,21 +535,20 @@ namespace EgtBEAMWALL.DataLayer.Controllers
else
{
// preparo obj da inviare...
- var projDto = ProjController.ConvToDto(currRec);
- //List list2send = matListDb.Select(x => MaterialsController.ConvToDto(x)).ToList();
+ var projDto = ProdController.ConvToDto(currRec);
// invio e recupero ID...
- int cloudId = commLib.ProjectSend(projDto);
+ ProjCloudId = commLib.ProjectSend(projDto);
// se inviato, faccio upgrade locale...
- if (cloudId == 0)
+ if (ProjCloudId == 0)
{
answ = SyncResult.ERR_ProjNotSync;
}
else
{
// verifico SE SIA da scrivere cloud ID...
- if (cloudId != currRec.ProjCloudId)
+ if (ProjCloudId != currRec.ProjCloudId)
{
- dbContr.UpdateCloudId(ProjId, cloudId);
+ dbContr.UpdateCloudId(ProdId, ProjCloudId);
}
answ = SyncResult.ALL_OK;
}
diff --git a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs
index 427863f0..8f3238cc 100644
--- a/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs
+++ b/EgtBEAMWALL.DataLayer/Controllers/ProdController.cs
@@ -1,4 +1,5 @@
using EgtBEAMWALL.DataLayer.DatabaseModels;
+using EgwProxy.MagMan.DTO;
using NLog;
using System;
using System.Collections.Generic;
@@ -58,6 +59,41 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return done;
}
+ ///
+ /// Helper conversione a ProjectDTO
+ ///
+ /// record in formato ProdModel
+ ///
+ public static ProjectDTO ConvToDto(ProdModel currRec)
+ {
+ // ho valori mancanti che saranno calcolati dal cloud e valori messi a zero di default
+ ProjectDTO answ = new ProjectDTO()
+ {
+ ProjCloudId = currRec.ProjCloudId,
+ ProjLocalId = currRec.ProdDbId,
+ ProjExtId = currRec.ProdId,
+ // è calcolato sul cloud, da token --> machine ID
+ MachineCloudId = 0,
+ // è calcolato sul cloud, da token --> KeyNum
+ KeyNum = 0,
+ // disponibile solo su PROJ
+ BTLFileName = "",
+ PType = (EgwProxy.MagMan.BWType)currRec.PType,
+ Machine = currRec.Machine,
+ ProjDescription = currRec.Description,
+ DtCreated = currRec.DtCreated,
+ DtLastAction = DateTime.MinValue,
+ DtSchedule = DateTime.MinValue,
+ DtStartProd = DateTime.MinValue,
+ // disponibile solo su PROJ
+ ListName = "",
+ ProcTimeEst = 0,
+ ProcTimeReal = 0,
+ IsActive = currRec.IsActive,
+ IsArchived = currRec.IsArchived
+ };
+ return answ;
+ }
///
/// Helper conversione modelli verso Core.ProdItem
///
@@ -88,7 +124,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
public Core.ProdFileM ConvToCoreFile(ProdModel currProd)
{
Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate, currProd.IsActive, currProd.IsProduced, currProd.IsArchived, currProd.ProjCloudId);
- //Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate, currProd.IsActive, currProd.IsProduced, currProd.IsArchived, currProd.ProjListNav.Select(j => Core.ProjFileM.CreateProjFileM(j.ProjId, currProd.ProdId, j.DtCreated, j.DtExported, j.ListName, j.BTLFileName, j.ProjDescription, j.IsNew, j.Locked, j.PType, j.Machine, j.IsActive, j.IsActive)).ToList());
+ //Core.ProdFileM answ = Core.ProdFileM.CreateProdFileM(currProd.ProdId, ProjIdByProd(currProd.ProdId), currProd.DtCreated, currProd.Description, currProd.PType, currProd.Machine, currProd.LockedBy, currProd.LockDate, currProd.IsActive, currProd.IsProduced, currProd.IsArchived, currProd.ProjListNav.Select(j => Core.ProjFileM.CreateProjFileM(j.ProdId, currProd.ProdId, j.DtCreated, j.DtExported, j.ListName, j.BTLFileName, j.ProjDescription, j.IsNew, j.Locked, j.PType, j.Machine, j.IsActive, j.IsActive)).ToList());
return answ;
}
@@ -750,6 +786,64 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return fatto;
}
+ ///
+ /// Update record su DB x ProjectCloudId
+ ///
+ ///
+ ///
+ ///
+ public Core.ProdFileM UpdateCloudId(int ProdId, int ProjCloudId)
+ {
+ // cerco specifico Proj
+ ProdModel currData;
+ using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
+ {
+ currData = localDbCtx
+ .ProdList
+ .Where(x => x.ProdId == ProdId)
+ .SingleOrDefault();
+ if (currData != null)
+ {
+ try
+ {
+ // aggiorno valore BTL
+ currData.ProjCloudId = ProjCloudId;
+
+ // salvo record PROD
+ localDbCtx.SaveChanges();
+
+ // cerco se ci siano prod colelgati ed aggiorno pure loro...
+ var projList = localDbCtx
+ .ProjList
+ .Where(x => x.ProdDbId == currData.ProdDbId)
+ .ToList();
+ if (projList != null)
+ {
+ foreach (var item in projList)
+ {
+ item.ProjCloudId = ProjCloudId;
+ }
+ // salvo modifihce ai PROJ
+ localDbCtx.SaveChanges();
+ }
+ }
+ catch (Exception exc)
+ {
+ string errMessage = $"EXCEPTION on Prod.UpdateCloudId:{Environment.NewLine}{exc}";
+ Console.WriteLine(errMessage);
+ Log.Error(errMessage);
+ }
+ }
+ else
+ {
+ string errMessage = $"ERROR on Prod.UpdateCloudId: req item was not found | ProdId {ProdId} | ProjCloudId {ProjCloudId}";
+ Console.WriteLine(errMessage);
+ Log.Error(errMessage);
+ }
+ }
+ return ConvToCoreFile(currData);
+ }
+
///
/// Update record su DB x Description
///
@@ -1041,7 +1135,7 @@ namespace EgtBEAMWALL.DataLayer.Controllers
.SingleOrDefault();
if (currData != null)
{
- // aggiorno valore BTL
+ // aggiorno valore tipo
currData.PType = PType;
// Commit changes
diff --git a/EgtBEAMWALL.DataLayer/Controllers/ProjController.cs b/EgtBEAMWALL.DataLayer/Controllers/ProjController.cs
index 1efa13c8..0ee3c148 100644
--- a/EgtBEAMWALL.DataLayer/Controllers/ProjController.cs
+++ b/EgtBEAMWALL.DataLayer/Controllers/ProjController.cs
@@ -20,48 +20,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#region Public Methods
- ///
- /// Search for already imported BTL from FileName (only)
- /// =0 : NOT found >0 : ProjId (already present) for overwrite
- ///
- ///
- ///
- public int AlreadyImported(string BTLFileName)
- {
- int answ = 0;
- using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
- {
- var dbResult = localDbCtx
- .ProjList
- .Where(x => x.BTLFileName == BTLFileName)
- //valutare se usare solo attivi...
- //.Where(x => x.BTLFileName == BTLFileName && x.IsActive == true)
- .FirstOrDefault();
-
- //se avesse trovato-- > riporto id...
- if (dbResult != null && dbResult.ProjId > 0)
- {
- answ = dbResult.ProjId;
- }
- }
- return answ;
- }
-
- ///
- /// Helper conversione modelli
- ///
- /// record in formato ProjModel
- ///
- public Core.ProjFileM ConvToCore(ProjModel currRec)
- {
- Core.ProjFileM answ = null;
- if (currRec != null)
- {
- answ = Core.ProjFileM.CreateProjFileM(currRec.ProjId, ProdIdByProdDbId(currRec.ProdDbId), currRec.DtCreated, currRec.DtExported, currRec.ListName, currRec.BTLFileName, currRec.ProjDescription, currRec.IsNew, currRec.Locked, currRec.PType, currRec.Machine, currRec.IsActive, currRec.IsArchived, currRec.ProjCloudId);
- }
- return answ;
- }
-
///
/// Helper conversione a ProjectDTO
///
@@ -128,6 +86,48 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return answ;
}
+ ///
+ /// Search for already imported BTL from FileName (only)
+ /// =0 : NOT found >0 : ProjId (already present) for overwrite
+ ///
+ ///
+ ///
+ public int AlreadyImported(string BTLFileName)
+ {
+ int answ = 0;
+ using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
+ {
+ var dbResult = localDbCtx
+ .ProjList
+ .Where(x => x.BTLFileName == BTLFileName)
+ //valutare se usare solo attivi...
+ //.Where(x => x.BTLFileName == BTLFileName && x.IsActive == true)
+ .FirstOrDefault();
+
+ //se avesse trovato-- > riporto id...
+ if (dbResult != null && dbResult.ProjId > 0)
+ {
+ answ = dbResult.ProjId;
+ }
+ }
+ return answ;
+ }
+
+ ///
+ /// Helper conversione modelli
+ ///
+ /// record in formato ProjModel
+ ///
+ public Core.ProjFileM ConvToCore(ProjModel currRec)
+ {
+ Core.ProjFileM answ = null;
+ if (currRec != null)
+ {
+ answ = Core.ProjFileM.CreateProjFileM(currRec.ProjId, ProdIdByProdDbId(currRec.ProdDbId), currRec.DtCreated, currRec.DtExported, currRec.ListName, currRec.BTLFileName, currRec.ProjDescription, currRec.IsNew, currRec.Locked, currRec.PType, currRec.Machine, currRec.IsActive, currRec.IsArchived, currRec.ProjCloudId);
+ }
+ return answ;
+ }
+
///
/// Delete Proj logically / on DB by ProjId
///
@@ -753,51 +753,6 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return currData;
}
-
- ///
- /// Update record su DB x ProjectCloudId
- ///
- ///
- ///
- ///
- public Core.ProjFileM UpdateCloudId(int ProjId, int ProjCloudId)
- {
- // cerco specifico Proj
- ProjModel currData;
- using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
- {
- currData = localDbCtx
- .ProjList
- .Where(x => x.ProjId == ProjId)
- .SingleOrDefault();
- if (currData != null)
- {
- try
- {
- // aggiorno valore BTL
- currData.ProjCloudId = ProjCloudId;
-
- // Commit changes
- localDbCtx.SaveChanges();
- }
- catch (Exception exc)
- {
- string errMessage = $"EXCEPTION on Proj.UpdateCloudId:{Environment.NewLine}{exc}";
- Console.WriteLine(errMessage);
- Log.Error(errMessage);
- }
- }
- else
- {
- string errMessage = $"ERROR on Proj.UpdateCloudId: req item was not found | ProjId {ProjId} | ProjCloudId {ProjCloudId}";
- Console.WriteLine(errMessage);
- Log.Error(errMessage);
- }
- }
-
- return ConvToCore(currData);
- }
-
///
/// Update record su DB x Description
///