using System.Collections.Generic; using BattSim.Models; namespace BattSim.Services { public class BatterySimulator { public static List SimulateBattery(List data, double batteryCapacity) { var results = new List(); double remainingEnergy = 0; foreach (var day in data) { // Charge battery from production var totalProduction = day.DayProduction + day.NightProduction; var chargedEnergy = System.Math.Min(totalProduction, batteryCapacity); var excessProduction = totalProduction - chargedEnergy; // Use battery for consumption var totalConsumption = day.DayConsumption + day.NightConsumption; var usedEnergy = System.Math.Min(chargedEnergy + remainingEnergy, totalConsumption); var remainingAfterUse = chargedEnergy + remainingEnergy - usedEnergy; // Calculate reduced values var reducedConsumption = System.Math.Min(usedEnergy, totalConsumption); var reducedProduction = totalProduction - chargedEnergy; results.Add(new BatteryDayResult { Date = day.Date, ChargedEnergy = chargedEnergy, UsedEnergy = usedEnergy, RemainingEnergy = remainingAfterUse, ReducedConsumption = reducedConsumption, ReducedProduction = reducedProduction }); remainingEnergy = remainingAfterUse; } return results; } } }