public async void Remove_FailWithNoProject() { AddApplicationRouting(); var request = new RemoveSurveyedSurfaceRequest(); var response = await request.ExecuteAsync(new RemoveSurveyedSurfaceArgument { ProjectID = Guid.NewGuid(), DesignID = Guid.NewGuid() }); response.Should().NotBeNull(); response.RequestResult.Should().Be(DesignProfilerRequestResult.NoSelectedSiteModel); }
public async void Remove() { AddApplicationRouting(); var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel(); // Add te design to be removed var designID = Guid.NewGuid(); var existenceMap = new TRex.SubGridTrees.SubGridTreeSubGridExistenceBitMask(); existenceMap[0, 0] = true; var request = new AddSurveyedSurfaceRequest(); var addResponse = await request.ExecuteAsync(new AddSurveyedSurfaceArgument { ProjectID = siteModel.ID, DesignDescriptor = new DesignDescriptor(designID, "folder", "filename"), AsAtDate = DateTime.UtcNow, Extents = new TRex.Geometry.BoundingWorldExtent3D(0, 0, 1, 1), ExistenceMap = existenceMap }); addResponse.Should().NotBeNull(); addResponse.RequestResult.Should().Be(DesignProfilerRequestResult.OK); // Re-request the sitemodel to reflect the change siteModel = DIContext.Obtain <ISiteModels>().GetSiteModel(siteModel.ID, false); siteModel.SurveyedSurfaces.Count.Should().Be(1); var removeRequest = new RemoveSurveyedSurfaceRequest(); var removeResponse = await removeRequest.ExecuteAsync(new RemoveSurveyedSurfaceArgument { ProjectID = siteModel.ID, DesignID = designID }); removeResponse.Should().NotBeNull(); removeResponse.DesignUid.Should().Be(designID); removeResponse.RequestResult.Should().Be(DesignProfilerRequestResult.OK); // Re-request the sitemodel to reflect the change siteModel = DIContext.Obtain <ISiteModels>().GetSiteModel(siteModel.ID, false); siteModel.SurveyedSurfaces.Count.Should().Be(0); var readExistenceMap = DIContext.Obtain <IExistenceMapServer>().GetExistenceMap(new NonSpatialAffinityKey(siteModel.ID, BaseExistenceMapRequest.CacheKeyString(TRex.ExistenceMaps.Interfaces.Consts.EXISTENCE_SURVEYED_SURFACE_DESCRIPTOR, designID))); readExistenceMap.Should().BeNull(); }
public async void Remove_FailWithNoDesign() { AddApplicationRouting(); var siteModel = DITAGFileAndSubGridRequestsWithIgniteFixture.NewEmptyModel(); var request = new RemoveSurveyedSurfaceRequest(); var response = await request.ExecuteAsync(new RemoveSurveyedSurfaceArgument { ProjectID = siteModel.ID, DesignID = Guid.NewGuid() }); response.Should().NotBeNull(); response.RequestResult.Should().Be(DesignProfilerRequestResult.DesignDoesNotExist); }
/// <summary> /// Delete a design or surveyed surface or alignment file from TRex /// </summary> protected async Task RemoveDesign(DesignRequest request, string executorName) { bool removedOk = false; if (request.FileType == ImportedFileType.DesignSurface) { // Remove the designSurface var tRexRequest = new RemoveTTMDesignRequest(); var removeResponse = await tRexRequest.ExecuteAsync(new RemoveTTMDesignArgument { ProjectID = request.ProjectUid, DesignID = request.DesignUid }); removedOk = removeResponse.RequestResult == DesignProfilerRequestResult.OK; } if (request.FileType == ImportedFileType.SurveyedSurface) { // Remove the new surveyedSurface var tRexRequest = new RemoveSurveyedSurfaceRequest(); var removeResponse = await tRexRequest.ExecuteAsync(new RemoveSurveyedSurfaceArgument { ProjectID = request.ProjectUid, DesignID = request.DesignUid }); removedOk = removeResponse.RequestResult == DesignProfilerRequestResult.OK; } if (request.FileType == ImportedFileType.Alignment) { // Remove the alignment var tRexRequest = new RemoveAlignmentRequest(); var removeResponse = await tRexRequest.ExecuteAsync(new RemoveAlignmentArgument { ProjectID = request.ProjectUid, AlignmentID = request.DesignUid }); removedOk = removeResponse.RequestResult == DesignProfilerRequestResult.OK; } if (!removedOk) { log.LogError($"#Out# {executorName}. Deletion failed, of design:{request.FileName}, Project:{request.ProjectUid}, DesignUid:{request.DesignUid}"); throw CreateServiceException <TExecutor> (HttpStatusCode.InternalServerError, ContractExecutionStatesEnum.InternalProcessingError, RequestErrorStatus.DesignImportUnableToDeleteDesign); } //Remove local copies of files var localPath = FilePathHelper.GetTempFolderForProject(request.ProjectUid); var localPathAndFileName = Path.Combine(new[] { localPath, request.FileName }); if (File.Exists(localPathAndFileName)) { try { File.Delete(localPathAndFileName); if (request.FileType != ImportedFileType.Alignment) { //Delete index files var indexFileName = SubGridIndexFileName(localPathAndFileName); if (File.Exists(indexFileName)) { File.Delete(indexFileName); } indexFileName = SpatialIndexFileName(localPathAndFileName); if (File.Exists(indexFileName)) { File.Delete(indexFileName); } indexFileName = BoundaryFileName(localPathAndFileName); if (File.Exists(indexFileName)) { File.Delete(indexFileName); } } } catch (Exception e) { log.LogError(e, $"Failed to delete files related to design/surveyed surface {request.DesignUid} in project {request.ProjectUid}"); } } if (request.FileType != ImportedFileType.Alignment) { //Remove the index files from s3 (project service removes the actual file from s3 as it put it there originally) var s3FileTransfer = new S3FileTransfer(TransferProxyType.DesignImport); s3FileTransfer.RemoveFileFromBucket(request.ProjectUid, SubGridIndexFileName(request.FileName)); s3FileTransfer.RemoveFileFromBucket(request.ProjectUid, SpatialIndexFileName(request.FileName)); s3FileTransfer.RemoveFileFromBucket(request.ProjectUid, BoundaryFileName(request.FileName)); } }