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)
                                                                              ))
                                                                                                            );
        }
Beispiel #2
0
        protected override void CalculatePos(BenchmarkauswertungZustandskennwertenParameter parameter)
        {
            DateTime jahrDateTime = GetJahrDateTime(parameter.JahrId);

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

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

            var @group = benchmarkingDataService.GetForMandantList(jahrDateTime, aenlicheMandanten).Where(bd => bd.MittleresAlterDerZustandsaufnahmenNetz.HasValue && bd.MittleresAlterDerZustandsaufnahmenNetz >= jahrDateTime.AddYears(-5)).ToList();
            var all    = benchmarkingDataService.GetForAllMandant(jahrDateTime).Where(bd => bd.MittleresAlterDerZustandsaufnahmenNetz.HasValue && bd.MittleresAlterDerZustandsaufnahmenNetz >= jahrDateTime.AddYears(-5)).ToList();

            if (@group.Count < 5)
            {
                return;
            }

            var curentBenchmarkingData = benchmarkingDataService.GetForCurrentMandant(jahrDateTime);
            var current = (curentBenchmarkingData.MittleresAlterDerZustandsaufnahmenNetz.HasValue && curentBenchmarkingData.MittleresAlterDerZustandsaufnahmenNetz >= jahrDateTime.AddYears(-5)) ? curentBenchmarkingData : new BenchmarkingData();
            var l       = reportLocalizationService;

            poListDictionary[BenchmarkauswertungZustandsindexNetzSubReportName] = new List <BenchmarkauswertungZustandskennwertenPo>
            {
                CreateBenchmarkauswertungZustandskennwertenPo(
                    all.Where(bd => bd.ZustandsindexNetz.HasValue).ToList(),
                    @group.Where(bd => bd.ZustandsindexNetz.HasValue).ToList(),
                    current,
                    m => m.ZustandsindexNetz,
                    l.EinheitNichts,
                    d => string.Format("{0:0.00}", d)),
            };
            poListDictionary[BenchmarkauswertungZustandsindexJeBelastungskategorieSubReportName] = new List <BenchmarkauswertungZustandskennwertenPo>
                                                                                                   (
                belastungskategorieService.AlleBelastungskategorie.Select(b =>
                                                                          CreateBenchmarkauswertungZustandskennwertenPo(
                                                                              all.SelectMany(bd => bd.BenchmarkingDataDetails.Where(d => d.Belastungskategorie.Id == b.Id)).Where(bdd => bdd.Zustandsindex.HasValue).ToList(),
                                                                              @group.SelectMany(bd => bd.BenchmarkingDataDetails.Where(d => d.Belastungskategorie.Id == b.Id)).Where(bdd => bdd.Zustandsindex.HasValue).ToList(),
                                                                              current.BenchmarkingDataDetails.SingleOrDefault(d => d.Belastungskategorie.Id == b.Id) ?? new BenchmarkingDataDetail(),
                                                                              bd => bd.Zustandsindex,
                                                                              l.EinheitNichts,
                                                                              d => string.Format("{0:0.00}", d),
                                                                              LocalizationService.GetLocalizedBelastungskategorieTyp(b.Typ, LocalizationType.Short)
                                                                              )
                                                                          )
                                                                                                   );
            poListDictionary[BenchmarkauswertungMittleresAlterDerZustandsaufnahmenNetzSubReportName] = new List <BenchmarkauswertungZustandskennwertenPo>
            {
                new BenchmarkauswertungZustandskennwertenPo(),
                CreateBenchmarkauswertungZustandskennwertenPo(
                    all.Where(bd => bd.MittleresAlterDerZustandsaufnahmenNetz.HasValue).ToList(),
                    @group.Where(bd => bd.MittleresAlterDerZustandsaufnahmenNetz.HasValue).ToList(),
                    current,
                    bd => bd.MittleresAlterDerZustandsaufnahmenNetz.HasValue ? bd.MittleresAlterDerZustandsaufnahmenNetz.Value.Ticks : (decimal?)null,
                    l.EinheitDatum,
                    d => d.HasValue ? DateTime.FromBinary((long)d).ToString("d") : string.Empty),
                new BenchmarkauswertungZustandskennwertenPo(),
            };
        }
        protected override void CalculatePos(BenchmarkauswertungInventarkennwertenParameter parameter)
        {
            DateTime jahrDateTime = GetJahrDateTime(parameter.JahrId);

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

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

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

            poListDictionary[BenchmarkauswertungGesamtlaengeDesStrassenetzesSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
            {
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.GesamtlaengeDesStrassennetzesProSiedlungsflaeche, l.Siedlungsflaeche, l.EinheitLaengeProFlaeche),
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.GesamtlaengeDesStrassennetzesProEinwohner, l.Einwohner, l.EinheitLaengeProEinwohner),
            };
            poListDictionary[BenchmarkauswertungFahrbahnflaecheSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
            {
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.FahrbahnflaecheProSiedlungsflaeche, l.Siedlungsflaeche, l.EinheitFlaecheProFlaeche),
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.FahrbahnflaecheProEinwohner, l.Einwohner, l.EinheitFlaecheProEinwohner),
            };
            poListDictionary[BenchmarkauswertungGesamtstrassenflaecheSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
            {
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.GesamtstrassenflaecheProSiedlungsflaeche, l.Siedlungsflaeche, l.EinheitProzent),
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.GesamtstrassenflaecheProEinwohner, l.Einwohner, l.EinheitFlaecheProEinwohner),
            };
            poListDictionary[BenchmarkauswertungAnteilJeBelastungskategorieSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
                                                                                            (
                belastungskategorieService.AlleBelastungskategorie.Select(b =>
                                                                          CreateBenchmarkauswertungInventarkennwertenPo(
                                                                              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(),
                                                                              current.BenchmarkingDataDetails.SingleOrDefault(d => d.Belastungskategorie.Id == b.Id) ?? new BenchmarkingDataDetail(),
                                                                              s => s.FahrbahnflaecheAnteil, null, l.EinheitProzent, LocalizationService.GetLocalizedBelastungskategorieTyp(b.Typ, LocalizationType.Short)
                                                                              ))
                                                                                            );
            poListDictionary[BenchmarkauswertungWiederbeschaffungswerSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
            {
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.WiederbeschaffungswertProFahrbahn, l.Fahrbahn, l.EinheitKostenProFlaeche),
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.WiederbeschaffungswertProEinwohner, l.Einwohner, l.EinheitKostenProEinwohner),
            };
            poListDictionary[BenchmarkauswertungWertverlustSubReportName] = new List <BenchmarkauswertungInventarkennwertenPo>
            {
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.WertverlustProFahrbahn, l.Fahrbahn, l.EinheitKostenProFlaeche),
                CreateBenchmarkauswertungInventarkennwertenPo(all, @group, current, m => m.WertverlustProEinwohner, l.Einwohner, l.EinheitKostenProEinwohner),
            };
        }