public ZustandTrottoirViewModel( ZustandsabschnittGISDTO zustandsabschnittGisdto, StrassenabschnittGISDTO strassenabschnittGisdto, IDTOService dtoService, IWindowService windowService) { this.zustandsabschnittGisdto = zustandsabschnittGisdto; this.strassenabschnittGisdto = strassenabschnittGisdto; this.dtoService = dtoService; this.windowService = windowService; Load(zustandsabschnittGisdto); PropertyChanged += (sender, args) => { if ( args.PropertyName == ExpressionHelper.GetPropertyName(() => ZustandsindexTrottoirLinks) || args.PropertyName == ExpressionHelper.GetPropertyName(() => ZustandsindexTrottoirRechts) || args.PropertyName == ExpressionHelper.GetPropertyName(() => DringlichkeitTrottoirLinks) || args.PropertyName == ExpressionHelper.GetPropertyName(() => DringlichkeitTrottoirRechts) || args.PropertyName == ExpressionHelper.GetPropertyName(() => MassnahmenvorschlagTrottoirLinks) || args.PropertyName == ExpressionHelper.GetPropertyName(() => MassnahmenvorschlagTrottoirRechts) ) { OnChanged(); } }; }
private void Load(ZustandsabschnittGISDTO dto, bool isNew) { if (!isNew) { Zustandsindex = dto.Zustandsindex; } var massnahmenvorschlagKatalogDtos = dtoService .Get <MassnahmenvorschlagKatalogDTO>() .Where(mvk => mvk.KatalogTyp == MassnahmenvorschlagKatalogTyp.Fahrbahn && mvk.Belastungskategorie == strassenabschnittGisdto.Belastungskategorie); MassnahmenvorschlagList = new List <NameValueItemViewModel <Guid?> > { new NameValueItemViewModel <Guid?>(string.Empty, null) } .Concat(massnahmenvorschlagKatalogDtos .Select(mvk => new NameValueItemViewModel <Guid?>(MobileLocalization.GetLocalizedMassnahmenvorschlag(mvk.Typ), mvk.Id))) .ToList(); ZustandsErfassungsmodus = zustandsabschnittGisDto.Erfassungsmodus; Dringlichkeit = dto.MassnahmenvorschlagFahrbahnDTO == null ? DringlichkeitTyp.Unbekannt : dto.MassnahmenvorschlagFahrbahnDTO.Dringlichkeit; Massnahmenvorschlag = dto.MassnahmenvorschlagFahrbahnDTO == null ? null : dto.MassnahmenvorschlagFahrbahnDTO.Typ; IsGrobDetailZustandserfassungSupported = strassenabschnittGisdto.Belag != BelagsTyp.Chaussierung && strassenabschnittGisdto.Belag != BelagsTyp.Pflaesterung; HasZustandsIndexChanges = false; Notify(() => Zustandsindex); }
public ZustandsErfassungsmodusChooserViewModel( ZustandsabschnittGISDTO zustandsabschnittGisDto, StrassenabschnittGISDTO strassenabschnittGisdto, IDTOService dtoService, IWindowService windowService, ISchadenMetadatenService schadenMetadatenService, IMessageBoxService messageBoxService, bool isNew) { this.zustandsabschnittGisDto = zustandsabschnittGisDto; this.strassenabschnittGisdto = strassenabschnittGisdto; this.dtoService = dtoService; this.windowService = windowService; this.schadenMetadatenService = schadenMetadatenService; this.messageBoxService = messageBoxService; this.isNew = isNew; OpenZustandsFahrbahnWindowCommand = new DelegateCommand(OpenZustandsFahrbahnWindow); RegisterValidation(m => m.Zustandsindex, () => IsValidDecimalWithDecimalPlaces(Zustandsindex, 2), string.Format(MobileLocalization.InvalidDecimalPlacesValidationError, 2)); RegisterValidation(m => m.Zustandsindex, () => RangeValidator(Zustandsindex, 0, 5), RangeValidationMessage(0, 5)); RegisterValidation(m => m.Zustandsindex, IsZustandsindexValid, RangeValidationMessage(0, 5)); RegisterValidation(m => m.IsGrobInitializiert, () => ZustandsErfassungsmodus != ZustandsErfassungsmodus.Grob || IsGrobInitializiert, MobileLocalization.GrobFormIsNotinitialized); RegisterValidation(m => m.IsDetailInitializiert, () => ZustandsErfassungsmodus != ZustandsErfassungsmodus.Detail || IsDetailInitializiert, MobileLocalization.DetailFormIsNotinitialized); ReCreateZustabdFahrbahnWindowViewModel(); Load(zustandsabschnittGisDto, isNew); PropertyChanged += (sender, args) => { if (args.PropertyName == ExpressionHelper.GetPropertyName(() => Zustandsindex)) { HasNoChanges = false; } }; DelegateEvent(() => IsValid, () => HasError); DelegateEvent(() => Zustandsindex, () => ZustandsindexCalculated); PropertyChanged += (sender, args) => { if ( args.PropertyName == ExpressionHelper.GetPropertyName(() => Zustandsindex) || args.PropertyName == ExpressionHelper.GetPropertyName(() => IsGrobInitializiert) || args.PropertyName == ExpressionHelper.GetPropertyName(() => IsDetailInitializiert) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Massnahmenvorschlag) || args.PropertyName == ExpressionHelper.GetPropertyName(() => ZustandsErfassungsmodus) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Dringlichkeit) ) { OnChanged(); } }; }
private void Load(ZustandsabschnittGISDTO za, StrassenabschnittGISDTO sa) { Laenge = za.Laenge; Aufnahmedatum = za.Aufnahmedatum; Aufnahmeteam = za.Aufnahmeteam; Abschnittsnummer = za.Abschnittsnummer; Wetter = za.Wetter; Bemerkung = za.Bemerkung; FlaecheFahrbahn = za.FlaecheFahrbahn; FlaecheTrottoirLinks = za.FlaceheTrottoirLinks; FlaecheTrottoirRechts = za.FlaceheTrottoirRechts; HasTrottoir = sa.Trottoir != TrottoirTyp.NochNichtErfasst && sa.Trottoir != TrottoirTyp.KeinTrottoir; }
private void MapServiceOnZustandsabschnittCreated(object sender, CreateZustandsabschnittDataTransferEventArgs dataTransferEventArgs) { var zustandsabschnittGisdto = new ZustandsabschnittGISDTO { Id = dataTransferEventArgs.Id, StrassenabschnittGIS = dataTransferEventArgs.StrassenabschnittId, Erfassungsmodus = ZustandsErfassungsmodus.Manuel, Aufnahmedatum = DateTime.Now }; //should only be saved if Save or Apply is pressed //dtoService.CreateOrReplaceDTO(zustandsabschnittGisdto); var strassenabschnittGisdto = dtoService.Get <StrassenabschnittGISDTO>().Single(s => s.Id == zustandsabschnittGisdto.StrassenabschnittGIS); ZustandsabschnittViewModel = new ZustandsabschnittViewModel(zustandsabschnittGisdto, strassenabschnittGisdto, dtoService, windowService, schadenMetadatenService, formService, messageBoxService, geoJsonService, true); IsVisible = true; }
public ZustandsabschnittDetailsViewModel( ZustandsabschnittGISDTO zustandsabschnittGisdto, StrassenabschnittGISDTO strassenabschnittGisdto, IDTOService dtoService, IWindowService windowService) { this.zustandsabschnittGisdto = zustandsabschnittGisdto; this.strassenabschnittGisdto = strassenabschnittGisdto; this.dtoService = dtoService; this.windowService = windowService; RegisterValidation(vm => vm.Aufnahmeteam, () => LenghtValidator(Aufnahmeteam), LengthValidationMessage()); RegisterValidation(vm => vm.Bemerkung, () => LenghtValidator(Bemerkung, 8000), LengthValidationMessage(8000)); RegisterValidation(vm => vm.Aufnahmedatum, () => DateTimeValidator(Aufnahmedatum), DateTimeValidationMessage()); RegisterValidation(vm => vm.Aufnahmedatum, () => RequiredValidator(Aufnahmedatum), MobileLocalization.RequiredValidationError); RegisterValidation(vm => vm.Abschnittsnummer, () => RangeValidator(Abschnittsnummer), RangeValidationMessage()); RegisterValidation(vm => vm.Laenge, () => RequiredValidator(Laenge), MobileLocalization.GeometryShouldBeNotNull); RegisterValidation(vm => vm.Laenge, () => RangeValidator(Laenge, 1), RangeValidationMessage(1)); RegisterValidation(vm => vm.Laenge, ValidateZustandsabschnittStrassenabschnittLaenge, ZustandsabschnittStrassenabschnittLaengeValidationMessage()); Load(zustandsabschnittGisdto, strassenabschnittGisdto); DelegateEvent(() => IsValid, () => HasError); PropertyChanged += (sender, args) => { if ( args.PropertyName == ExpressionHelper.GetPropertyName(() => Aufnahmedatum) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Laenge) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Aufnahmeteam) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Bemerkung) || args.PropertyName == ExpressionHelper.GetPropertyName(() => Wetter) ) { OnChanged(); } }; }
private void Load(ZustandsabschnittGISDTO za) { var strassenabschnitt = dtoService.GetDTOByID <StrassenabschnittGISDTO>(za.StrassenabschnittGIS); var massnahmenvorschlagKatalogDtos = dtoService .Get <MassnahmenvorschlagKatalogDTO>() .Where(mvk => mvk.KatalogTyp == MassnahmenvorschlagKatalogTyp.Trottoir && mvk.Belastungskategorie == strassenabschnitt.Belastungskategorie); MassnahmenvorschlagList = new List <NameValueItemViewModel <Guid?> > { new NameValueItemViewModel <Guid?>(string.Empty, null) } .Concat(massnahmenvorschlagKatalogDtos .Select(mvk => new NameValueItemViewModel <Guid?>(MobileLocalization.GetLocalizedMassnahmenvorschlag(mvk.Typ), mvk.Id))) .ToList(); if (string.IsNullOrEmpty(za.BezeichnungVon) && string.IsNullOrEmpty(za.BezeichnungBis)) { WindowTitle = string.Format(MobileLocalization.ZustandTrottoirShortWindowTitle, strassenabschnittGisdto.Strassenname); } else { WindowTitle = string.Format(MobileLocalization.ZustandTrottoirtWindowTitle, strassenabschnittGisdto.Strassenname, za.BezeichnungVon, za.BezeichnungBis); } HasTrottoirBeideSeiten = strassenabschnittGisdto.Trottoir == TrottoirTyp.BeideSeiten; HasTrottoirLinks = strassenabschnittGisdto.Trottoir == TrottoirTyp.Links || strassenabschnittGisdto.Trottoir == TrottoirTyp.BeideSeiten; HasTrottoirRechts = strassenabschnittGisdto.Trottoir == TrottoirTyp.Rechts || strassenabschnittGisdto.Trottoir == TrottoirTyp.BeideSeiten; ZustandsindexTrottoirLinks = za.ZustandsindexTrottoirLinks; ZustandsindexTrottoirRechts = za.ZustandsindexTrottoirRechts; DringlichkeitTrottoirLinks = za.MassnahmenvorschlagLinks == null ? DringlichkeitTyp.Unbekannt : za.MassnahmenvorschlagLinks.Dringlichkeit; DringlichkeitTrottoirRechts = za.MassnahmenvorschlagRechts == null ? DringlichkeitTyp.Unbekannt : za.MassnahmenvorschlagRechts.Dringlichkeit; MassnahmenvorschlagTrottoirLinks = za.MassnahmenvorschlagLinks == null ? null : za.MassnahmenvorschlagLinks.Typ; MassnahmenvorschlagTrottoirRechts = za.MassnahmenvorschlagRechts == null ? null : za.MassnahmenvorschlagRechts.Typ; }
public void DeleteZustandsabschnitt(ZustandsabschnittGISDTO dto) { var schadengruppeDtos = Get <SchadengruppeDTO>().Where(sg => sg.ZustandsabschnittId == dto.Id).ToList(); var schadendetailDtos = Get <SchadendetailDTO>().Where(sg => sg.ZustandsabschnittId == dto.Id).ToList(); foreach (var schadengruppeDto in schadengruppeDtos) { DeleteDTO(schadengruppeDto); } foreach (var schadendetail in schadendetailDtos) { DeleteDTO(schadendetail); } var strab = this.GetDTOByID <StrassenabschnittGISDTO>(dto.StrassenabschnittGIS); strab.ZustandsabschnittenId.Remove(strab.ZustandsabschnittenId.SingleOrDefault(z => z.Equals(dto.Id))); //set the length of the zustandsabschnitt dto to 0 //to prevent certain validation errors dto.Laenge = 0; DeleteDTO(dto); }
public ZustandFahrbahnWindowViewModel( ZustandsabschnittGISDTO zustandsabschnittGisdto, StrassenabschnittGISDTO strassenabschnittGisdto, IDTOService dtoService, ISchadenMetadatenService schadenMetadatenService, IWindowService windowService, IMessageBoxService messageBoxService) { this.zustandsabschnittGisdto = zustandsabschnittGisdto; this.strassenabschnittGisdto = strassenabschnittGisdto; this.dtoService = dtoService; this.schadenMetadatenService = schadenMetadatenService; this.messageBoxService = messageBoxService; OkCommand = new DelegateCommand(Ok); CancelCommand = new DelegateCommand(Cancel); RegisterValidation(m => m.Zustandsindex, () => IsValidDecimalWithDecimalPlaces(Zustandsindex, 2), string.Format(MobileLocalization.InvalidDecimalPlacesValidationError, 2)); RegisterValidation(m => m.Zustandsindex, () => RangeValidator(Zustandsindex, 0, 5), RangeValidationMessage(0, 5)); GrobItemViewModels = new ObservableCollection <GrobItemViewModel>(); DetailGroupItemViewModels = new ObservableCollection <DetailGroupItemViewModel>(); Load(zustandsabschnittGisdto); PropertyChanged += (sender, args) => { if (args.PropertyName != ExpressionHelper.GetPropertyName(() => IsValid) && args.PropertyName != ExpressionHelper.GetPropertyName(() => ValidationErrorStrings) && args.PropertyName != ExpressionHelper.GetPropertyName(() => IsGrobInitializiert) && args.PropertyName != ExpressionHelper.GetPropertyName(() => IsDetailInitializiert) && args.PropertyName != ExpressionHelper.GetPropertyName(() => HasNoChanges) ) { HasNoChanges = false; } }; HasNoChanges = true; }
private void Load(ZustandsabschnittGISDTO za) { if (string.IsNullOrEmpty(za.BezeichnungVon) && string.IsNullOrEmpty(za.BezeichnungBis)) { WindowTitle = string.Format(MobileLocalization.ZustandFahrbahnShortWindowTitle, strassenabschnittGisdto.Strassenname); } else { WindowTitle = string.Format(MobileLocalization.ZustandFahrbahnWindowTitle, strassenabschnittGisdto.Strassenname, za.BezeichnungVon, za.BezeichnungBis); } belagsTyp = strassenabschnittGisdto.Belag; schadengruppeDtos = dtoService.Get <SchadengruppeDTO>().Where(sg => sg.ZustandsabschnittId == za.Id).ToList(); schadendetailDtos = dtoService.Get <SchadendetailDTO>().Where(sg => sg.ZustandsabschnittId == za.Id).ToList(); temporallySavedSchadendetailDtos.Clear(); temporallySavedSchadendetailDtos.AddRange(schadendetailDtos); temporallySavedSchadengruppeDtos.Clear(); temporallySavedSchadengruppeDtos.AddRange(schadengruppeDtos); ZustandsErfassungsmodus = zustandsabschnittGisdto.Erfassungsmodus; }
public ZustandsabschnittViewModel( ZustandsabschnittGISDTO zustandsabschnittGisDto, StrassenabschnittGISDTO strassenabschnittGisdto, IDTOService dtoService, IWindowService windowService, ISchadenMetadatenService schadenMetadatenService, IFormService formService, IMessageBoxService messageBoxService, IGeoJsonService geoJsonService, bool isNew = false) { this.zustandsabschnittGisDto = zustandsabschnittGisDto; this.strassenabschnittGisdto = strassenabschnittGisdto; this.dtoService = dtoService; this.formService = formService; this.messageBoxService = messageBoxService; this.geoJsonService = geoJsonService; ZustandsabschnittDetailsViewModel = new ZustandsabschnittDetailsViewModel(zustandsabschnittGisDto, strassenabschnittGisdto, dtoService, windowService); ZustandsErfassungsmodusChooserViewModel = new ZustandsErfassungsmodusChooserViewModel(zustandsabschnittGisDto, strassenabschnittGisdto, dtoService, windowService, schadenMetadatenService, messageBoxService, isNew); TabViewModels = new ObservableCollection <IZustandsabschnittTabViewModel> { ZustandsabschnittDetailsViewModel, ZustandsErfassungsmodusChooserViewModel }; if (strassenabschnittGisdto.Trottoir != TrottoirTyp.KeinTrottoir && strassenabschnittGisdto.Trottoir != TrottoirTyp.NochNichtErfasst) { ZustandTrottoirViewModel = new ZustandTrottoirViewModel(zustandsabschnittGisDto, strassenabschnittGisdto, dtoService, windowService); TabViewModels.Add(ZustandTrottoirViewModel); } SaveCommand = new DelegateCommand(Save); ApplyCommand = new DelegateCommand(Apply); CancelCommand = new DelegateCommand(Cancel); DeleteCommand = new DelegateCommand(Delete); OpenHelpWindowCommand = new DelegateCommand(() => { if (SelectedTabViewModel != null) { SelectedTabViewModel.OpenHelp(); } }); foreach (var tabViewModel in TabViewModels) { tabViewModel.PropertyChanged += (sender, args) => { if (args.PropertyName == ExpressionHelper.GetPropertyName(() => IsValid)) { IsChildsValid = TabViewModels.All(tvm => tvm.IsValid); } }; tabViewModel.Changed += (sender, args) => { HasChanges = true; }; } IsNew = isNew; RegisterValidation(vm => vm.BezeichnungVon, () => LenghtValidator(BezeichnungVon), LengthValidationMessage()); RegisterValidation(vm => vm.BezeichnungBis, () => LenghtValidator(BezeichnungBis), LengthValidationMessage()); Load(); PropertyChanged += (sender, args) => { if ( args.PropertyName == ExpressionHelper.GetPropertyName(() => BezeichnungVon) || args.PropertyName == ExpressionHelper.GetPropertyName(() => BezeichnungBis) ) { HasChanges = true; } }; }
public CheckOutGISStreams CheckOutData(IList <Guid> ids, bool exportBackground) { CheckOutGISStreams checkoutGISStreams = new CheckOutGISStreams(); DTOContainer dtosToExport = new DTOContainer(); Mandant mandant = null; IGeometry bbox = null; foreach (Guid id in ids) { InspektionsRouteGIS inspektionsroute = inspektionsRouteGISService.GetInspektionsRouteById(id); mandant = inspektionsroute.Mandant; if (bbox != null) { bbox = bbox.Union(inspektionsroute.Shape.Envelope).Envelope; } else { bbox = inspektionsroute.Shape.Envelope; } IList <InspektionsRtStrAbschnitte> inspektionsroutenAbschnitte = inspektionsRtStrAbschnitteService.GetCurrentEntities().Where(ira => ira.InspektionsRouteGIS.Id == inspektionsroute.Id).ToList(); inspektionsroutenAbschnitte.OrderBy(ira => ira.Reihenfolge); //Strassenabschnitte foreach (InspektionsRtStrAbschnitte inspektionsroutenAbschnitt in inspektionsroutenAbschnitte) { StrassenabschnittGISDTO strassenabschnittGISDTO = strassenabschnittGISDTOService.GetDTOByID(inspektionsroutenAbschnitt.StrassenabschnittGIS.Id); dtosToExport.DataTransferObjects.Add(strassenabschnittGISDTO); //Zustandsabschnitte foreach (ZustandsabschnittGIS zustandsabschnitt in inspektionsroutenAbschnitt.StrassenabschnittGIS.Zustandsabschnitten) { ZustandsabschnittGISDTO zustandsabschnittGISDTO = zustandsabschnittGISDTOService.GetDTOByID(zustandsabschnitt.Id); dtosToExport.DataTransferObjects.Add(zustandsabschnittGISDTO); foreach (Schadendetail schaden in zustandsabschnitt.Schadendetails) { SchadendetailDTO schadendto = schadendetailDTOService.GetDTOByID(schaden.Id); schadendto.ZustandsabschnittId = zustandsabschnitt.Id; dtosToExport.DataTransferObjects.Add(schadendto); } foreach (Schadengruppe schadengruppe in zustandsabschnitt.Schadengruppen) { SchadengruppeDTO schadengruppedto = schadengruppeDTOService.GetDTOByID(schadengruppe.Id); schadengruppedto.ZustandsabschnittId = zustandsabschnitt.Id; dtosToExport.DataTransferObjects.Add(schadengruppedto); } } } } IGeometry backgroundBbox = null; //Achsensegmente foreach (AchsenSegment achsensegment in achsenSegmentService.GetCurrentBySpatialFilter(bbox).Where(a => a.Mandant == mandant)) { dtosToExport.DataTransferObjects.Add(achsenSegmentDTOService.GetDTOByID(achsensegment.Id)); if (backgroundBbox != null) { backgroundBbox = backgroundBbox.Envelope.Union(achsensegment.Shape.Envelope); } else { backgroundBbox = achsensegment.Shape.Envelope; } } List <Belastungskategorie> belastungskategorien = belastungskategorieService.AlleBelastungskategorie; foreach (Belastungskategorie bk in belastungskategorien) { dtosToExport.DataTransferObjects.Add(belastungskategorieDTOService.GetDTOByID(bk.Id)); } List <MassnahmenvorschlagKatalog> mvklist = massnahmenvorschlagKatalogService.GetCurrentEntities().Where(mvk => mvk.Mandant.Id == mandant.Id && mvk.ErfassungsPeriod.IsClosed == false).ToList(); foreach (MassnahmenvorschlagKatalog mvk in mvklist) { dtosToExport.DataTransferObjects.Add(massnahmenvorschlagKatalogDTOService.GetDTOByID(mvk.Id)); } IFormatter formatter = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter(); MemoryStream serializedModelsStream = new MemoryStream(); formatter.Serialize(serializedModelsStream, dtosToExport); serializedModelsStream.Seek(0, 0); checkoutGISStreams.Bezeichnung = "export"; LayerCollection exportLayer = serverConfigurationProvider.ExportLayer; int count = exportLayer.Count; string filepath = serverConfigurationProvider.WMSCacheFolderPath; for (int i = 0; i < count; i++) { ITileSourceFactory fact = null; var layer = exportLayer[i]; switch (layer.ServiceType) { case ServiceType.WMS: fact = new WmsTileSourceFactory(layer); break; case ServiceType.WMTS: fact = new WmtsTileSourceFactory(layer); break; default: break; } TileLoader loader = new TileLoader(fact.GetTileSource()); Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); checkoutGISStreams.Tiles.Add(loader.GetTiles(layer, bbox, filepath, serverConfigurationProvider.UseWMSCaching, fact.Format, serverConfigurationProvider.ExportBackgroundMapBuffer, serverConfigurationProvider.ExportTileLimit, download: exportBackground)); stopwatch.Stop(); Loggers.PeformanceLogger.DebugFormat("Layer {0} downloaded in {1}", layer.Name, stopwatch.Elapsed); } checkoutGISStreams.ModelsToExport = serializedModelsStream; checkoutGISStreams.LegendStreams.Add(FileNameConstants.AchsenSegmentLayerLegendFilename, legendService.GetLegendStream("AchsenSegmentLayer")); checkoutGISStreams.LegendStreams.Add(FileNameConstants.StrassenabschnittLayerLegendFilename, legendService.GetLegendStream("StrassenabschnittLayer")); checkoutGISStreams.LegendStreams.Add(FileNameConstants.ZustandsabschnittLayerLegendFilename, legendService.GetLegendStream("ZustandsabschnittLayer")); checkoutGISStreams.LegendStreams.Add(FileNameConstants.ZustandsabschnittLayerTrottoirLegendFilename, legendService.GetLegendStream("ZustandsabschnittLayer_Trottoir")); return(checkoutGISStreams); }