예제 #1
0
        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);
        }
예제 #4
0
 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);
        }