diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs
index 3347cfda..7c2cb78c 100644
--- a/MP-IO/Controllers/IOBController.cs
+++ b/MP-IO/Controllers/IOBController.cs
@@ -79,6 +79,7 @@ namespace MP_IO.Controllers
return answ;
}
+
// GET: IOB/enabled/SIMUL_03
public string enabled(string id)
{
@@ -105,9 +106,88 @@ namespace MP_IO.Controllers
return answ;
}
+ ///
+ /// Processa una chiamata POST per l'invio di un array Json di oggetti rawTransfer (generiche info da deserializzare)
+ /// POST: IOB/rawTransfJson/SIMUL_03
+ ///
+ /// ID dell'IOB
+ ///
+ [HttpPost]
+ public string rawTransfJson(string id)
+ {
+ int insDone = 0;
+ string answ = "";
+ // questa classe è derivata da Controller.Response... x cui recupero lo stream in altro modo...
+ string content = "";
+ System.Web.HttpContext.Current.Request.InputStream.Position = 0;
+ using (var reader = new StreamReader(
+ Request.InputStream, System.Text.Encoding.UTF8, true, 4096, true))
+ {
+ content = reader.ReadToEnd();
+ }
+ //Rest
+ System.Web.HttpContext.Current.Request.InputStream.Position = 0;
+ // se ho dati...
+ if (content != "")
+ {
+ DataLayer DataLayerObj = new DataLayer();
+ // deserializzo come un dictionary generico di oggetti rawDataType/string
+ baseRawTransf receivedData = new baseRawTransf();
+ // procedo a deserializzare in blocco l'oggetto...
+ try
+ {
+ // deserializzo.
+ receivedData = JsonConvert.DeserializeObject(content);
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog($"Errore in fase deserializzazione rawTransfJson{Environment.NewLine}{exc}");
+ answ = "NO";
+ }
+ // se ho qualcosa da processare...
+ if (receivedData != null)
+ {
+ try
+ {
+ // per ora salvo su REDIS ultimo x tipo
+ DataLayerObj.lastRawTrasfData = JsonConvert.SerializeObject(receivedData.mesContent);
+
+ // !!! FixMe ToDo fare
+ // deserializzazione e salvataggio su MongoDB
+ // salvataggio su tab RawTrasf su DB IS
+
+ // in base al tipo processo...
+ switch (receivedData.mesType)
+ {
+ case rawTransfType.ND:
+ break;
+ case rawTransfType.IcoelBatch:
+ break;
+ case rawTransfType.IcoelVarInfo:
+ break;
+ default:
+ break;
+ }
+ insDone++;
+ // se vuoto --> OK!
+ if (string.IsNullOrEmpty(answ))
+ {
+ answ = $"OK {insDone} processed";
+ }
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog($"Errore in fase invio valori rawTransfJson{Environment.NewLine}{exc}");
+ answ = "NO";
+ }
+ }
+ }
+ return answ;
+ }
+
///
/// Processa una chiamata POST per l'invio di un array Json di oggetti input (EVENTI)
- /// PUT: IOB/evListJson/SIMUL_03
+ /// POST: IOB/evListJson/SIMUL_03
///
/// ID dell'IOB
///
diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs
index e3892c82..fb4cad70 100644
--- a/MapoDb/DataLayer.cs
+++ b/MapoDb/DataLayer.cs
@@ -120,10 +120,7 @@ namespace MapoDb
///
public static string hMSE
{
- get
- {
- return mHash(string.Format("hMSE_DATA"));
- }
+ get => mHash("hMSE_DATA");
}
public static string redKeyArtUsed
@@ -135,6 +132,11 @@ namespace MapoDb
get => mHash($"CACHE:TabCheckArt");
}
+ public static string redKeyRawTransfData
+ {
+ get => mHash($"RAW:TRANSFER");
+ }
+
///
/// Cognome Nome da MatrOpr in sessione
///
@@ -173,6 +175,25 @@ namespace MapoDb
}
}
+
+ ///
+ /// Dati RawTransfer serializzati in REDIS (get/set)
+ ///
+ public string lastRawTrasfData
+ {
+ get
+ {
+ string answ = "";
+ logger.lg.scriviLog("Richiesta rawTransfData da REDIS");
+ answ = memLayer.ML.getRSV(redKeyRawTransfData);
+ return answ;
+ }
+ set
+ {
+ memLayer.ML.setRSV(redKeyRawTransfData, value);
+ }
+ }
+
///
/// MatrOpr in sessione
///
diff --git a/MapoSDK/Enums.cs b/MapoSDK/Enums.cs
index d0e5c1a4..fbc241e4 100644
--- a/MapoSDK/Enums.cs
+++ b/MapoSDK/Enums.cs
@@ -1,4 +1,7 @@
-namespace MapoSDK
+using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
+
+namespace MapoSDK
{
public enum DataItemCategory
{
@@ -17,6 +20,27 @@
error
}
+ ///
+ /// Tipologia dato Raw Transfer
+ ///
+ /// serializzazione Native
+ /// [JsonConverter(typeof(JsonStringEnumConverter))]
+ /// serializzazione Newtonsoft json
+ /// [JsonConverter(typeof(StringEnumConverter))]
+ [JsonConverter(typeof(StringEnumConverter))]
+ public enum rawTransfType
+ {
+ ND = 0,
+ ///
+ /// Icoel: Batch info
+ ///
+ IcoelBatch,
+ ///
+ /// Icoel: Variety + layout info relative
+ ///
+ IcoelVarInfo
+ }
+
///
/// Tipo di IOB
///
diff --git a/MapoSDK/MapoSDK.csproj b/MapoSDK/MapoSDK.csproj
index 3e2e358c..b4dff43d 100644
--- a/MapoSDK/MapoSDK.csproj
+++ b/MapoSDK/MapoSDK.csproj
@@ -15,7 +15,7 @@
EgalWare
SDK for MAPO solutions
MAPO;MES;SDK
- Copyright (c) 2007-2022 EgalWare
+ Copyright (c) 2007-2022 EgalWare
512
true
diff --git a/MapoSDK/Objects.cs b/MapoSDK/Objects.cs
index 81bfe66f..57c2ee7f 100644
--- a/MapoSDK/Objects.cs
+++ b/MapoSDK/Objects.cs
@@ -438,4 +438,20 @@ namespace MapoSDK
#endregion Public Properties
}
+
+ ///
+ /// Classe di base per trasferimento informazioni di tipo RawTransfer
+ ///
+ public class baseRawTransf
+ {
+ ///
+ /// Tipo di messaggio trasmesso
+ ///
+ public rawTransfType mesType { get; set; } = rawTransfType.ND;
+
+ ///
+ /// Messaggio in modalità raw/stringa
+ ///
+ public object mesContent { get; set; } = null;
+ }
}
\ No newline at end of file