diff --git a/grails-app/services/au/org/ala/ecodata/ParatooService.groovy b/grails-app/services/au/org/ala/ecodata/ParatooService.groovy index d8b3077f2..c21beacd9 100644 --- a/grails-app/services/au/org/ala/ecodata/ParatooService.groovy +++ b/grails-app/services/au/org/ala/ecodata/ParatooService.groovy @@ -610,8 +610,17 @@ class ParatooService { siteProps.publicationStatus = PublicationStatus.PUBLISHED siteProps.projects = [project.projectId] String externalId = geoJson.properties?.externalId - if (externalId) { - siteProps.externalIds = [new ExternalId(idType: ExternalId.IdType.MONITOR_PLOT_GUID, externalId: externalId)] + if (config.usesPlotLayout) { + if (externalId) { + siteProps.externalIds = [new ExternalId(idType: ExternalId.IdType.MONITOR_PLOT_GUID, externalId: externalId)] + } + else { + log.error("No externalId found for plot layout for survey ${collection.orgMintedUUID}, project ${project.projectId}") + } + } + else { + // non-plot based data sets will have the dataSetId/orgMintedUUID as the external id + siteProps.externalIds = [new ExternalId(idType: ExternalId.IdType.MONITOR_PLOT_GUID, externalId: collection.orgMintedUUID)] } Site site // create new site for every non-plot submission diff --git a/src/test/groovy/au/org/ala/ecodata/ParatooServiceSpec.groovy b/src/test/groovy/au/org/ala/ecodata/ParatooServiceSpec.groovy index 23501b396..60e934979 100644 --- a/src/test/groovy/au/org/ala/ecodata/ParatooServiceSpec.groovy +++ b/src/test/groovy/au/org/ala/ecodata/ParatooServiceSpec.groovy @@ -189,15 +189,16 @@ class ParatooServiceSpec extends MongoSpec implements ServiceUnitTest> [resp: [collections: ["coarse-woody-debris-survey": [uuid: "1", createdAt: "2023-09-01T00:00:00.123Z", start_date_time: "2023-09-01T00:00:00.123Z", end_date_time: "2023-09-01T00:00:00.123Z"]]]] + 1 * webService.doPost(*_) >> [resp: [collections: ["coarse-woody-debris-survey": [uuid: "1", createdAt: "2023-09-01T00:00:00.123Z", start_date_time: "2023-09-01T00:00:00.123Z", end_date_time: "2023-09-01T00:00:00.123Z"], "coarse-woody-debris-survey-observation": [[point: [lat: 1, lng: 2, name: [data: [attributes: [symbol: "ab"]]]]]]]]] 1 * tokenService.getAuthToken(true) >> Mock(AccessToken) 1 * projectService.updateDataSet(projectId, expectedDataSetAsync) >> [status: 'ok'] 1 * projectService.updateDataSet(projectId, expectedDataSetSync) >> [status: 'ok'] @@ -206,6 +207,7 @@ class ParatooServiceSpec extends MongoSpec implements ServiceUnitTest> [activityId: '123'] + 1 * siteService.create(_) >> { site = it[0]; [siteId: 's1'] } 1 * activityService.delete("123", true) >> [status: 'ok'] 1 * recordService.getAllByActivity('123') >> [] 1 * settingService.getSetting('paratoo.surveyData.mapping') >> { @@ -214,6 +216,7 @@ class ParatooServiceSpec extends MongoSpec implements ServiceUnitTest