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); }
public ImportResult CheckInData(ImportResult importResult) { try { DTOContainer dtoContainer = importResult.dtocontainer; var zustandsAbschnitte = dtoContainer.DataTransferObjects.Where(dto => dto.GetType() == typeof(ZustandsabschnittGISDTO)).Select(sd => sd as ZustandsabschnittGISDTO); var schadendetailList = dtoContainer.DataTransferObjects.Where(dto => dto.GetType() == typeof(SchadendetailDTO)).Select(sd => sd as SchadendetailDTO); var schadengruppeList = dtoContainer.DataTransferObjects.Where(dto => dto.GetType() == typeof(SchadengruppeDTO)).Select(sd => sd as SchadengruppeDTO); var deletedZustandsabschnittList = zustandsAbschnitte.Where(z => z.IsDeleted && (!z.IsAdded)).Select(z => z.Id); IList <ZustandsabschnittGISDTO> zustandsabschnitteToValidate = new List <ZustandsabschnittGISDTO>(); zustandsabschnitteToValidate = zustandsabschnitteToValidate.Concat(zustandsAbschnitte.Where(z => !z.IsDeleted && (z.IsEdited || z.IsAdded))).ToList(); foreach (var za in zustandsabschnitteToValidate) { var result = zustandsabschnittGISDTOService.Validate(za, deletedZustandsabschnittList.ToList(), zustandsabschnitteToValidate); foreach (string error in result) { importResult.Errors.Add(error); } } if (importResult.Errors.Count == 0) { foreach (Guid id in deletedZustandsabschnittList) { try { zustandsabschnittGISDTOService.DeleteEntity(id); } catch { } } foreach (var za in zustandsabschnitteToValidate) { if (za.Shape.SRID == 0) { za.Shape.SRID = GisConstants.SRID; } zustandsabschnittGISDTOService.CreateOrUpdateEntityFromDTO(za); FahrBahnZustandDTO zustand = new FahrBahnZustandDTO() { Erfassungsmodus = za.Erfassungsmodus, Schadendetails = za.Erfassungsmodus == ZustandsErfassungsmodus.Detail ? schadendetailList.Where(sd => sd.ZustandsabschnittId == za.Id && !sd.IsDeleted).ToList() : new List <SchadendetailDTO>(), Schadengruppen = za.Erfassungsmodus == ZustandsErfassungsmodus.Grob ? schadengruppeList.Where(sg => sg.ZustandsabschnittId == za.Id && !sg.IsDeleted).ToList() : new List <SchadengruppeDTO>(), ZustandsAbschnitt = za.Id, Zustandsindex = za.Zustandsindex }; fahrbahnZustandDTOService.UpdateFahrbahnZustand(zustand); } } if (importResult.Errors.Count == 0) { foreach (var kvp in importResult.descriptor.CheckOutsGISInspektionsroutenList) { var cogModel = checkOutsGISService.GetById(kvp.Key); cogModel.CheckInDatum = timeService.Now; checkOutsGISService.UpdateEntity(cogModel); inspektionsRouteGISService.UnLockInspektionsRouten(importResult.InspektionsRouten); foreach (var ir in importResult.InspektionsRouten) { inspektionsRouteStatusverlaufService.HistorizeRouteImportiert(inspektionsRouteGISService.GetInspektionsRouteById(ir)); } } } } catch (Exception e) { Loggers.ApplicationLogger.Error(e.Message, e); importResult.Errors.Add("Error When Importing"); } var inspektionsrouten = inspektionsRouteGISService.GetCurrentEntities().Where(ir => importResult.InspektionsRouten.Contains(ir.Id)); ereignisLogService.LogEreignis(EreignisTyp.InspektionsRoutenImport, new Dictionary <string, object>() { { "Inspektionsrouten", string.Join(", ", inspektionsrouten.Select(ir => ir.Bezeichnung)) }, { "Fehleranzahl", importResult.Errors.Count } }); return(importResult); }