Code umstrukturierung

Test geschrieben funktioniert mit eichenstraße
This commit is contained in:
HuskyTeufel
2021-08-06 04:19:18 +02:00
parent 9c06402310
commit 6905b152a3
4 changed files with 98 additions and 63 deletions

68
XMLParser/CalculateDay.cs Normal file
View File

@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Linq;
namespace XMLParser
{
public static class Calculate
{
public static Dictionary<string,decimal> CalculateDay(List<KanalObjekt> inspektionen)
{
Dictionary<string,decimal> result = new Dictionary<string, decimal>();
decimal HauptkanalLaenge =0.0m;
inspektionen
.FindAll(s => s.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Haltung))
.ForEach(g => HauptkanalLaenge += g.Inspektionsdaten.OptischeInspektion.Rohrleitung.Inspektionslaenge);
List<KanalObjekt> Anschlussleitungen = inspektionen.FindAll(x => x.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Anschlussleitung));
List<KanalObjekt> SEs = Anschlussleitungen.FindAll(x => x.Stammdaten.Knoten != null && x.Stammdaten.Knoten.Anschlusspunkt != null && x.Stammdaten.Knoten.Anschlusspunkt.Punktkennung.Equals("SE"));
List<KanalObjekt> 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("SonstigeCount",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;
}
}
}

View File

@@ -0,0 +1,27 @@
using System.Diagnostics;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using XMLParser;
namespace XMLParserTest
{
[TestClass]
public class CalculateTest
{
[TestMethod]
public void TestCalculate()
{
List<KanalObjekt> kanalObjekts = new XMLParse("input.xml").KanalObjekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals("20.07.2021"));
Assert.AreEqual(35,kanalObjekts.Count);
var umsatz = Calculate.CalculateDay(kanalObjekts);
Assert.AreEqual(3,umsatz["StraßenablaufCount"]);
Assert.AreEqual(29,umsatz["SonstigeCount"]);
Assert.AreEqual(102.00m,umsatz["StraßenablaufPauschal"]);
Assert.AreEqual(1305.00m,umsatz["SonstigesPauschal"]);
Assert.AreEqual(27.50m,umsatz["LeitungÜberlaenge"]);
}
}
}

View File

@@ -6,7 +6,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace XMLParserTest
{
[TestClass]
public class UnitTest1
public class ParserTest
{
[TestMethod]
public void TestMethod1()

View File

@@ -9,67 +9,7 @@ namespace XMLProgramm
{
class Program
{
static Dictionary<string,decimal> CalculateDay(List<KanalObjekt> inspektionen)
{
Dictionary<string,decimal> result = new Dictionary<string, decimal>();
decimal HauptkanalLaenge =0.0m;
inspektionen
.FindAll(s => s.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Haltung))
.ForEach(g => HauptkanalLaenge += g.Inspektionsdaten.OptischeInspektion.Rohrleitung.Inspektionslaenge);
List<KanalObjekt> Anschlussleitungen = inspektionen.FindAll(x => x.Inspektionsdaten.Anlagentyp.Equals(EAnlagetyp.Anschlussleitung));
List<KanalObjekt> SEs = Anschlussleitungen.FindAll(x => x.Stammdaten.Knoten != null && x.Stammdaten.Knoten.Anschlusspunkt != null && x.Stammdaten.Knoten.Anschlusspunkt.Punktkennung.Equals("SE"));
List<KanalObjekt> 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<KanalObjekt> objekte = new List<KanalObjekt>();
@@ -88,7 +28,7 @@ namespace XMLProgramm
decimal gesamt = 0.0m;
//Dictionary<string,decimal> s = CalculateDay(objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals("05.08.2021")));
foreach(string datum in datums) {
Dictionary<string,decimal> s = CalculateDay(objekte.FindAll(x => x.Inspektionsdaten.OptischeInspektion.Inspektionsdatum.Equals(datum)));
Dictionary<string,decimal> s = Calculate.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();