From e4674b41e502dc708aecd3a4b20fa616e34484d6 Mon Sep 17 00:00:00 2001 From: Yinyin Liu Date: Mon, 20 Oct 2025 16:32:47 +0200 Subject: [PATCH] added product_based configuration in the backend of the monitor --- csharp/App/Backend/Controller.cs | 29 ++++++++++--- csharp/App/Backend/DataTypes/Configuration.cs | 43 +++++++++++++------ csharp/App/Backend/DataTypes/Installation.cs | 1 + 3 files changed, 53 insertions(+), 20 deletions(-) diff --git a/csharp/App/Backend/Controller.cs b/csharp/App/Backend/Controller.cs index 04eb6ddd3..4f5496ad7 100644 --- a/csharp/App/Backend/Controller.cs +++ b/csharp/App/Backend/Controller.cs @@ -8,6 +8,7 @@ using InnovEnergy.App.Backend.Relations; using InnovEnergy.App.Backend.Websockets; using InnovEnergy.Lib.Utils; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; namespace InnovEnergy.App.Backend; @@ -935,11 +936,19 @@ public class Controller : ControllerBase [HttpPost(nameof(EditInstallationConfig))] - public async Task>> EditInstallationConfig([FromBody] Configuration config, Int64 installationId,Token authToken) + public async Task>> EditInstallationConfig([FromBody] Configuration config, Int64 installationId,int product,Token authToken) { var session = Db.GetSession(authToken); + + string configString = product switch + { + 0 => config.GetConfigurationSalimax(), // Salimax + 3 => config.GetConfigurationSodistoreMax(), // SodiStoreMax + 2 => config.GetConfigurationSodistoreHome(), // SodiStoreHome + _ => config.GetConfigurationString() // fallback + }; - Console.WriteLine("CONFIG IS " + config.GetConfigurationString()); + Console.WriteLine("CONFIG IS " + configString); //Send configuration changes var success = await session.SendInstallationConfig(installationId, config); @@ -947,17 +956,23 @@ public class Controller : ControllerBase // Record configuration change if (success) { - // Create a new UserAction object + // // Update Configuration colum in Installation table + // var installation = Db.GetInstallationById(installationId); + // + // installation.Configuration = JsonConvert.SerializeObject(config); + // + // if (!installation.Apply(Db.Update)) + // return StatusCode(500, "Failed to update installation configuration in database"); + var action = new UserAction { InstallationId = installationId, Timestamp = DateTime.Now, - Description = config.GetConfigurationString() + Description = configString }; - Console.WriteLine(action.Description); - + var actionSuccess = await session.InsertUserAction(action); - return actionSuccess?Ok():Unauthorized(); + return actionSuccess ? Ok() : StatusCode(500, "Failed to record Configuration changes in History of Action"); } return Unauthorized(); diff --git a/csharp/App/Backend/DataTypes/Configuration.cs b/csharp/App/Backend/DataTypes/Configuration.cs index bc6048fd2..021687777 100644 --- a/csharp/App/Backend/DataTypes/Configuration.cs +++ b/csharp/App/Backend/DataTypes/Configuration.cs @@ -2,19 +2,17 @@ namespace InnovEnergy.App.Backend.DataTypes; public class Configuration { - public Double MinimumSoC { get; set; } - public Double GridSetPoint { get; set; } - public CalibrationChargeType CalibrationChargeState { get; set; } - public DateTime CalibrationChargeDate { get; set; } - public CalibrationChargeType CalibrationDischargeState { get; set; } - public DateTime CalibrationDischargeDate { get; set; } - - //For sodistoreHome installations - - public Double MaximumDischargingCurrent { get; set; } - public Double MaximumChargingCurrent { get; set; } - public Double OperatingPriority { get; set; } - public Double BatteriesCount { get; set; } + public double? MinimumSoC { get; set; } + public double? GridSetPoint { get; set; } + public CalibrationChargeType? CalibrationChargeState { get; set; } + public DateTime? CalibrationChargeDate { get; set; } + public CalibrationChargeType? CalibrationDischargeState { get; set; } + public DateTime? CalibrationDischargeDate { get; set; } + + public double? MaximumDischargingCurrent { get; set; } + public double? MaximumChargingCurrent { get; set; } + public double? OperatingPriority { get; set; } + public double? BatteriesCount { get; set; } public String GetConfigurationString() { @@ -24,6 +22,25 @@ public class Configuration $"BatteriesCount: {BatteriesCount}"; } + + public string GetConfigurationSalimax() + { + return + $"MinimumSoC: {MinimumSoC}, GridSetPoint: {GridSetPoint}, CalibrationChargeState: {CalibrationChargeState}, CalibrationChargeDate: {CalibrationChargeDate}"; + } + + public string GetConfigurationSodistoreMax() + { + return + $"MinimumSoC: {MinimumSoC}, GridSetPoint: {GridSetPoint}, CalibrationChargeState: {CalibrationChargeState}, CalibrationChargeDate: {CalibrationChargeDate}, " + + $"CalibrationDischargeState: {CalibrationDischargeState}, CalibrationDischargeDate: {CalibrationDischargeDate}"; + } + + public string GetConfigurationSodistoreHome() + { + return $"MinimumSoC: {MinimumSoC}, MaximumDischargingCurrent: {MaximumDischargingCurrent}, MaximumChargingCurrent: {MaximumChargingCurrent}, OperatingPriority: {OperatingPriority}" + + $"BatteriesCount: {BatteriesCount}"; + } } public enum CalibrationChargeType diff --git a/csharp/App/Backend/DataTypes/Installation.cs b/csharp/App/Backend/DataTypes/Installation.cs index 9710d81b3..e1e12a436 100644 --- a/csharp/App/Backend/DataTypes/Installation.cs +++ b/csharp/App/Backend/DataTypes/Installation.cs @@ -49,4 +49,5 @@ public class Installation : TreeNode [Ignore] public String OrderNumbers { get; set; } public String VrmLink { get; set; } = ""; + public string Configuration { get; set; } = ""; } \ No newline at end of file