OK metodi get/set/upsert x objItems (parametri) in MP/IO

This commit is contained in:
Samuele E. Locatelli
2019-11-10 16:56:35 +01:00
parent ea257f3418
commit af501346f5
3 changed files with 94 additions and 18 deletions
+55 -9
View File
@@ -328,13 +328,12 @@ namespace MP_IO.Controllers
return answ;
}
/// <summary>
/// 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
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[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;
}
/// <summary>
/// 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
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[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;
}
/// <summary>
/// Processa una chiamata POST per l'invio di una List Json di UNO O PIU' oggetti objItem
/// POST: IOB/upsertObjItems/SIMUL_03
/// </summary>
/// <param name="id">ID dell'IOB</param>
/// <returns></returns>
[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<objItem> innovazioni = new List<objItem>();
try
{
// deserializzo.
innovazioni = JsonConvert.DeserializeObject<List<objItem>>(content);
// se != null --> salvo!
if (innovazioni != null)
{
// salvo
DataLayer.upsertCurrObjItems(id, innovazioni);
answ = "OK";
}
}
@@ -38,7 +38,7 @@ namespace MoonProTablet.WebUserControls
List<objItem> dcList = new List<objItem>();
try
{
dcList = DataLayer.getIobCurrParams(idxMacchina);
dcList = DataLayer.getCurrObjItems(idxMacchina);
fatto = true;
}
catch
+38 -8
View File
@@ -1025,17 +1025,17 @@ namespace MapoDb
/// </summary>
/// <param name="idxMacchina"></param>
/// <returns></returns>
public static List<objItem> getIobCurrParams(string idxMacchina)
public static List<objItem> getCurrObjItems(string idxMacchina)
{
string serVal = memLayer.ML.getRSV(currParametersHash(idxMacchina));
List <objItem> currParameters = new List<objItem>();
if(serVal != null)
List<objItem> currParameters = new List<objItem>();
if (serVal != null)
{
try
{
currParameters = JsonConvert.DeserializeObject<List<objItem>>(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
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="currParameters"></param>
/// <param name="currValues"></param>
/// <returns></returns>
public static bool setIobCurrParams(string idxMacchina, List<objItem> currParameters)
public static bool setCurrObjItems(string idxMacchina, List<objItem> 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;
}
/// <summary>
/// Effettua UPSERT elenco parametri correnti x IOB (se c'è UPDATE, se manca ADD)
/// </summary>
/// <param name="idxMacchina"></param>
/// <param name="innovations"></param>
/// <returns></returns>
public static bool upsertCurrObjItems(string idxMacchina, List<objItem> innovations)
{
bool answ = false;
if (innovations != null)
{
// leggo i valori attuali...
List<objItem> 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;