public static ErfassungsPeriod CreateErfassungsPeriod(this NHibernateTestScope scope, int year, NetzErfassungsmodus mode, string mandantName, bool isClosed = true)
        {
            var erfassungsPeriod = new ErfassungsPeriod {
                Erfassungsjahr = new DateTime(year, 01, 01), IsClosed = isClosed, NetzErfassungsmodus = mode, Mandant = scope.GetMandant(mandantName)
            };

            erfassungsPeriod.Id = scope.Save(erfassungsPeriod);
            return(erfassungsPeriod);
        }
        private void InsertTestData()
        {
            using (var scope = new NHibernateTestScope())
            {
                kenngroessen = scope.Save(new KenngroessenFruehererJahre
                {
                    Mandant = scope.GetMandant(TestMandantName),
                    Jahr    = 2004,
                    KostenFuerWerterhaltung        = 50000,
                    KenngroesseFruehereJahrDetails = new[]
                    {
                        new KenngroessenFruehererJahreDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IA"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200, MittlererZustand = 3
                        },
                        new KenngroessenFruehererJahreDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IB"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200, MittlererZustand = 1
                        }
                    }
                });

                ep1 = scope.CreateErfassungsPeriod(2005, NetzErfassungsmodus.Summarisch, TestMandantName);

                ep1.AddEntity(scope, new NetzSummarisch
                {
                    NetzSummarischDetails = new[]
                    {
                        new NetzSummarischDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IA"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200, MittlererZustand = 5
                        },
                        new NetzSummarischDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IB"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200, MittlererZustand = 1
                        }
                    }
                });

                ep1.AddEntity(scope, new RealisierteMassnahmeSummarsich {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Fahrbahnflaeche = 1000, KostenFahrbahn = 30000
                });
                ep1.AddEntity(scope, new RealisierteMassnahmeSummarsich {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Fahrbahnflaeche = 1000, KostenFahrbahn = 10000
                });

                ep1.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep1.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                ep2 = scope.CreateErfassungsPeriod(2006, NetzErfassungsmodus.Tabellarisch, TestMandantName);
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Privat, Laenge = 50, BreiteFahrbahn = 10,
                    Zustandsabschnitten = new [] {
                        new Zustandsabschnitt {
                            Zustandsindex = 3, Laenge = 20, Aufnahmedatum = DateTime.Now
                        },
                        new Zustandsabschnitt {
                            Zustandsindex = 1, Laenge = 30, Aufnahmedatum = DateTime.Now
                        },
                    }
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1,
                    Zustandsabschnitten = new [] {
                        new Zustandsabschnitt {
                            Zustandsindex = 2, Laenge = 20, Aufnahmedatum = DateTime.Now
                        },
                        new Zustandsabschnitt {
                            Zustandsindex = 5, Laenge = 30, Aufnahmedatum = DateTime.Now
                        },
                    }
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Kanton, Laenge = 50, BreiteFahrbahn = 10,
                    Zustandsabschnitten = new [] {
                        new Zustandsabschnitt {
                            Zustandsindex = 1, Laenge = 20, Aufnahmedatum = DateTime.Now
                        },
                        new Zustandsabschnitt {
                            Zustandsindex = 5, Laenge = 30, Aufnahmedatum = DateTime.Now
                        },
                    }
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10,
                    Zustandsabschnitten = new [] {
                        new Zustandsabschnitt {
                            Zustandsindex = 1, Laenge = 20, Aufnahmedatum = DateTime.Now
                        },
                        new Zustandsabschnitt {
                            Zustandsindex = 5, Laenge = 30, Aufnahmedatum = DateTime.Now
                        },
                    }
                });

                ep2.AddEntity(scope, new RealisierteMassnahme {
                    Laenge = 50, BreiteFahrbahn = 10, KostenFahrbahn = 30000
                });
                ep2.AddEntity(scope, new RealisierteMassnahme {
                    Laenge = 50, BreiteFahrbahn = 10, KostenFahrbahn = 10000
                });
                ep2.AddEntity(scope, new RealisierteMassnahme {
                    Laenge = 50, BreiteFahrbahn = 10, BreiteTrottoirLinks = 5, BreiteTrottoirRechts = 5, KostenFahrbahn = 10000
                });

                ep2.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep2.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                ep3 = scope.CreateErfassungsPeriod(2007, NetzErfassungsmodus.Gis, TestMandantName);
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Privat, Laenge = 50, BreiteFahrbahn = 10,
                    Zustandsabschnitten = new HashSet <ZustandsabschnittGIS> {
                        new ZustandsabschnittGIS {
                            Zustandsindex = 1, Laenge = 20, Aufnahmedatum = DateTime.Now
                        },
                        new ZustandsabschnittGIS {
                            Zustandsindex = 1, Laenge = 30, Aufnahmedatum = DateTime.Now
                        },
                    }
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Kanton, Laenge = 50, BreiteFahrbahn = 10
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10
                });

                ep3.AddEntity(scope, new RealisierteMassnahmeGIS {
                    Laenge = 50, BreiteFahrbahn = 10, KostenFahrbahn = 30000
                });
                ep3.AddEntity(scope, new RealisierteMassnahmeGIS {
                    Laenge = 50, BreiteFahrbahn = 10, KostenFahrbahn = 10000
                });
                ep3.AddEntity(scope, new RealisierteMassnahmeGIS {
                    Laenge = 50, BreiteFahrbahn = 10, BreiteTrottoirLinks = 5, BreiteTrottoirRechts = 5, KostenFahrbahn = 10000
                });

                ep3.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep3.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                var ep4 = scope.CreateErfassungsPeriod(2006, NetzErfassungsmodus.Gis, OtherTestMandantName);
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 10
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 50, BreiteFahrbahn = 10
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 50, BreiteFahrbahn = 10
                });

                ep4.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep4.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 40, BreiteFahrbahn = 10
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 20, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 20, BreiteFahrbahn = 10
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 60, BreiteFahrbahn = 10
                });
            }
        }
        private void InsertTestData()
        {
            using (var scope = new NHibernateTestScope())
            {
                kenngroessen = scope.Save(new KenngroessenFruehererJahre
                {
                    Mandant = scope.GetMandant(TestMandantName),
                    Jahr    = 2004,
                    KenngroesseFruehereJahrDetails = new[]
                    {
                        new KenngroessenFruehererJahreDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IA"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200
                        },
                        new KenngroessenFruehererJahreDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IB"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200
                        }
                    }
                });

                ep1 = scope.CreateErfassungsPeriod(2005, NetzErfassungsmodus.Summarisch, TestMandantName);

                ep1.AddEntity(scope, new NetzSummarisch
                {
                    NetzSummarischDetails = new[]
                    {
                        new NetzSummarischDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IA"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200
                        },
                        new NetzSummarischDetail {
                            Belastungskategorie = scope.GetBelastungskategorie("IB"), Fahrbahnflaeche = 1000, Fahrbahnlaenge = 200
                        }
                    }
                });

                ep1.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep1.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                ep2 = scope.CreateErfassungsPeriod(2006, NetzErfassungsmodus.Tabellarisch, TestMandantName);
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Privat, Laenge = 50, BreiteFahrbahn = 10
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Kanton, Laenge = 50, BreiteFahrbahn = 10
                });
                ep2.AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10
                });

                ep2.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep2.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                ep3 = scope.CreateErfassungsPeriod(2007, NetzErfassungsmodus.Gis, TestMandantName);
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Privat, Laenge = 50, BreiteFahrbahn = 10
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Kanton, Laenge = 50, BreiteFahrbahn = 10
                });
                ep3.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Strasseneigentuemer = EigentuemerTyp.Gemeinde, Laenge = 50, BreiteFahrbahn = 10
                });

                ep3.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep3.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                var ep4 = scope.CreateErfassungsPeriod(2006, NetzErfassungsmodus.Gis, OtherTestMandantName);
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 10
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 10, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 50, BreiteFahrbahn = 10
                });
                ep4.AddEntity(scope, new StrassenabschnittGIS {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 50, BreiteFahrbahn = 10
                });

                ep4.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 40, GesamtflaecheFahrbahn = 50, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IA")
                });
                ep4.AddEntity(scope, new WiederbeschaffungswertKatalog {
                    AlterungsbeiwertII = 20, GesamtflaecheFahrbahn = 10, FlaecheFahrbahn = 20, FlaecheTrottoir = 20, Belastungskategorie = scope.GetBelastungskategorie("IB")
                });

                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 40, BreiteFahrbahn = 10
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IA"), Laenge = 50, BreiteFahrbahn = 20, Trottoir = TrottoirTyp.BeideSeiten, BreiteTrottoirLinks = 2, BreiteTrottoirRechts = 1
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 20, BreiteFahrbahn = 10
                });
                GetCurrentErfassungsPeriod(scope).AddEntity(scope, new Strassenabschnitt {
                    Belastungskategorie = scope.GetBelastungskategorie("IB"), Laenge = 60, BreiteFahrbahn = 10
                });
            }
        }