diff --git a/MP-IO/Controllers/IOBController.cs b/MP-IO/Controllers/IOBController.cs
index 17adaba2..d206f60d 100644
--- a/MP-IO/Controllers/IOBController.cs
+++ b/MP-IO/Controllers/IOBController.cs
@@ -328,13 +328,12 @@ namespace MP_IO.Controllers
return answ;
}
///
- /// restituisce elenco parametri correnti come una List Json di oggetti parameterConf
- /// PUT: IOB/getCurrParam/SIMUL_03
+ /// restituisce elenco parametri correnti come una List Json di oggetti objItem
+ /// GET: IOB/getObjItems/SIMUL_03
///
/// ID dell'IOB
///
- [HttpPost]
- public string getCurrParams(string id)
+ public string getObjItems(string id)
{
string answ = "";
if (string.IsNullOrWhiteSpace(id))
@@ -348,7 +347,7 @@ namespace MP_IO.Controllers
try
{
// deserializzo.
- currParams = DataLayer.getIobCurrParams(id);
+ currParams = DataLayer.getCurrObjItems(id);
// se != null --> salvo!
if (currParams != null)
{
@@ -364,13 +363,13 @@ namespace MP_IO.Controllers
return answ;
}
///
- /// Processa una chiamata POST per l'invio di una List Json di oggetti parameterConf
- /// PUT: IOB/setCurrParam/SIMUL_03
+ /// Processa una chiamata POST per l'invio di una List Json di oggetti objItem
+ /// POST: IOB/setObjItems/SIMUL_03
///
/// ID dell'IOB
///
[HttpPost]
- public string setCurrParams(string id)
+ public string setObjItems(string id)
{
string answ = "";
if (string.IsNullOrWhiteSpace(id))
@@ -397,7 +396,54 @@ namespace MP_IO.Controllers
// se != null --> salvo!
if (currParams != null)
{
- DataLayer.setIobCurrParams(id, currParams);
+ DataLayer.setCurrObjItems(id, currParams);
+ answ = "OK";
+ }
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog($"Errore in setCurrParams{Environment.NewLine}{exc}");
+ answ = "NO";
+ }
+ }
+ return answ;
+ }
+ ///
+ /// Processa una chiamata POST per l'invio di una List Json di UNO O PIU' oggetti objItem
+ /// POST: IOB/upsertObjItems/SIMUL_03
+ ///
+ /// ID dell'IOB
+ ///
+ [HttpPost]
+ public string upsertObjItems(string id)
+ {
+ string answ = "";
+ if (string.IsNullOrWhiteSpace(id))
+ {
+ answ = "Missing IOB";
+ }
+ else
+ {
+ // 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;
+ // procedo a deserializzare in blocco l'oggetto...
+ List innovazioni = new List();
+ try
+ {
+ // deserializzo.
+ innovazioni = JsonConvert.DeserializeObject>(content);
+ // se != null --> salvo!
+ if (innovazioni != null)
+ {
+ // salvo
+ DataLayer.upsertCurrObjItems(id, innovazioni);
answ = "OK";
}
}
diff --git a/MP-TAB/WebUserControls/mod_sendParameters.ascx.cs b/MP-TAB/WebUserControls/mod_sendParameters.ascx.cs
index 97885c75..24a36d7a 100644
--- a/MP-TAB/WebUserControls/mod_sendParameters.ascx.cs
+++ b/MP-TAB/WebUserControls/mod_sendParameters.ascx.cs
@@ -38,7 +38,7 @@ namespace MoonProTablet.WebUserControls
List dcList = new List();
try
{
- dcList = DataLayer.getIobCurrParams(idxMacchina);
+ dcList = DataLayer.getCurrObjItems(idxMacchina);
fatto = true;
}
catch
diff --git a/MapoDb/DataLayer.cs b/MapoDb/DataLayer.cs
index 5c5a5642..004839e9 100644
--- a/MapoDb/DataLayer.cs
+++ b/MapoDb/DataLayer.cs
@@ -1025,17 +1025,17 @@ namespace MapoDb
///
///
///
- public static List getIobCurrParams(string idxMacchina)
+ public static List getCurrObjItems(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
- List currParameters = new List();
- if(serVal != null)
+ List currParameters = new List();
+ if (serVal != null)
{
try
{
currParameters = JsonConvert.DeserializeObject>(serVal);
}
- catch(Exception exc)
+ catch (Exception exc)
{
logger.lg.scriviLog($"Eccezione in deserializzazione getIobCurrParam{Environment.NewLine}{exc}");
}
@@ -1046,14 +1046,44 @@ namespace MapoDb
/// SET elenco parametri correnti x IOB
///
///
- ///
+ ///
///
- public static bool setIobCurrParams(string idxMacchina, List currParameters)
+ public static bool setCurrObjItems(string idxMacchina, List currValues)
{
bool answ = false;
- if(currParameters!=null)
+ if (currValues != null)
{
- string serVal = JsonConvert.SerializeObject(currParameters);
+ string serVal = JsonConvert.SerializeObject(currValues);
+ memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
+ }
+ return answ;
+ }
+ ///
+ /// Effettua UPSERT elenco parametri correnti x IOB (se c'è UPDATE, se manca ADD)
+ ///
+ ///
+ ///
+ ///
+ public static bool upsertCurrObjItems(string idxMacchina, List innovations)
+ {
+ bool answ = false;
+ if (innovations != null)
+ {
+ // leggo i valori attuali...
+ List actValues = getCurrObjItems(idxMacchina);
+ // per ogni valore passatomi faccio insert o update
+ foreach (var item in innovations)
+ {
+ objItem trovato = actValues.Find(obj => obj.uid == item.uid);
+ if (trovato != null)
+ {
+ actValues.Remove(trovato);
+ }
+ // aggiungo
+ actValues.Add(item);
+ }
+ // serializzo e salvo
+ string serVal = JsonConvert.SerializeObject(actValues);
memLayer.ML.setRSV(currParametersHash(idxMacchina), serVal);
}
return answ;