diff --git a/Thermo.Active.Config/ServerConfigController.cs b/Thermo.Active.Config/ServerConfigController.cs index 5cfaad83..b9c4c7be 100644 --- a/Thermo.Active.Config/ServerConfigController.cs +++ b/Thermo.Active.Config/ServerConfigController.cs @@ -841,6 +841,13 @@ namespace Thermo.Active.Config { if (File.Exists(filePath)) { + // check filePath... + if (!filePath.Contains(RECIPE_DIRECTORY)) + { + // aggiungo base path! + filePath = RECIPE_DIRECTORY + filePath; + } + // load all text data var rawData = File.ReadAllText(filePath); try @@ -865,6 +872,12 @@ namespace Thermo.Active.Config string rawData = JsonConvert.SerializeObject(RecipeLiveData); // save live! File.WriteAllText(LIVE_RECIPE_PATH, rawData); + // check filePath... + if (!filePath.Contains(RECIPE_DIRECTORY)) + { + // aggiungo base path! + filePath = RECIPE_DIRECTORY + filePath; + } // save! File.WriteAllText(filePath, rawData); } diff --git a/Thermo.Active/Controllers/WebApi/RecipeController.cs b/Thermo.Active/Controllers/WebApi/RecipeController.cs index 7765b2ed..8466f6a0 100644 --- a/Thermo.Active/Controllers/WebApi/RecipeController.cs +++ b/Thermo.Active/Controllers/WebApi/RecipeController.cs @@ -100,7 +100,7 @@ namespace Thermo.Active.Controllers.WebApi /// Confirm recipe modification (parameters: HMI --> PLC) /// /// - [Route("Confirm"), HttpPut] + [Route("confirm"), HttpPut] public IHttpActionResult ConfirmEdit() { using (NcAdapter ncAdapter = new NcAdapter()) @@ -110,11 +110,17 @@ namespace Thermo.Active.Controllers.WebApi if (libraryError.errorCode != 0) return NotFound(); - // recupero i dati LIVE dei parametri HMI della ricetta... - CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary currRecipe); + // scrivo sul PLC il comando conferma! + CmsError cmsError = ncAdapter.ConfirmRecipeData(true); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); + // recupero i dati LIVE dei parametri HMI della ricetta... + cmsError = ncAdapter.ReadFullRecipe(out Dictionary currRecipe); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); + + // rileggo la ricetta var currParams = new Dictionary(); foreach (var item in currRecipe) { @@ -126,11 +132,6 @@ namespace Thermo.Active.Controllers.WebApi // e salvo su disco ServerConfigController.WriteLiveData(); - // scrivo sul PLC il comando conferma! - cmsError = ncAdapter.ConfirmRecipeData(true); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); - // ritorno solo fatto! return Ok(); } @@ -140,7 +141,7 @@ namespace Thermo.Active.Controllers.WebApi /// Cancel recipe modification (parameters: PLC --> HMI) /// /// - [Route("Cancel"), HttpPut] + [Route("cancel"), HttpPut] public IHttpActionResult CancelEdit() { using (NcAdapter ncAdapter = new NcAdapter()) @@ -150,6 +151,45 @@ namespace Thermo.Active.Controllers.WebApi if (libraryError.errorCode != 0) return NotFound(); + // scrivo sul PLC il comando annula! + CmsError cmsError = ncAdapter.ConfirmRecipeData(false); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); + + // recupero i dati LIVE dei parametri HMI della ricetta... + cmsError = ncAdapter.ReadFullRecipe(out Dictionary currRecipe); + if (cmsError.IsError()) + return BadRequest(cmsError.localizationKey); + + var currParams = new Dictionary(); + foreach (var item in currRecipe) + { + currParams.Add(item.Key, item.Value.SetpointPLC); + } + + // ora salvo ANCHE i dati live... + RecipeLiveData.RecipeParameters = currParams; + // e salvo su disco + ServerConfigController.WriteLiveData(); + + // ritorno solo fatto! + return Ok(); + } + } + + /// + /// Save current recipe from PLC to default + /// + /// + [Route("save"), HttpPut] + public IHttpActionResult Save() + { + using (NcFileAdapter ncAdapter = new NcFileAdapter()) + { + // Try connection + CmsError libraryError = ncAdapter.Connect(); + if (libraryError.errorCode != 0) + return NotFound(); // recupero i dati LIVE dei parametri HMI della ricetta... CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary currRecipe); @@ -167,37 +207,6 @@ namespace Thermo.Active.Controllers.WebApi // e salvo su disco ServerConfigController.WriteLiveData(); - // scrivo sul PLC il comando annula! - cmsError = ncAdapter.ConfirmRecipeData(false); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); - - // ritorno solo fatto! - return Ok(); - } - } - - /// - /// Save current recipe from PLC to default - /// - /// - [Route("Save"), HttpPut] - public IHttpActionResult Save() - { - using (NcFileAdapter ncAdapter = new NcFileAdapter()) - { - // Try connection - CmsError libraryError = ncAdapter.Connect(); - if (libraryError.errorCode != 0) - return NotFound(); - - // serialize current recipe as JSon - - //// scrivo sul PLC il comando annula! - //CmsError cmsError = ncAdapter.ConfirmRecipeData(false); - //if (cmsError.IsError()) - // return BadRequest(cmsError.localizationKey); - // ritorno solo fatto! return Ok(); } @@ -207,7 +216,7 @@ namespace Thermo.Active.Controllers.WebApi /// Save current recipe from PLC with new name /// /// - [Route("SaveAs"), HttpPut] + [Route("saveAs"), HttpPut] public IHttpActionResult SaveAs(string newName) { using (NcFileAdapter ncAdapter = new NcFileAdapter()) @@ -217,11 +226,22 @@ namespace Thermo.Active.Controllers.WebApi if (libraryError.errorCode != 0) return NotFound(); - // scrivo sul PLC il comando annula! - CmsError cmsError = ncAdapter.ConfirmRecipeData(false); + // recupero i dati LIVE dei parametri HMI della ricetta... + CmsError cmsError = ncAdapter.ReadFullRecipe(out Dictionary currRecipe); if (cmsError.IsError()) return BadRequest(cmsError.localizationKey); + var currParams = new Dictionary(); + foreach (var item in currRecipe) + { + currParams.Add(item.Key, item.Value.SetpointPLC); + } + + // ora salvo ANCHE i dati live... + RecipeLiveData.RecipeParameters = currParams; + // e salvo su disco + ServerConfigController.SaveRecipe(newName); + // ritorno solo fatto! return Ok(); } @@ -230,7 +250,7 @@ namespace Thermo.Active.Controllers.WebApi /// load recipe from file and send to PLC /// /// - [Route("Load"), HttpPut] + [Route("load"), HttpPut] public IHttpActionResult Load(string newName) { using (NcFileAdapter ncAdapter = new NcFileAdapter()) @@ -240,10 +260,8 @@ namespace Thermo.Active.Controllers.WebApi if (libraryError.errorCode != 0) return NotFound(); - // scrivo sul PLC il comando annula! - CmsError cmsError = ncAdapter.ConfirmRecipeData(false); - if (cmsError.IsError()) - return BadRequest(cmsError.localizationKey); + // chiamo metodo di lettura... + ServerConfigController.LoadRecipe(newName); // ritorno solo fatto! return Ok();