54 lines
1.8 KiB
C#
54 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using BatteryCostAnalysis.Models;
|
|
|
|
namespace BatteryCostAnalysis.Services
|
|
{
|
|
public class DataLoader
|
|
{
|
|
public static List<EnergyData> LoadAndProcessData(string filePath)
|
|
{
|
|
var energyData = new List<EnergyData>();
|
|
var lines = File.ReadAllLines(filePath).Skip(1); // Skip header
|
|
|
|
foreach (var line in lines)
|
|
{
|
|
var parts = line.Split(';');
|
|
if (parts.Length < 9) continue;
|
|
|
|
var date = DateTime.Parse(parts[0], new CultureInfo("nl-BE"));
|
|
var register = parts[7].Trim();
|
|
var volumeStr = parts[8].Trim();
|
|
var volume = string.IsNullOrEmpty(volumeStr) ? 0 : double.Parse(volumeStr.Replace(",", "."), CultureInfo.InvariantCulture);
|
|
|
|
var existing = energyData.FirstOrDefault(e => e.Date == date);
|
|
if (existing == null)
|
|
{
|
|
existing = new EnergyData { Date = date };
|
|
energyData.Add(existing);
|
|
}
|
|
|
|
switch (register)
|
|
{
|
|
case "Afname Dag":
|
|
existing.DayConsumption = volume;
|
|
break;
|
|
case "Afname Nacht":
|
|
existing.NightConsumption = volume;
|
|
break;
|
|
case "Injectie Dag":
|
|
existing.DayProduction = volume;
|
|
break;
|
|
case "Injectie Nacht":
|
|
existing.NightProduction = volume;
|
|
break;
|
|
}
|
|
}
|
|
|
|
return energyData;
|
|
}
|
|
}
|
|
} |