using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using XMLParser; namespace XMLProgramm { class Program { static Dictionary CalculateDay(List inspektionen) { Dictionary result = new Dictionary(); decimal HauptkanalLaenge =0.0m; inspektionen .FindAll(s => s.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Haltung)) .ForEach(g => HauptkanalLaenge += g.Inspektionsdaten.OptischeInspektion.Rohrleitung.Inspektionslaenge); List Anschlussleitungen = inspektionen.FindAll(x => x.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Anschlussleitung)); List SEs = Anschlussleitungen.FindAll(x => x.Stammdaten.Knoten != null && x.Stammdaten.Knoten.Anschlusspunkt != null && x.Stammdaten.Knoten.Anschlusspunkt.Punktkennung.Equals("SE")); List SOs = Anschlussleitungen.FindAll(x => x.Stammdaten.Knoten != null && x.Stammdaten.Knoten.Anschlusspunkt != null && !x.Stammdaten.Knoten.Anschlusspunkt.Punktkennung.Equals("SE")); foreach(KanalObjekt s in SEs) { Anschlussleitungen.Remove(s); } foreach(KanalObjekt s in SOs) { Anschlussleitungen.Remove(s); } SOs.AddRange(Anschlussleitungen); result.Add("StraßenablaufCount",SEs.Count); result.Add("SontigeCount",SOs.Count); decimal SEPauschal = 34.00m * SEs.Count; decimal SOPauschal = 45.00m * SOs.Count; decimal HauptkanalPreis = 1.60m * HauptkanalLaenge; result.Add("StraßenablaufPauschal",SEPauschal); result.Add("SonstigesPauschal",SOPauschal); result.Add("HauptkanalPreis",HauptkanalPreis); decimal SEOverlength = 0.0m; // SE preise foreach(KanalObjekt Strassenablauf in SEs) { decimal length = Strassenablauf.Inspektionsdaten.OptischeInspektion.Rohrleitung.Inspektionslaenge; if(length > 5.0m) { SEOverlength += length - 5.0m; } } decimal SOOverlength = 0.0m; // SO preise foreach(KanalObjekt Sonstige in SOs) { decimal length = Sonstige.Inspektionsdaten.OptischeInspektion.Rohrleitung.Inspektionslaenge; if(length > 7.0m) { SOOverlength += length - 7.0m; } } decimal LeitungOverlength = SEOverlength + SOOverlength; decimal LeitungsOverlengthPreis = LeitungOverlength * 2.4m; result.Add("LeitungÜberlaenge",LeitungOverlength); result.Add("PreisLeitung",LeitungsOverlengthPreis); result.Add("Umsatz",(LeitungsOverlengthPreis + HauptkanalPreis + SEPauschal + SOPauschal)); return result; } static void Main(string[] args) { List objekte = new List(); DirectoryInfo info = new DirectoryInfo("./"); FileInfo[] daten = info.GetFiles("*.xml"); foreach(FileInfo aktuell in daten) { XMLParse ser = new XMLParse(aktuell.FullName); objekte.AddRange(ser.KanalObjekte); } //XMLParse ser = new XMLParse("KS_Oldenburg_Heideweg.xml"); //objekte.AddRange(ser.KanalObjekte); //objekte = objekte.OrderBy(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum); IEnumerable datums = objekte.OrderBy(d => d.Inspektionsdaten.OptischeInspektion.Inspektionstime).Select(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum).Distinct(); decimal gesamt = 0.0m; //Dictionary s = CalculateDay(objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals("05.08.2021"))); foreach(string datum in datums) { Dictionary s = CalculateDay(objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals(datum))); Console.WriteLine("Umsatz am : "+datum + " " + s["Umsatz"]); gesamt +=s["Umsatz"]; //if(datum.Equals("05.08.2021")) Debugger.Break(); } Console.WriteLine("Durchschnitt : "+gesamt / datums.Count()); } } }