using SewerStammGen.Shared.Domain; using Shared.Contracts; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WWTech_KanalSchnittstelle.Importer { internal enum EKennung { DECKEL = 1, SOHLE = 2 } public class CSVImporter : IImport { private string[] input; private readonly Projekt projekt; #pragma warning disable CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable. public CSVImporter(int projektID) #pragma warning restore CS8618 // Ein Non-Nullable-Feld muss beim Beenden des Konstruktors einen Wert ungleich NULL enthalten. Erwägen Sie die Deklaration als Nullable. { projekt = new Projekt() { Id = projektID }; } public List LoadSchaechte(string filename, EEntwaeserung entwaeserung) { List result = new List(); if(!File.Exists(filename)) { throw new FileNotFoundException(filename); } input = File.ReadAllLines(filename); int zeile = -1; foreach (string line in input) { zeile++; if (zeile == 0) continue; string[] parsed = line.Split(new char[] { ';' }); string objektbezeichnung = parsed[0]; string objektname = objektbezeichnung.Substring(0, objektbezeichnung.Length - 2); EKennung kennung = (EKennung)Convert.ToInt32(objektbezeichnung.Substring(objektbezeichnung.Length - 2, 2)); bool neueSchacht = false; Schacht? schacht = result.FindLast(x => x.Objektbezeichnung.Equals(objektname) && x.Projekt.Id.Equals(projekt.Id)); if (schacht == null) { schacht = new Schacht(); neueSchacht = true; } if(kennung == EKennung.DECKEL) { schacht.DeckelRechtsWert = decimal.Parse(parsed[1].Replace('.', ',')); schacht.DeckelHochWert = decimal.Parse(parsed[2].Replace('.', ',')); schacht.DeckelHoehe = decimal.Parse(parsed[3].Replace('.', ',')); } if(kennung == EKennung.SOHLE) { schacht.SohlRechtsWert = decimal.Parse(parsed[1].Replace('.', ',')); schacht.SohlHochWert = decimal.Parse(parsed[2].Replace('.', ',')); schacht.SohlHoehe = decimal.Parse(parsed[3].Replace('.', ',')); } schacht.Projekt = projekt; schacht.Entwaesserung = entwaeserung; if (neueSchacht) { schacht.Objektbezeichnung = objektname; result.Add(schacht); } } return result; } } }