public void UpdateZustandsabschnittTrottoirModel(ZustandsabschnittdetailsTrottoirModel zustandsabschnittdetailsTrottoirModel)
        {
            //TODO: Use refleaction traslator
            ZustandsabschnittBase zustandsabschnittBase = GetZustandsabschnittBase(zustandsabschnittdetailsTrottoirModel.Id);

            zustandsabschnittBase.ZustandsindexTrottoirLinks = zustandsabschnittdetailsTrottoirModel.LinkeTrottoirZustandsindex;

            zustandsabschnittBase.MassnahmenvorschlagTrottoirLinks = zustandsabschnittdetailsTrottoirModel.LinkeTrottoirMassnahmenvorschlagKatalogId == null
                                                       ? null
                                                       : transactionScopeProvider.GetById <MassnahmenvorschlagKatalog>(zustandsabschnittdetailsTrottoirModel.LinkeTrottoirMassnahmenvorschlagKatalogId.Value);
            zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirLinks = zustandsabschnittdetailsTrottoirModel.LinkeTrottoirKosten;
            zustandsabschnittBase.DringlichkeitTrottoirLinks             = zustandsabschnittdetailsTrottoirModel.LinkeTrottoirDringlichkeit;


            zustandsabschnittBase.ZustandsindexTrottoirRechts = zustandsabschnittdetailsTrottoirModel.RechteTrottoirZustandsindex;

            zustandsabschnittBase.MassnahmenvorschlagTrottoirRechts = zustandsabschnittdetailsTrottoirModel.RechteTrottoirMassnahmenvorschlagKatalogId == null
                                                        ? null
                                                        : transactionScopeProvider.GetById <MassnahmenvorschlagKatalog>(zustandsabschnittdetailsTrottoirModel.RechteTrottoirMassnahmenvorschlagKatalogId.Value);
            zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirRechts = zustandsabschnittdetailsTrottoirModel.RechteTrottoirKosten;
            zustandsabschnittBase.DringlichkeitTrottoirRechts             = zustandsabschnittdetailsTrottoirModel.RechteTrottoirDringlichkeit;

            //Update back the Kosten and GesamtKosten calculated field
            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirGesamtKosten  = zustandsabschnittBase.KostenTrottoirLinks;
            zustandsabschnittdetailsTrottoirModel.RechteTrottoirGesamtKosten = zustandsabschnittBase.KostenTrottoirRechts;
            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirKosten        = GetKosten(zustandsabschnittBase.MassnahmenvorschlagTrottoirLinks, zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirLinks);
            zustandsabschnittdetailsTrottoirModel.RechteTrottoirKosten       = GetKosten(zustandsabschnittBase.MassnahmenvorschlagTrottoirRechts, zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirRechts);

            UpdateZustandsabschnittBase(zustandsabschnittBase);
        }
Пример #2
0
 public void ResetZustandsabschnittdetails(ZustandsabschnittBase zustandsabschnittBase)
 {
     zustandsabschnittBase.Zustandsindex   = 0.0m;
     zustandsabschnittBase.Erfassungsmodus = ZustandsErfassungsmodus.Manuel;
     DeleteSchadenData(zustandsabschnittBase);
     UpdateZustandsabschnittBase(zustandsabschnittBase);
 }
 protected override void UpdateZustandsabschnittBase(ZustandsabschnittBase zustandsabschnittBase)
 {
     if (((ZustandsabschnittGIS)zustandsabschnittBase).IsLocked)
     {
         throw new InvalidOperationException("ZustandsabschnittGIS is locked.");
     }
     transactionScopeProvider.Update((ZustandsabschnittGIS)zustandsabschnittBase);
 }
 public void CopyMassnahmenvorschlagen(ZustandsabschnittBase copiedZustandsabschnitt, ZustandsabschnittBase zustandsabschnittToCopy)
 {
     if (zustandsabschnittToCopy.MassnahmenvorschlagFahrbahn != null)
     {
         copiedZustandsabschnitt.MassnahmenvorschlagFahrbahn = katalogCopyService.GetKatalogCopy <MassnahmenvorschlagKatalog>(zustandsabschnittToCopy.MassnahmenvorschlagFahrbahn.Id);
     }
     if (zustandsabschnittToCopy.MassnahmenvorschlagTrottoirLinks != null)
     {
         copiedZustandsabschnitt.MassnahmenvorschlagTrottoirLinks = katalogCopyService.GetKatalogCopy <MassnahmenvorschlagKatalog>(zustandsabschnittToCopy.MassnahmenvorschlagTrottoirLinks.Id);
     }
     if (zustandsabschnittToCopy.MassnahmenvorschlagTrottoirRechts != null)
     {
         copiedZustandsabschnitt.MassnahmenvorschlagTrottoirRechts = katalogCopyService.GetKatalogCopy <MassnahmenvorschlagKatalog>(zustandsabschnittToCopy.MassnahmenvorschlagTrottoirRechts.Id);
     }
 }
Пример #5
0
        private AusgefuellteErfassungsformulareFuerOberflaechenschaedenPo CreatePo(ZustandsabschnittBase za, SchadengruppeMetadaten sgm, SchadendetailMetadaten sdm)
        {
            Schadendetail schadendetail = za.Schadendetails.SingleOrDefault(sd => sd.SchadendetailTyp == sdm.SchadendetailTyp);

            return(new AusgefuellteErfassungsformulareFuerOberflaechenschaedenPo
            {
                StrassenabschnittId = za.StrassenabschnittBase.Id,
                ZustandsabschnittId = za.Id,

                Strassenname = za.StrassenabschnittBase.Strassenname,
                ZustandsabschnittBezeichnungVon = za.BezeichnungVon,
                ZustandsabschnittBezeichnungBis = za.BezeichnungBis,

                Laenge = za.Laenge,
                FlaecheFahrbahn = za.StrassenabschnittBase.FlaecheFahrbahn,
                AufnahmeDatum = za.Aufnahmedatum,
                Aufnahmeteam = za.Aufnahmeteam,
                Wetter = za.Wetter,
                WetterBezeichnung = LocalizationService.GetLocalizedEnum(za.Wetter),
                Bemerkung = za.Bemerkung,

                SchadengruppeTyp = sgm.SchadengruppeTyp,
                SchadengruppeBezeichnung = localizationService.GetLocalizedEnum(sgm.SchadengruppeTyp),
                SchadengruppeReihung = sgm.Reihung,

                SchadendetailTyp = sdm.SchadendetailTyp,
                SchadendetailBezeichnung = localizationService.GetLocalizedEnum(sdm.SchadendetailTyp),
                SchadendetailReihung = sdm.Reihung,

                Gewicht = sgm.Gewicht,
                Bewertung = GetMatrix(schadendetail) * sgm.Gewicht,
                Matrix = GetMatrix(schadendetail),

                SchadenschwereS1 = GetSchadenschwere(schadendetail, SchadenschwereTyp.S1),
                SchadenschwereS2 = GetSchadenschwere(schadendetail, SchadenschwereTyp.S2),
                SchadenschwereS3 = GetSchadenschwere(schadendetail, SchadenschwereTyp.S3),

                SchadenausmassA0 = GetSchadenausmass(schadendetail, SchadenausmassTyp.A0),
                SchadenausmassA1 = GetSchadenausmass(schadendetail, SchadenausmassTyp.A1),
                SchadenausmassA2 = GetSchadenausmass(schadendetail, SchadenausmassTyp.A2),
                SchadenausmassA3 = GetSchadenausmass(schadendetail, SchadenausmassTyp.A3)
            });
        }
Пример #6
0
        private ZustandProZustandsabschnittPo CreatePo(ZustandsabschnittBase zustandsabschnittBase)
        {
            var result = CreatePoFromEntityWithCopyingMatchingProperties(zustandsabschnittBase);

            result.Strassenabschnittsnummer = zustandsabschnittBase.StrassenabschnittBase.Abschnittsnummer;
            result.StrasseBezeichnungVon    = zustandsabschnittBase.StrassenabschnittBase.BezeichnungVon;
            result.StrasseBezeichnungBis    = zustandsabschnittBase.StrassenabschnittBase.BezeichnungBis;
            result.Ortsbezeichnung          = zustandsabschnittBase.StrassenabschnittBase.Ortsbezeichnung;
            result.BemerkungShort           =
                zustandsabschnittBase.Bemerkung.TrimToMaxLength(serverConfigurationProvider.BemerkungMaxDisplayLength);

            result.BelagBezeichnung = LocalizationService.GetLocalizedEnum(zustandsabschnittBase.StrassenabschnittBase.Belag, LocalizationType.Short);
            result.BelastungskategorieBezeichnung         = LocalizationService.GetLocalizedBelastungskategorieTyp(result.BelastungskategorieTyp);
            result.StrasseneigentuemerBezeichnung         = LocalizationService.GetLocalizedEnum(zustandsabschnittBase.StrassenabschnittBase.Strasseneigentuemer);
            result.ZustandsindexTrottoirLinksBezeichnung  = LocalizationService.GetLocalizedEnum(result.ZustandsindexTrottoirLinks);
            result.ZustandsindexTrottoirRechtsBezeichnung = LocalizationService.GetLocalizedEnum(result.ZustandsindexTrottoirRechts);

            return(result);
        }
Пример #7
0
        private ZustandsabschnittdetailsModel CreateZustandsabschnittdetailsModel(ZustandsabschnittBase zustandsabschnittBase, ZustandsErfassungsmodus zustandsErfassungsmodus)
        {
            var zustandsabschnittdetailsModel = new ZustandsabschnittdetailsModel
            {
                Id = zustandsabschnittBase.Id,
                Erfassungsmodus            = zustandsErfassungsmodus,
                Strassenname               = zustandsabschnittBase.Strassenname,
                BelastungskategorieTyp     = zustandsabschnittBase.BelastungskategorieTyp,
                BezeichnungVon             = zustandsabschnittBase.BezeichnungVon,
                BezeichnungBis             = zustandsabschnittBase.BezeichnungBis,
                Zustandsindex              = zustandsabschnittBase.Zustandsindex,
                SchadengruppeModelList     = new List <SchadengruppeModel>(),
                Dringlichkeit              = zustandsabschnittBase.Dringlichkeit,
                MassnahmenvorschlagKatalog = zustandsabschnittBase.MassnahmenvorschlagKatalogId,
                KostenFahrbahn             = zustandsabschnittBase.KostenFahrbahn,
                IsLocked = (zustandsabschnittBase is ZustandsabschnittGIS) && ((ZustandsabschnittGIS)zustandsabschnittBase).IsLocked,
                Belag    = zustandsabschnittBase.Belag,
            };

            if (zustandsabschnittBase.Erfassungsmodus == zustandsErfassungsmodus)
            {
                zustandsabschnittdetailsModel.IsDetailInitializiert = zustandsErfassungsmodus == ZustandsErfassungsmodus.Detail;
                zustandsabschnittdetailsModel.IsGrobInitializiert   = zustandsErfassungsmodus == ZustandsErfassungsmodus.Grob;
            }
            else
            {
                zustandsabschnittdetailsModel.IsDetailInitializiert = false;
                zustandsabschnittdetailsModel.IsGrobInitializiert   = false;
            }

            zustandsabschnittdetailsModel.Kosten = GetKosten(zustandsabschnittBase.MassnahmenvorschlagFahrbahn, zustandsabschnittBase.Kosten);

            if (zustandsErfassungsmodus != ZustandsErfassungsmodus.Manuel)
            {
                zustandsabschnittdetailsModel.SchadengruppeModelList = schadenMetadatenService
                                                                       .GetSchadengruppeMetadaten(zustandsabschnittBase.StrassenabschnittBase.Belag)
                                                                       .Select(s => CreateSchadengruppeModel(s, zustandsabschnittBase, zustandsErfassungsmodus))
                                                                       .ToList();
            }

            return(zustandsabschnittdetailsModel);
        }
Пример #8
0
        public void UpdateFahrbahnZustand(FahrBahnZustandDTO zustand)
        {
            ZustandsabschnittBase zustandsabschnittBase = zustandsabschnittGISDTOService.GetZustandsabschnittById(zustand.ZustandsAbschnitt);

            DeleteSchadenData(zustandsabschnittBase);
            switch (zustand.Erfassungsmodus)
            {
            case ZustandsErfassungsmodus.Manuel:

                break;

            case ZustandsErfassungsmodus.Grob:
                GetSchadengruppen(zustand.Schadengruppen).ForEach(zustandsabschnittBase.AddSchadengruppe);
                break;

            case ZustandsErfassungsmodus.Detail:
                CreateSchadendetails(zustand.Schadendetails).ForEach(zustandsabschnittBase.AddSchadendetail);
                break;
            }
            zustandsabschnittBase.Erfassungsmodus = zustand.Erfassungsmodus;
            zustandsabschnittBase.Zustandsindex   = zustand.Zustandsindex;
            transactionScopeProvider.Update((ZustandsabschnittGIS)zustandsabschnittBase);
        }
Пример #9
0
        private MassnahmenvorschlagProZustandsabschnittPo CreatePo(ZustandsabschnittBase zustandsabschnittBase)
        {
            var result = CreatePoFromEntityWithCopyingMatchingProperties(zustandsabschnittBase);

            result.Strassenabschnittsnummer = zustandsabschnittBase.StrassenabschnittBase.Abschnittsnummer;
            result.StrasseBezeichnungVon    = zustandsabschnittBase.StrassenabschnittBase.BezeichnungVon;
            result.StrasseBezeichnungBis    = zustandsabschnittBase.StrassenabschnittBase.BezeichnungBis;
            result.Ortsbezeichnung          = zustandsabschnittBase.StrassenabschnittBase.Ortsbezeichnung;
            result.BemerkungShort           = zustandsabschnittBase.Bemerkung.TrimToMaxLength(serverConfigurationProvider.BemerkungMaxDisplayLength);

            result.StrasseneigentuemerBezeichnung         = LocalizationService.GetLocalizedEnum(zustandsabschnittBase.StrassenabschnittBase.Strasseneigentuemer);
            result.ZustandsindexTrottoirLinksBezeichnung  = LocalizationService.GetLocalizedEnum(result.ZustandsindexTrottoirLinks);
            result.ZustandsindexTrottoirRechtsBezeichnung = LocalizationService.GetLocalizedEnum(result.ZustandsindexTrottoirRechts);

            result.DringlichkeitFahrbahnBezeichnung       = LocalizationService.GetLocalizedEnum(result.DringlichkeitFahrbahn);
            result.DringlichkeitTrottoirLinksBezeichnung  = LocalizationService.GetLocalizedEnum(result.DringlichkeitTrottoirLinks);
            result.DringlichkeitTrottoirRechtsBezeichnung = LocalizationService.GetLocalizedEnum(result.DringlichkeitTrottoirRechts);

            result.MassnahmenvorschlagKatalogTypFahrbahnBezeichnung       = result.MassnahmenvorschlagKatalogTypFahrbahn.HasText() ? LocalizationService.GetLocalizedMassnahmenvorschlagTyp(result.MassnahmenvorschlagKatalogTypFahrbahn) : null;
            result.MassnahmenvorschlagKatalogTypTrottoirLinksBezeichnung  = result.MassnahmenvorschlagKatalogTypTrottoirLinks.HasText() ? LocalizationService.GetLocalizedMassnahmenvorschlagTyp(result.MassnahmenvorschlagKatalogTypTrottoirLinks) : null;
            result.MassnahmenvorschlagKatalogTypTrottoirRechtsBezeichnung = result.MassnahmenvorschlagKatalogTypTrottoirRechts.HasText() ? LocalizationService.GetLocalizedMassnahmenvorschlagTyp(result.MassnahmenvorschlagKatalogTypTrottoirRechts) : null;

            return(result);
        }
        public ZustandsabschnittdetailsTrottoirModel GetZustandsabschnittTrottoirModel(Guid id)
        {
            //TODO: Use refleaction traslator
            ZustandsabschnittBase zustandsabschnittBase = GetZustandsabschnittBase(id);

            var zustandsabschnittdetailsTrottoirModel = new ZustandsabschnittdetailsTrottoirModel
            {
                Id                     = zustandsabschnittBase.Id,
                Strassenname           = zustandsabschnittBase.Strassenname,
                BelastungskategorieTyp = zustandsabschnittBase.BelastungskategorieTyp,
                BezeichnungVon         = zustandsabschnittBase.BezeichnungVon,
                BezeichnungBis         = zustandsabschnittBase.BezeichnungBis,
                Trottoir               = zustandsabschnittBase.StrassenabschnittBase.Trottoir,
            };

            var massnahmenvorschlagTrottoirLinks = zustandsabschnittBase.MassnahmenvorschlagTrottoirLinks;

            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirDringlichkeit = zustandsabschnittBase.DringlichkeitTrottoirLinks;
            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirKosten        = GetKosten(massnahmenvorschlagTrottoirLinks, zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirLinks);
            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirMassnahmenvorschlagKatalogId = massnahmenvorschlagTrottoirLinks == null ? (Guid?)null : massnahmenvorschlagTrottoirLinks.Id;


            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirGesamtKosten  = zustandsabschnittBase.KostenTrottoirLinks;
            zustandsabschnittdetailsTrottoirModel.LinkeTrottoirZustandsindex = zustandsabschnittBase.ZustandsindexTrottoirLinks;

            var massnahmenvorschlagTrottoirRechts = zustandsabschnittBase.MassnahmenvorschlagTrottoirRechts;

            zustandsabschnittdetailsTrottoirModel.RechteTrottoirDringlichkeit = zustandsabschnittBase.DringlichkeitTrottoirRechts;
            zustandsabschnittdetailsTrottoirModel.RechteTrottoirKosten        = GetKosten(massnahmenvorschlagTrottoirRechts, zustandsabschnittBase.KostenMassnahmenvorschlagTrottoirRechts);
            zustandsabschnittdetailsTrottoirModel.RechteTrottoirMassnahmenvorschlagKatalogId = massnahmenvorschlagTrottoirRechts == null ? (Guid?)null : massnahmenvorschlagTrottoirRechts.Id;

            zustandsabschnittdetailsTrottoirModel.RechteTrottoirGesamtKosten  = zustandsabschnittBase.KostenTrottoirRechts;
            zustandsabschnittdetailsTrottoirModel.RechteTrottoirZustandsindex = zustandsabschnittBase.ZustandsindexTrottoirRechts;

            return(zustandsabschnittdetailsTrottoirModel);
        }
Пример #11
0
 protected override void UpdateZustandsabschnittBase(ZustandsabschnittBase zustandsabschnittBase)
 {
     transactionScopeProvider.Update((Zustandsabschnitt)zustandsabschnittBase);
 }
Пример #12
0
        private IEnumerable <AusgefuellteErfassungsformulareFuerOberflaechenschaedenPo> GetPos(ZustandsabschnittBase za)
        {
            var pos = schadenMetadatenService
                      .GetSchadengruppeMetadaten(za.StrassenabschnittBase.Belag)
                      .SelectMany(sgm => sgm.Schadendetails.Select(sdm => CreatePo(za, sgm, sdm)))
                      .OrderBy(po => po.SchadengruppeReihung)
                      .ThenBy(po => po.SchadendetailReihung)
                      .ToList();

            var     group        = pos.GroupBy(po => po.SchadengruppeTyp, (key, g) => g.Max(po => po.Matrix) * (g.Any() ? g.First().Gewicht : 0));
            decimal?schadensumme = group.Sum();

            foreach (var po in pos)
            {
                po.Schadensumme  = schadensumme;
                po.Zustandsindex = schadensumme.HasValue ? Math.Min(schadensumme.Value * 0.1m, 5.0m) : (decimal?)null;
            }

            return(pos);
        }
Пример #13
0
 private void DeleteSchadenData(ZustandsabschnittBase zustandsabschnittBase)
 {
     zustandsabschnittBase.Schadengruppen.ForEach(transactionScopeProvider.Delete);
     zustandsabschnittBase.Schadendetails.ForEach(transactionScopeProvider.Delete);
     zustandsabschnittBase.DeleteSchadenFormData();
 }
Пример #14
0
 protected abstract void UpdateZustandsabschnittBase(ZustandsabschnittBase zustandsabschnittBase);
Пример #15
0
        private SchadengruppeModel CreateSchadengruppeModel(SchadengruppeMetadaten schadengruppeMetadaten, ZustandsabschnittBase zustandsabschnittBase, ZustandsErfassungsmodus zustandsErfassungsmodus)
        {
            var schadengruppe = zustandsabschnittBase.Schadengruppen.SingleOrDefault(s => s.SchadengruppeTyp == schadengruppeMetadaten.SchadengruppeTyp);

            var schadengruppeModel = new SchadengruppeModel
            {
                Id = schadengruppe == null ? Guid.Empty : schadengruppe.Id,
                SchadenausmassTyp      = schadengruppe == null ? SchadenausmassTyp.A0 : schadengruppe.SchadenausmassTyp,
                SchadenschwereTyp      = schadengruppe == null ? SchadenschwereTyp.S1 : schadengruppe.SchadenschwereTyp,
                Gewicht                = schadengruppeMetadaten.Gewicht,
                SchadengruppeTyp       = schadengruppeMetadaten.SchadengruppeTyp,
                ZustandsabschnittId    = zustandsabschnittBase.Id,
                SchadendetailModelList = new List <SchadendetailModel>()
            };

            if (zustandsErfassungsmodus == ZustandsErfassungsmodus.Detail)
            {
                foreach (var schadendetailMetadaten in schadengruppeMetadaten.Schadendetails)
                {
                    var schadendetail = zustandsabschnittBase.Schadendetails.SingleOrDefault(s => s.SchadendetailTyp == schadendetailMetadaten.SchadendetailTyp);

                    var schadendetailModel = new SchadendetailModel
                    {
                        Id = schadendetail == null ? Guid.Empty : schadendetail.Id,
                        SchadenausmassTyp   = schadendetail == null ? SchadenausmassTyp.A0 : schadendetail.SchadenausmassTyp,
                        SchadenschwereTyp   = schadendetail == null ? SchadenschwereTyp.S1 : schadendetail.SchadenschwereTyp,
                        ZustandsabschnittId = zustandsabschnittBase.Id,
                        SchadendetailTyp    = schadendetailMetadaten.SchadendetailTyp
                    };

                    schadengruppeModel.SchadendetailModelList.Add(schadendetailModel);
                }
            }

            return(schadengruppeModel);
        }
 private static void CleanUpTrottoirRechts(ZustandsabschnittBase z)
 {
     z.MassnahmenvorschlagTrottoirRechts = null;
     z.ZustandsindexTrottoirRechts       = ZustandsindexTyp.Unbekannt;
 }