protected override List<WiederbeschaffungswertUndWertverlustProBelastungskategoriePo> GetPresentationObjectListForSummarisch(WiederbeschaffungswertUndWertverlustProBelastungskategorieParameter parameter) { var erfassungsPeriod = GetErfassungsPeriod(parameter.ErfassungsPeriodId); var netzSummarischDetailList = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).ToList(); var pos = new List<WiederbeschaffungswertUndWertverlustProBelastungskategoriePo>(); foreach (var belastungskategorie in belastungskategorieService.AlleBelastungskategorie) { var netzSummarischDetail = netzSummarischDetailList.Single(sa => sa.Belastungskategorie.Id == belastungskategorie.Id); var wieder = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, erfassungsPeriod); var wiederbeschaffungswert = netzSummarischDetail.Fahrbahnflaeche * wieder.GesamtflaecheFahrbahn; var zustandqueryable = zustandindexService.GetEntitiesBy(erfassungsPeriod); var zustandabschnitten = filtererFactory.CreateFilterer<Zustandsabschnitt>(parameter).Filter(zustandqueryable).Fetch(za => za.Strassenabschnitt).ThenFetch(za => za.Belastungskategorie).ToList().Cast<ZustandsabschnittBase>().ToList(); var po = new WiederbeschaffungswertUndWertverlustProBelastungskategoriePo { BelastungskategorieTyp = belastungskategorie.Typ, BelastungskategorieBezeichnung = LocalizationService.GetLocalizedBelastungskategorieTyp(belastungskategorie.Typ), GesamtFlaeche = netzSummarischDetail.Fahrbahnflaeche, FlaecheFahrbahn = netzSummarischDetail.Fahrbahnflaeche, Wiederbeschaffungswert = wiederbeschaffungswert, AlterungsbeiwertI = wieder.AlterungsbeiwertI, AlterungsbeiwertII = wieder.AlterungsbeiwertII, WertlustI = wiederbeschaffungswert * wieder.AlterungsbeiwertI / 100, WertlustII = wiederbeschaffungswert * wieder.AlterungsbeiwertII / 100, MittlererZustandindex = netzSummarischDetail.MittlererZustand, }; pos.Add(po); } return pos; }
protected override List <WiederbeschaffungswertUndWertverlustGrafischePo> GetPresentationObjectListForSummarisch(WiederbeschaffungswertUndWertverlustGrafischeParameter parameter) { ErfassungsPeriod erfassungsPeriod = GetErfassungsPeriod(parameter.ErfassungsPeriodId); List <NetzSummarischDetail> netzSummarischDetailes = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).ToList(); var pos = new List <WiederbeschaffungswertUndWertverlustGrafischePo>(); foreach (var belastungskategorie in belastungskategorieService.AlleBelastungskategorie) { var wieder = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, erfassungsPeriod); var netzSummarischDetail = netzSummarischDetailes.Single(nsd => nsd.Belastungskategorie.Id == belastungskategorie.Id); decimal wiederbeschaffungswert = netzSummarischDetail.Fahrbahnflaeche * wieder.FlaecheFahrbahn; pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.Wiederbeschaffungswert, wiederbeschaffungswert)); pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.WertverlustsI, wiederbeschaffungswert * wieder.AlterungsbeiwertI)); pos.Add(CreateWiederbeschaffungswertUndWertverlustGrafischePo(belastungskategorie, reportLocalizationService.WertverlustsII, wiederbeschaffungswert * wieder.AlterungsbeiwertII)); } return(pos); }
private WiederbeschaffungswertUndWertverlustProStrassenabschnittPo CreatePo(StrassenabschnittBase strassenabschnittBase) { var result = CreatePoFromEntityWithCopyingMatchingProperties(strassenabschnittBase); var wider = wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(strassenabschnittBase.Belastungskategorie, strassenabschnittBase.ErfassungsPeriod); result.BelastungskategorieBezeichnung = LocalizationService.GetLocalizedBelastungskategorieTyp(strassenabschnittBase.BelastungskategorieTyp); if (strassenabschnittBase.HasTrottoirInformation) { result.Wiederbeschaffungswert = strassenabschnittBase.FlaecheFahrbahn * wider.FlaecheFahrbahn + wider.FlaecheTrottoir * (strassenabschnittBase.FlaecheTrottoirLinks + strassenabschnittBase.FlaecheTrottoirRechts); } else { result.Wiederbeschaffungswert = strassenabschnittBase.GesamtFlaeche * wider.GesamtflaecheFahrbahn; } result.AlterungsbeiwertI = wider.AlterungsbeiwertI; result.AlterungsbeiwertII = wider.AlterungsbeiwertII; result.StrasseneigentuemerBezeichnung = LocalizationService.GetLocalizedEnum(strassenabschnittBase.Strasseneigentuemer); result.WertlustI = result.Wiederbeschaffungswert * result.AlterungsbeiwertI / 100; result.WertlustII = result.Wiederbeschaffungswert * result.AlterungsbeiwertII / 100; result.TrottoirBezeichnung = LocalizationService.GetLocalizedEnum(strassenabschnittBase.Trottoir); result.FlaecheFahrbahn = Math.Round(result.FlaecheFahrbahn ?? 0); return(result); }
private WiederbeschaffungswertKatalogModel GetWieder(Belastungskategorie belastungskategorie, ErfassungsPeriod closedPeriod) { return(wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(belastungskategorie, closedPeriod)); }
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 }); }
private void CalculatePosForStrassenModus(ErfassungsPeriod erfassungsPeriod, RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeParameter parameter, JahresInterval jahresInterval) { var strassenabschnittList = filtererFactory .CreateFilterer <Strassenabschnitt>(parameter) .Filter(transactionScopeProvider.Queryable <Strassenabschnitt>() .Where(e => e.ErfassungsPeriod == erfassungsPeriod)) .Fetch(sa => sa.Belastungskategorie) .FetchMany(sa => sa.Zustandsabschnitten) .ToList(); var diagramPo = new RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeDiagramPo() { JahrVon = jahresInterval.JahrVon, JahrBis = jahresInterval.JahrBis, WertVerlust = strassenabschnittList.Sum(d => (GetWiederbeschaffungswert(d, wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(d.Belastungskategorie, erfassungsPeriod)) * wiederbeschaffungswertKatalogService.GetWiederbeschaffungswertKatalogModel(d.Belastungskategorie, erfassungsPeriod).AlterungsbeiwertII / 100) / 1000m), MittlererZustandindex = SafeDevide(strassenabschnittList.SelectMany(s => s.Zustandsabschnitten).Sum(d => (d.FlaecheFahrbahn ?? 0) * d.Zustandsindex), strassenabschnittList.SelectMany(s => s.Zustandsabschnitten).Sum(z => z.FlaecheFahrbahn) ?? 0m), RealisierteMassnahmen = (transactionScopeProvider.Queryable <RealisierteMassnahme>().Where(r => r.ErfassungsPeriod == erfassungsPeriod).ToArray().Sum(s => (s.KostenFahrbahn ?? 0) + (s.KostenTrottoirLinks ?? 0) + (s.KostenTrottoirRechts ?? 0))) / 1000m }; EnsureJahrInPoLists(jahresInterval); diagramPos[jahresInterval.JahrBis].Add(diagramPo); CalculateTablePos(jahresInterval, diagramPo); }