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