diff --git a/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
index ce3df20b..cff8f85b 100644
--- a/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
+++ b/EgtBEAMWALL.DataLayer/Controllers/MagmanController.cs
@@ -6,9 +6,7 @@ using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Threading;
using System.Threading.Tasks;
-using static EgwProxy.MagMan.RestPayload;
namespace EgtBEAMWALL.DataLayer.Controllers
{
@@ -1144,12 +1142,55 @@ namespace EgtBEAMWALL.DataLayer.Controllers
#region Private Methods
///
- /// Forza sincronizzazione invii non completati
+ /// Forza sincronizzazione invii non completati SOLO di consumi...
///
- /// MockUp: mostra sempre ok anche senza eseguire davvero
+ /// Restituisce esito resync, ALL OK solo se ha fatto tutti gli invii necessari
private SyncResult ForceSyncroSend()
{
- SyncResult answ = SyncResult.ALL_OK;
+ SyncResult answ = SyncResult.ERR_ND;
+ ProjResState projType = ProjResState.Consumed;
+ // recupero da DB eventuale elenco dati da sincronizzare
+ using (MagmanSyncController msContr = new MagmanSyncController())
+ {
+ var list2resend = msContr.GetUnsentFilt("", DateTime.Now.AddDays(1), 1000);
+ if (list2resend == null || list2resend.Count == 0)
+ {
+ answ = SyncResult.ALL_OK;
+ }
+ else
+ {
+ // verifico server ok
+ bool servOk = commLib.CheckRemote();
+ if (!servOk)
+ {
+ answ = SyncResult.ERR_ServerKo;
+ }
+ else
+ {
+ // eseguo re-invio 1:1...
+ List list2send = new List();
+ foreach (var record in list2resend)
+ {
+ list2send = JsonConvert.DeserializeObject>(record.Payload);
+ if (Enum.TryParse(record.SyncType, out projType))
+ {
+ // effettuo invio...
+ bool resOk = commLib.ResourceSend(record.CloudId, projType, list2send);
+ if (!resOk)
+ {
+ answ = SyncResult.ERR_CloudResNotSent;
+ }
+ else
+ {
+ answ = SyncResult.ALL_OK;
+ // registro su DB dataora conclusione invio
+ msContr.SetCompleted(record.SyncId, DateTime.Now);
+ }
+ }
+ }
+ }
+ }
+ }
return answ;
}
diff --git a/EgtBEAMWALL.DataLayer/Controllers/MagmanSyncController.cs b/EgtBEAMWALL.DataLayer/Controllers/MagmanSyncController.cs
index 49e6db4b..ec50b96f 100644
--- a/EgtBEAMWALL.DataLayer/Controllers/MagmanSyncController.cs
+++ b/EgtBEAMWALL.DataLayer/Controllers/MagmanSyncController.cs
@@ -78,6 +78,28 @@ namespace EgtBEAMWALL.DataLayer.Controllers
return dbResult;
}
+ ///
+ /// Lista record NON inviati filtrati x tipo e num max
+ ///
+ /// Tipo di record richiesti, se "" = tutti
+ /// Data-Ora limite per recupero ordinato ASC
+ /// num max di record da restituire
+ ///
+ public List GetUnsentFilt(string SyncType, DateTime DtMax, int NumMax)
+ {
+ List dbResult = new List();
+ using (DatabaseContext localDbCtx = new DatabaseContext(DbConfig.CONNECTION_STRING))
+ {
+ dbResult = localDbCtx
+ .SyncList
+ .Where(x => x.DtExe == null && (string.IsNullOrEmpty(SyncType) || x.SyncType == SyncType) && x.DtReq <= DtMax)
+ .OrderBy(x => x.DtReq)
+ .Take(NumMax)
+ .ToList();
+ }
+ return dbResult;
+ }
+
///
/// Insert record MagmanSync
///
@@ -90,9 +112,9 @@ namespace EgtBEAMWALL.DataLayer.Controllers
{
try
{
- // inserisco record
- localDbCtx.SyncList.Add(newRec);
-
+ // inserisco record
+ localDbCtx.SyncList.Add(newRec);
+
// Commit changes
localDbCtx.SaveChanges();
newId = newRec.SyncId;