using dcnsanplanung.bewertung.M149_3; using dcnsanplanung.shared.Model; using System.Diagnostics; namespace dcnsanplanung.bewertung { public static class BewM149 { public static Dictionary StartWert = new Dictionary() { {0,400 }, {1,300 }, {2,200 }, {3,100 }, {4,0 }, {5,0 } }; public static float SXj(int sk,float length) { return (5 - sk) * length; } public static Dictionary ObjektKlasse(List schaeden) { Dictionary result = new Dictionary(); result.Add("B", schaeden.Select(x => x.KB).Min()); result.Add("D", schaeden.Select(x => x.KD).Min()); result.Add("S", schaeden.Select(x => x.KS).Min()); return result; } public static void CalculateHaltung(Haltung haltung) { var k = ObjektKlasse(haltung.Kodierungen); foreach (var schaden in haltung.Kodierungen) { schaden.KBj = SXj(schaden.KB, 2.5f); schaden.KDj = SXj(schaden.KD, 2.5f); schaden.KSj = SXj(schaden.KS, 2.5f); } float Haltungslaenge = (float)haltung.Kodierungen.Select(x => x.Entfernung).Max(); float KBSumme = haltung.Kodierungen.Select(x => x.KBj).Sum(); float KSSumme = haltung.Kodierungen.Select(x => x.KSj).Sum(); float KDSumme = haltung.Kodierungen.Select(x => x.KDj).Sum(); float ObjektDSumme = SXj(k["D"],Haltungslaenge); float ObjektSSumme = SXj(k["S"],Haltungslaenge); float ObjektBSumme = SXj(k["B"],Haltungslaenge); float SchadensDichteD = KDSumme / ObjektDSumme; float SchadensDichteS = KSSumme / ObjektSSumme; float SchadensDichteB = KBSumme / ObjektBSumme; float zuschlagD = 50 * SchadensDichteD; float zuschlagS = 50 * SchadensDichteS; float zuschlagB = 50 * SchadensDichteB; int startWertD = StartWert[k["D"]]; int startWertB = StartWert[k["B"]]; int startWertS = StartWert[k["S"]]; int ZustandPunkteD = startWertD + (int)zuschlagD; int ZustandPunkteB = startWertB + (int)zuschlagB; int ZustandPunkteS = startWertS + (int)zuschlagS; } public static Dictionary Klassifiziere(string hauptcode, string ch1, string ch2, string q1, string q2, int dn) { AbstractCode? abstractCode = null; Dictionary result = new Dictionary(); switch(hauptcode) { case "BAA": abstractCode = new BAA(EGeltungsbereich.biegesteif); break; case "BAB": abstractCode = new BAB(); break; case "BAC": abstractCode = new BAC(); break; case "BAD": abstractCode = new BAD(); break; case "BAE": abstractCode = new BAE(); break; case "BAF": abstractCode = new BAF(); break; case "BAG": abstractCode = new BAG(dn); break; case "BAH": abstractCode = new BAH(); break; case "BAI": abstractCode = new BAI(); break; case "BAJ": abstractCode = new BAJ(); break; case "BAK": abstractCode = new BAK(); break; case "BAL": abstractCode = new BAL(); break; case "BAM": abstractCode = new BAM(); break; case "BAN": abstractCode = new BAN(); break; case "BAO": abstractCode = new BAO(); break; case "BAP": abstractCode = new BAP(); break; case "BBA": abstractCode = new BBA(); break; case "BBB": abstractCode = new BBB(); break; case "BBC": abstractCode = new BBC(); break; case "BBD": abstractCode = new BBD(); break; case "BBE": abstractCode = new BBE(); break; case "BBF": abstractCode = new BBF(); break; case "BBG": abstractCode = new BBG(); break; case "BBH": abstractCode = new BBH(); break; case "BDB": abstractCode = new BDB(); break; case "BDE": abstractCode = new BDE(); break; } if (abstractCode == null) return result; abstractCode.WriteCH1(ch1); abstractCode.WriteCH2(ch2); float _q1 = float.Parse(q1); //float _q2 = float.Parse(q2); abstractCode.WriteQ1(_q1); //abstractCode.WriteQ2(_q2); result.Add("D", abstractCode.CalculateDK()); result.Add("B", abstractCode.CalculateBK()); result.Add("S", abstractCode.CalculateSK()); return result; } } }