private void CalculateTablePos(JahresInterval jahresInterval, RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeDiagramPo diagramPo) { var currentJahr = ErfassungsPeriodService.GetCurrentErfassungsPeriod().Erfassungsjahr.Year; tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = diagramPo.RealisierteMassnahmen, Bezeichnung = reportLocalizationService.RealisiertenMassnahmen, FormatString = FormatStrings.ReportNoDecimalFormat, ColorCode = "#800080", LegendUrl = reportLegendImageService.GetLegendUrl("RM"), SortOrder = 10 }); tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = diagramPo.WertVerlust, Bezeichnung = reportLocalizationService.WV, FormatString = FormatStrings.ReportNoDecimalFormat, ColorCode = "#6495ED", LegendUrl = reportLegendImageService.GetLegendUrl("RWV"), SortOrder = 10 }); tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = diagramPo.MittlererZustandindex, Bezeichnung = reportLocalizationService.MittlererZustandsindex, ColorCode = "#FF0000", FormatString = FormatStrings.ReportShortDecimalFormat, LegendUrl = reportLegendImageService.GetLegendUrl("Mittlerer"), SortOrder = 20 }); }
private void CalculatePosForJahr <T>(ErfassungsPeriod erfassungsPeriod, List <T> entityList, JahresInterval jahresInterval, Func <T, WiederbeschaffungswertKatalogModel, decimal> getWiederBeschaffungswert, Func <T, Belastungskategorie> getBelastungskategorie, Func <T, decimal> getFlaeche) { if (!diagramPos.ContainsKey(jahresInterval.JahrBis)) { diagramPos[jahresInterval.JahrBis] = new List <DiagramPo>(); } if (!tablePos.ContainsKey(jahresInterval.JahrBis)) { tablePos[jahresInterval.JahrBis] = new List <TablePo>(); } var wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos = GetWiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos(jahresInterval); foreach (var netzSummarischDetail in entityList) { var belastungskategorie = getBelastungskategorie(netzSummarischDetail); var wieder = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, erfassungsPeriod); var wiederbeschaffungswert = getWiederBeschaffungswert(netzSummarischDetail, wieder); var diagramPo = wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos[belastungskategorie.Id]; //Note: divided by 1 000 (1000m2) diagramPo.FlaecheFahrbahn += getFlaeche(netzSummarischDetail) / 1000m; //Note: divided by 1 000 000 (Mio. CHF) infro from sample excel diagramPo.WiederBeschaffungsWert += wiederbeschaffungswert / 1000000m; //Note: divided by 1 000 (kCHF) diagramPo.WertVerlust += (wiederbeschaffungswert * wieder.AlterungsbeiwertII / 100) / 1000; } diagramPos[jahresInterval.JahrBis].AddRange(wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos.Values); var currentJahr = ErfassungsPeriodService.GetCurrentErfassungsPeriod().Erfassungsjahr.Year; var wiederbeschaffungswertUndWertverlustProJahrGrafischeTablePos = wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos.Values .Select(po => new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = po.FlaecheFahrbahn, Bezeichnung = po.BelastungskategorieBezeichnung + " " + reportLocalizationService.TausendQuadratMeter, ColorCode = po.ColorCode, LegendUrl = reportLegendImageService.GetLegendUrl(po.BelastungskategorieTyp), SortOrder = belastungskategorieService.AlleBelastungskategorie.IndexOf(belastungskategorieService.AlleBelastungskategorie.Single(bk => bk.Id == po.BelastungskategorieId)) }); tablePos[jahresInterval.JahrBis].AddRange(wiederbeschaffungswertUndWertverlustProJahrGrafischeTablePos); tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos.Values.Sum(po => po.FlaecheFahrbahn), Bezeichnung = reportLocalizationService.GesamtFlaeche, SortOrder = 10 }); tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos.Values.Sum(po => po.WertVerlust), Bezeichnung = reportLocalizationService.WV, ColorCode = "#8b0000", LegendUrl = reportLegendImageService.GetLegendUrl("WV"), SortOrder = 20 }); tablePos[jahresInterval.JahrBis].Add(new TablePo { CurrentJahr = currentJahr, AktualString = LocalizationService.GetLocalizedText("CurrentShort"), JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, Value = wiederbeschaffungswertUndWertverlustProJahrGrafischeDiagramPos.Values.Sum(po => po.WiederBeschaffungsWert), Bezeichnung = reportLocalizationService.WBW, LegendUrl = reportLegendImageService.GetLegendUrl("WBW"), ColorCode = "#cd48ff", SortOrder = 30 }); }