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 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");
                }
            }
        }
        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");
                }
            }
        }