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;