added product_based configuration in the backend of the monitor

This commit is contained in:
Yinyin Liu 2025-10-20 16:32:47 +02:00
parent bc142201c0
commit e4674b41e5
3 changed files with 53 additions and 20 deletions

View File

@ -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<ActionResult<IEnumerable<Object>>> EditInstallationConfig([FromBody] Configuration config, Int64 installationId,Token authToken)
public async Task<ActionResult<IEnumerable<Object>>> 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();

View File

@ -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

View File

@ -49,4 +49,5 @@ public class Installation : TreeNode
[Ignore]
public String OrderNumbers { get; set; }
public String VrmLink { get; set; } = "";
public string Configuration { get; set; } = "";
}