Пример #1
0
        protected override List <MassnahmenvorschlagProZustandsabschnittPo> GetPresentationObjectListForGis(MassnahmenvorschlagProZustandsabschnittParameter parameter)
        {
            ZustandsabschnittGIS za = null;
            StrassenabschnittGIS sa = null;
            var joinAlias           = transactionScopeProvider.CurrentTransactionScope.Session.QueryOver(() => za).JoinAlias(() => za.StrassenabschnittGIS, () => sa);
            var queryOver           = filtererFactory.CreateFilterer <ZustandsabschnittGIS>(parameter).Filter(joinAlias)
                                      .Where(z => z.MassnahmenvorschlagFahrbahn != null || z.MassnahmenvorschlagTrottoirLinks != null || z.MassnahmenvorschlagTrottoirRechts != null);

            if (ErfassungsPeriodService.GetCurrentErfassungsPeriod().NetzErfassungsmodus == NetzErfassungsmodus.Gis)
            {
                queryOver = massnahmenvorschlagProZustandsabschnittMapProvider.FilterForBoundingBox(queryOver, parameter);
            }

            var fetchedQueryOver = queryOver
                                   .Fetch(z => z.StrassenabschnittGIS).Eager
                                   .Fetch(z => z.MassnahmenvorschlagFahrbahn).Eager
                                   .Fetch(z => z.MassnahmenvorschlagTrottoirLinks).Eager
                                   .Fetch(z => z.MassnahmenvorschlagTrottoirRechts).Eager;

            return(fetchedQueryOver.List <ZustandsabschnittGIS>().Select(CreatePo)
                   .OrderBy(z => z.Strassenname)
                   .ThenBy(z => z.Strassenabschnittsnummer)
                   .ThenBy(z => z.StrasseBezeichnungVon)
                   .ThenBy(z => z.Abschnittsnummer)
                   .ThenBy(z => z.BezeichnungVon)
                   .ToList());
        }
        protected override bool IsForClosedErfassungsPeriod(
            RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeParameter parameter)
        {
            var erfassungsPeriod = ErfassungsPeriodService.GetEntityById(parameter.JahrIdBis);

            return(erfassungsPeriod != null && erfassungsPeriod.IsClosed);
        }
        protected override void CalculatePos(BenchmarkauswertungKennwertenRealisiertenMassnahmenParameter parameter)
        {
            DateTime bezugsJahr = GetJahrDateTime(parameter.JahrId);

            var aenlicheMandanten = benchmarkingGruppenService.GetAenlicheMandanten(bezugsJahr, parameter.BenchmarkingGruppenTypList);

            if (aenlicheMandanten.Count < 5)
            {
                return;
            }

            var currentMandant = securityService.GetCurrentMandant();
            var jahren         = new List <DateTime>();

            jahren.AddRange(ErfassungsPeriodService.GetEntitiesBy(currentMandant).Where(ep => ep.Erfassungsjahr <= bezugsJahr && ep.IsClosed).Select(ep => ep.Erfassungsjahr).ToList());
            jahren.AddRange(kenngroessenFruehererJahreService.GetEntitiesBy(currentMandant).Where(kfj => kfj.Jahr <= bezugsJahr.Year).Select(ep => ep.Jahr).ToList().Select(j => new DateTime(j, 01, 01)));

            jahren = jahren.OrderByDescending(dt => dt).ToList();

            if (jahren.Count > 5)
            {
                jahren = jahren.Take(5).ToList();
            }

            var previousYears = jahren.Select(dateTime => benchmarkingDataService.GetForCurrentMandant(dateTime)).ToList();

            var @group  = benchmarkingDataService.GetForMandantList(bezugsJahr, aenlicheMandanten);
            var all     = benchmarkingDataService.GetForAllMandant(bezugsJahr);
            var current = benchmarkingDataService.GetForCurrentMandant(bezugsJahr);
            var l       = reportLocalizationService;

            poListDictionary[BenchmarkauswertungRealisierteMassnahmenSubReportName] = new List <BenchmarkauswertungKennwertenRealisiertenMassnahmenPo>()
            {
                CreateBenchmarkauswertungKennwertenRealisiertenMassnahmenPo(all, @group, previousYears, current, m => m.RealisierteMassnahmenProFahrbahn, l.RealisierteFlaeche, l.EinheitKostenProFlaeche),
                CreateBenchmarkauswertungKennwertenRealisiertenMassnahmenPo(all, @group, previousYears, current, m => m.RealisierteMassnahmenProEinwohner, l.Einwohner, l.EinheitKostenProEinwohner),
            };
            poListDictionary[BenchmarkauswertungRealisierteMassnahmenProWertverlustSubReportName] = new List <BenchmarkauswertungKennwertenRealisiertenMassnahmenPo>
            {
                new BenchmarkauswertungKennwertenRealisiertenMassnahmenPo(),
                CreateBenchmarkauswertungKennwertenRealisiertenMassnahmenPo(all, @group, previousYears, current, m => m.RealisierteMassnahmenProWertverlustNetz, "", l.EinheitProzent),
                new BenchmarkauswertungKennwertenRealisiertenMassnahmenPo(),
            };
            poListDictionary[BenchmarkauswertungRealisierteMassnahmenProWBWSubReportName] = new List <BenchmarkauswertungKennwertenRealisiertenMassnahmenPo>
            {
                new BenchmarkauswertungKennwertenRealisiertenMassnahmenPo(),
                CreateBenchmarkauswertungKennwertenRealisiertenMassnahmenPo(all, @group, previousYears, current, m => m.RealisierteMassnahmenProWiederbeschaffungswertNetz, "", l.EinheitProzent),
                new BenchmarkauswertungKennwertenRealisiertenMassnahmenPo(),
            };
            poListDictionary[BenchmarkauswertungRealisierteMassnahmenProBelastungskategorieSubReportName] = new List <BenchmarkauswertungKennwertenRealisiertenMassnahmenPo>
                                                                                                            (
                belastungskategorieService.AlleBelastungskategorie.Select(b =>
                                                                          CreateBenchmarkauswertungKennwertenRealisiertenMassnahmenPo(
                                                                              all.SelectMany(m => m.BenchmarkingDataDetails.Where(d => d.Belastungskategorie.Id == b.Id)).ToList(),
                                                                              @group.SelectMany(m => m.BenchmarkingDataDetails.Where(d => d.Belastungskategorie.Id == b.Id)).ToList(),
                                                                              previousYears.SelectMany(m => m.BenchmarkingDataDetails.Where(d => d.Belastungskategorie.Id == b.Id)).ToList(),
                                                                              current.BenchmarkingDataDetails.SingleOrDefault(d => d.Belastungskategorie.Id == b.Id) ?? new BenchmarkingDataDetail(),
                                                                              s => s.RealisierteMassnahmenProWiederbeschaffungswertNetz, null, l.EinheitProzent, LocalizationService.GetLocalizedBelastungskategorieTyp(b.Typ, LocalizationType.Short)
                                                                              ))
                                                                                                            );
        }
Пример #4
0
 protected bool IsCurrentErfassungsPeriod(Guid?erfassungsPeriodId)
 {
     if (erfassungsPeriodId == null)
     {
         return(true);
     }
     return(HistorizationService.GetCurrentErfassungsperiod() == ErfassungsPeriodService.GetEntityById(erfassungsPeriodId.Value));
 }
        private void CalculatePosForErfassungsPeriod <TZustandsabschnittBase, TStrassenabschnittBase>(TZustandsabschnittBase[] zustandsabschnittList, JahresInterval jahresInterval, ErfassungsPeriod erfassungsPeriod)
            where TStrassenabschnittBase : StrassenabschnittBase
            where TZustandsabschnittBase : ZustandsabschnittBase
        {
            var zustandsspiegelProJahrGrafischeDiagramPos = Enum.GetValues(typeof(ZustandsindexTyp))
                                                            .OfType <ZustandsindexTyp>()
                                                            .Where(z => z != ZustandsindexTyp.Unbekannt)
                                                            .Select(z => CreateDiagramPo(z, jahresInterval))
                                                            .ToDictionary(po => po.ZustandsindexTyp, po => po);

            decimal totalUnknowZustandsindexTypFlaeche = 0;

            decimal mittlereZustandsindexWithFlaeche = 0;
            decimal mittlererAufnahmedatumTickMultipliedWithFlaeche = 0;

            foreach (var zustandsabschnitt in zustandsabschnittList)
            {
                var zustandsindexTyp = ZustandsindexCalculator.GetTyp(zustandsabschnitt.Zustandsindex);
                zustandsspiegelProJahrGrafischeDiagramPos[zustandsindexTyp].FlaecheFahrbahn += (zustandsabschnitt.FlaecheFahrbahn ?? 0);
                mittlereZustandsindexWithFlaeche += zustandsabschnitt.Zustandsindex * (zustandsabschnitt.FlaecheFahrbahn ?? 0);

                mittlererAufnahmedatumTickMultipliedWithFlaeche += zustandsabschnitt.Aufnahmedatum.Ticks * (zustandsabschnitt.FlaecheFahrbahn ?? 0);
            }

            var currentJahr = ErfassungsPeriodService.GetCurrentErfassungsPeriod().Erfassungsjahr.Year;

            diagramPos[jahresInterval.JahrBis] = zustandsspiegelProJahrGrafischeDiagramPos.Values.ToList();

            var totalKnownZustandsindexTypFlaeche = zustandsspiegelProJahrGrafischeDiagramPos.Values.Sum(po => po.FlaecheFahrbahn);
            var totalFlaeche = totalKnownZustandsindexTypFlaeche + totalUnknowZustandsindexTypFlaeche;

            var totalStrasseFlaeche = transactionScopeProvider.Queryable <TStrassenabschnittBase>()
                                      .Where(z => z.ErfassungsPeriod == erfassungsPeriod)
                                      .Sum(g => g.Laenge * g.BreiteFahrbahn);

            var zustandsspiegelProJahrGrafischeTablePos = zustandsspiegelProJahrGrafischeDiagramPos.Values
                                                          .Select(po => CreateTablePo(jahresInterval, GetPerzent(po.FlaecheFahrbahn, totalKnownZustandsindexTypFlaeche), FormatHelper.ToReportNoDecimalPercentString, LocalizationService.GetLocalizedEnum(po.ZustandsindexTyp), (int)po.ZustandsindexTyp, currentJahr, po.ZustandsindexTyp));

            tablePos[jahresInterval.JahrBis] = zustandsspiegelProJahrGrafischeTablePos.ToList();

            PercentPartitioningCorrector.Corrigate(tablePos[jahresInterval.JahrBis].Cast <IPercentHolder>().ToList());

            var mittlererAufnahmedatum = (mittlererAufnahmedatumTickMultipliedWithFlaeche == 0 || totalFlaeche == 0) ? (decimal?)null : (decimal.Divide(mittlererAufnahmedatumTickMultipliedWithFlaeche, totalFlaeche));

            tablePos[jahresInterval.JahrBis].Add(CreateTablePo(jahresInterval, mittlererAufnahmedatum, d => FormatHelper.ToReportDateTimeString(d, "-"), reportLocalizationService.MittleresAlterDerZustandsaufnahmen, -10, currentJahr));

            var netzAnteil = GetPerzent(totalKnownZustandsindexTypFlaeche, totalStrasseFlaeche);

            tablePos[jahresInterval.JahrBis].Add(CreateTablePo(jahresInterval, netzAnteil, FormatHelper.ToReportNoDecimalPercentString, reportLocalizationService.NetzAnteil, -20, currentJahr));

            var mittlererZustandsindex = (mittlereZustandsindexWithFlaeche == 0 || totalFlaeche == 0) ? 0 : decimal.Divide(mittlereZustandsindexWithFlaeche, totalFlaeche);

            tablePos[jahresInterval.JahrBis].Add(CreateTablePo(jahresInterval, mittlererZustandsindex, FormatHelper.ToReportDecimalString, reportLocalizationService.MittlererZustandsindex, -30, currentJahr));
        }
Пример #6
0
        protected override List <StrassenabschnitteListePo> GetPresentationObjectListForGis(StrassenabschnitteListeParameter parameter)
        {
            var queryOver = filtererFactory.CreateFilterer <StrassenabschnittGIS>(parameter).Filter(transactionScopeProvider.QueryOver <StrassenabschnittGIS>());

            if (ErfassungsPeriodService.GetCurrentErfassungsPeriod().NetzErfassungsmodus == NetzErfassungsmodus.Gis)
            {
                queryOver = strassenabschnitteListeMapProvider.FilterForBoundingBox(queryOver, parameter);
            }

            return(queryOver.Fetch(s => s.Belastungskategorie).Eager.List <StrassenabschnittGIS>().OrderBy(s => s.Strassenname).Select(CreatePo).ToList());
        }
        private int GetJahr(Guid jahrId)
        {
            var kenngroessenFruehererJahreVon = kenngroessenFruehererJahreService.GetEntityById(jahrId);

            if (kenngroessenFruehererJahreVon != null)
            {
                return(kenngroessenFruehererJahreVon.Jahr);
            }

            return(ErfassungsPeriodService.GetEntityById(jahrId).Erfassungsjahr.Year);;
        }
Пример #8
0
        protected DateTime GetJahrDateTime(Guid jahrId)
        {
            var kenngroessenFruehererJahre = KenngroessenFruehererJahreService.GetEntityById(jahrId);

            if (kenngroessenFruehererJahre != null)
            {
                return(new DateTime(kenngroessenFruehererJahre.Jahr, 01, 01));
            }

            return(ErfassungsPeriodService.GetEntityById(jahrId).Erfassungsjahr);
        }
Пример #9
0
        protected List <TReportPo> CreatePoList(TReportParameter parameter)
        {
            var result = new List <TReportPo>();

            erfassungPeriodVon = ErfassungsPeriodService.GetEntityById(parameter.ErfassungsPeriodIdVon);
            erfassungPeriodBis = ErfassungsPeriodService.GetEntityById(parameter.ErfassungsPeriodIdBis);

            var summarich     = filtererFactory.CreateFilterer <RealisierteMassnahmeSummarsich>(parameter).Filter(transactionScopeProvider.Queryable <RealisierteMassnahmeSummarsich>());
            var strassennamen = filtererFactory.CreateFilterer <RealisierteMassnahme>(parameter).Filter(transactionScopeProvider.Queryable <RealisierteMassnahme>());
            var gis           = filtererFactory.CreateFilterer <RealisierteMassnahmeGIS>(parameter).Filter(transactionScopeProvider.Queryable <RealisierteMassnahmeGIS>());

            DateTime jahrVon = erfassungPeriodVon.Erfassungsjahr;
            DateTime jahrBis = erfassungPeriodBis.Erfassungsjahr;

            if (!erfassungPeriodBis.IsClosed)
            {
                DateTime notCurrentYear = jahrBis.AddYears(-1);
                result.AddRange(CreatePoListFromRealisierteMassnahmeSummarsich(FilterByErfassungsPeriodVonBis(summarich, jahrVon, notCurrentYear)));
                result.AddRange(CreatePoListFromRealisierteMassnahme(FilterByErfassungsPeriodVonBis(strassennamen, jahrVon, notCurrentYear)));
                result.AddRange(CreatePoFromRealisierteMassnahmeGIS(FilterByErfassungsPeriodVonBis(gis, jahrVon, notCurrentYear)));
                switch (erfassungPeriodBis.NetzErfassungsmodus)
                {
                case NetzErfassungsmodus.Summarisch:
                    result.AddRange(CreatePoListFromRealisierteMassnahmeSummarsich(summarich.Where(s => s.ErfassungsPeriod.Id == erfassungPeriodBis.Id)));
                    break;

                case NetzErfassungsmodus.Tabellarisch:
                    result.AddRange(CreatePoListFromRealisierteMassnahme(strassennamen.Where(s => s.ErfassungsPeriod.Id == erfassungPeriodBis.Id)));
                    break;

                case NetzErfassungsmodus.Gis:
                    result.AddRange(CreatePoFromRealisierteMassnahmeGIS(gis.Where(s => s.ErfassungsPeriod.Id == erfassungPeriodBis.Id)));
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                result.AddRange(CreatePoListFromRealisierteMassnahmeSummarsich(FilterByErfassungsPeriodVonBis(summarich, jahrVon, jahrBis)));
                result.AddRange(CreatePoListFromRealisierteMassnahme(FilterByErfassungsPeriodVonBis(strassennamen, jahrVon, jahrBis)));
                result.AddRange(CreatePoFromRealisierteMassnahmeGIS(FilterByErfassungsPeriodVonBis(gis, jahrVon, jahrBis)));
            }
            result = result.OrderByDescending(r => r.AusfuehrungsEnde).ThenBy(r => r.Projektname).ToList();

            return(result);
        }
        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
            });
        }
        protected NetzErfassungsmodus GetNetzErfassungsmodus(TReportParameter parameter)
        {
            NetzErfassungsmodus erfassungsmodus;

            if (parameter.ErfassungsPeriodId.HasValue)
            {
                erfassungsmodus = ErfassungsPeriodService.GetEntityById(parameter.ErfassungsPeriodId.Value).NetzErfassungsmodus;
            }
            else
            {
                var currentErfassungsPeriod = ErfassungsPeriodService.GetCurrentErfassungsPeriod();
                erfassungsmodus = currentErfassungsPeriod.NetzErfassungsmodus;
                parameter.ErfassungsPeriodId = parameter.ErfassungsPeriodId ?? currentErfassungsPeriod.Id;
            }

            return(erfassungsmodus);
        }
Пример #12
0
        protected override List <ZustandProZustandsabschnittPo> GetPresentationObjectListForGis(ZustandProZustandsabschnittParameter parameter)
        {
            ZustandsabschnittGIS za = null;
            StrassenabschnittGIS sa = null;
            var joinAlias           = transactionScopeProvider.CurrentTransactionScope.Session.QueryOver(() => za).JoinAlias(() => za.StrassenabschnittGIS, () => sa);
            var queryOver           = filtererFactory.CreateFilterer <ZustandsabschnittGIS>(parameter).Filter(joinAlias);

            if (ErfassungsPeriodService.GetCurrentErfassungsPeriod().NetzErfassungsmodus == NetzErfassungsmodus.Gis)
            {
                queryOver = zustandProZustandsabschnittMapProvider.FilterForBoundingBox(queryOver, parameter);
            }

            return(queryOver.Fetch(z => z.StrassenabschnittGIS).Eager.Fetch(z => z.StrassenabschnittGIS.Belastungskategorie).Eager.List <ZustandsabschnittGIS>().Select(CreatePo)
                   .OrderBy(z => z.Strassenname)
                   .ThenBy(z => z.Strassenabschnittsnummer)
                   .ThenBy(z => z.StrasseBezeichnungVon)
                   .ThenBy(z => z.Abschnittsnummer)
                   .ThenBy(z => z.BezeichnungVon)
                   .ToList());
        }
        private void CalculatePos(Parameter parameter)
        {
            List <ErfassungsPeriod> erfassungsPeriodList = ErfassungsPeriodService.GetErfassungsPeriods(parameter.ErfassungsPeriodIdVon, parameter.ErfassungsPeriodIdBis).ToList();

            for (int i = 0; i < erfassungsPeriodList.Count; i++)
            {
                var erfassungsPeriod = erfassungsPeriodList[i];

                var jahresInterval = jahresIntervalService.CalculateFromErfassungsPeriodList(erfassungsPeriod, erfassungsPeriodList);

                switch (erfassungsPeriod.NetzErfassungsmodus)
                {
                case NetzErfassungsmodus.Summarisch:
                    continue;

                case NetzErfassungsmodus.Tabellarisch:

                    var zustandsabschnittList = filtererFactory
                                                .CreateFilterer <Zustandsabschnitt>(parameter)
                                                .Filter(transactionScopeProvider.Queryable <Zustandsabschnitt>().Where(za => za.Strassenabschnitt.ErfassungsPeriod == erfassungsPeriod))
                                                .Fetch(s => s.Strassenabschnitt)
                                                .ToArray();
                    CalculatePosForErfassungsPeriod <Zustandsabschnitt, Strassenabschnitt>(zustandsabschnittList, jahresInterval, erfassungsPeriod);
                    break;

                case NetzErfassungsmodus.Gis:
                    var zustandsabschnittGisList = filtererFactory
                                                   .CreateFilterer <ZustandsabschnittGIS>(parameter)
                                                   .Filter(transactionScopeProvider.Queryable <ZustandsabschnittGIS>().Where(za => za.StrassenabschnittGIS.ErfassungsPeriod == erfassungsPeriod))
                                                   .Fetch(s => s.StrassenabschnittGIS)
                                                   .ToArray();
                    CalculatePosForErfassungsPeriod <ZustandsabschnittGIS, StrassenabschnittGIS>(zustandsabschnittGisList, jahresInterval, erfassungsPeriod);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("NetzErfassungsmodus");
                }
            }
        }
        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 CalculatePos(Parameter parameter)
        {
            int jahrVon = GetJahr(parameter.JahrIdVon);
            int jahrBis = GetJahr(parameter.JahrIdBis);

            var kenngroessenFruehererJahreList = kenngroessenFruehererJahreService.GetKenngroessenFruehererJahren(jahrVon, jahrBis);
            var erfassungsPeriodList           = ErfassungsPeriodService.GetErfassungsPeriods(jahrVon, jahrBis);

            //If there is a Filter for not supported Field, Skip year
            if (parameter.Eigentuemer == null)
            {
                for (int i = 0; i < kenngroessenFruehererJahreList.Count; i++)
                {
                    var kenngroessenFruehererJahre = kenngroessenFruehererJahreList[i];

                    int erfassungsJahrVon = kenngroessenFruehererJahre.Jahr;
                    int erfassungsJahrBis;

                    if (kenngroessenFruehererJahre == kenngroessenFruehererJahreList.Last())
                    {
                        erfassungsJahrBis = erfassungsPeriodList.Any() ? erfassungsPeriodList.First().Erfassungsjahr.Year - 1 : erfassungsJahrVon;
                    }
                    else
                    {
                        erfassungsJahrBis = kenngroessenFruehererJahreList[i + 1].Jahr - 1;
                    }

                    CalculatePosForKenngroessenFruehererJahre(ErfassungsPeriodService.GetCurrentErfassungsPeriod(), kenngroessenFruehererJahre, new JahresInterval(erfassungsJahrVon, erfassungsJahrBis));
                }
            }

            for (int i = 0; i < erfassungsPeriodList.Count; i++)
            {
                var erfassungsPeriod = erfassungsPeriodList[i];
                var jahresInterval   = jahresIntervalService.CalculateFromErfassungsPeriodList(erfassungsPeriod, erfassungsPeriodList);

                switch (erfassungsPeriod.NetzErfassungsmodus)
                {
                case NetzErfassungsmodus.Summarisch:
                    //If there is a Filter for not supported Field, Skip year
                    if (parameter.Eigentuemer != null)
                    {
                        continue;
                    }

                    var netzSummarischDetailList = netzSummarischDetailService.GetEntitiesBy(erfassungsPeriod).Fetch(nsd => nsd.Belastungskategorie).ToList();
                    CalculatePosForSummarischeModus(erfassungsPeriod, netzSummarischDetailList, jahresInterval);
                    break;

                case NetzErfassungsmodus.Tabellarisch:
                    var strassenabschnittList = transactionScopeProvider.Queryable <Strassenabschnitt>().Where(sa => sa.ErfassungsPeriod == erfassungsPeriod);
                    CalculatePosForStrassenModus(erfassungsPeriod, strassenabschnittList, parameter, jahresInterval);
                    break;

                case NetzErfassungsmodus.Gis:
                    var strassenabschnittGisList = transactionScopeProvider.Queryable <StrassenabschnittGIS>().Where(sa => sa.ErfassungsPeriod == erfassungsPeriod);
                    CalculatePosForStrassenModus(erfassungsPeriod, strassenabschnittGisList, parameter, jahresInterval);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("NetzErfassungsmodus");
                }
            }
        }
Пример #16
0
        protected override bool IsForClosedErfassungsPeriod(TReportParameter parameter)
        {
            var erfassungsPeriod = ErfassungsPeriodService.GetEntityById(parameter.JahrId);

            return(erfassungsPeriod != null && erfassungsPeriod.IsClosed);
        }
 protected override bool IsForClosedErfassungsPeriod(Parameter parameter)
 {
     return(ErfassungsPeriodService.GetEntityById(parameter.ErfassungsPeriodIdBis).IsClosed);
 }
        private void CalculatePos(RealisiertenMassnahmenWertverlustZustandsindexProJahrGrafischeParameter parameter)
        {
            int jahrVon = GetJahr(parameter.JahrIdVon);
            int jahrBis = GetJahr(parameter.JahrIdBis);

            var kenngroessenFruehererJahreList =
                kenngroessenFruehererJahreService.GetKenngroessenFruehererJahren(jahrVon, jahrBis);
            var erfassungsPeriodList = ErfassungsPeriodService.GetErfassungsPeriods(jahrVon, jahrBis);

            //If there is a Filter for not supported Field, Skip year
            if (parameter.Eigentuemer == null)
            {
                for (int i = 0; i < kenngroessenFruehererJahreList.Count; i++)
                {
                    var kenngroessenFruehererJahre = kenngroessenFruehererJahreList[i];

                    int erfassungsJahrVon = kenngroessenFruehererJahre.Jahr;
                    int erfassungsJahrBis;

                    if (kenngroessenFruehererJahre == kenngroessenFruehererJahreList.Last())
                    {
                        erfassungsJahrBis = erfassungsPeriodList.Any()
                                                ? erfassungsPeriodList.First().Erfassungsjahr.Year - 1
                                                : erfassungsJahrVon;
                    }
                    else
                    {
                        erfassungsJahrBis = kenngroessenFruehererJahreList[i + 1].Jahr - 1;
                    }
                    CalculatePosForKenngroessenFruehererJahre(ErfassungsPeriodService.GetCurrentErfassungsPeriod(),
                                                              kenngroessenFruehererJahre, new JahresInterval(erfassungsJahrVon, erfassungsJahrBis));
                }
            }

            for (int i = 0; i < erfassungsPeriodList.Count; i++)
            {
                var erfassungsPeriod = erfassungsPeriodList[i];
                var jahresInterval   = jahresIntervalService.CalculateFromErfassungsPeriodList(erfassungsPeriod, erfassungsPeriodList);
                switch (erfassungsPeriod.NetzErfassungsmodus)
                {
                case NetzErfassungsmodus.Summarisch:
                    //If there is a Filter for not supported Field, Skip year
                    if (parameter.Eigentuemer != null)
                    {
                        continue;
                    }
                    CalculatePosForSummarischeModus(erfassungsPeriod, jahresInterval);
                    break;

                case NetzErfassungsmodus.Tabellarisch:
                    CalculatePosForStrassenModus(erfassungsPeriod, parameter, jahresInterval);
                    break;

                case NetzErfassungsmodus.Gis:
                    CalculatePosForStrassenModusGIS(erfassungsPeriod, parameter, jahresInterval);
                    break;

                default:
                    throw new ArgumentOutOfRangeException("NetzErfassungsmodus");
                }
            }
        }