From 60ad0eb117dbad772a6d41ea908c97c5f1daef47 Mon Sep 17 00:00:00 2001 From: Maxime Perrault Date: Wed, 25 Sep 2024 18:24:25 +0200 Subject: [PATCH] fix: add control plans to envaction saving usecase --- .../database/model/MissionModel.kt | 5 --- .../repositories/JpaEnvActionRepository.kt | 37 ++++++++++++++++--- .../actions/fixtures/EnvActionFixture.kt | 4 +- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt index 00b0791adf..bcfb8549d5 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/MissionModel.kt @@ -405,11 +405,6 @@ class MissionModel( resource = controlUnitResourceModel, mission = missionModel, ) - - MissionControlResourceModel( - resource = controlUnitResourceModel, - mission = missionModel, - ) } missionModel.controlResources?.addAll(missionControlUnitResourceModels) } diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt index 773ef5aa50..e075a2ae92 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaEnvActionRepository.kt @@ -5,7 +5,13 @@ import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.EnvActionEntit import fr.gouv.cacem.monitorenv.domain.exceptions.BackendUsageErrorCode import fr.gouv.cacem.monitorenv.domain.exceptions.BackendUsageException import fr.gouv.cacem.monitorenv.domain.repositories.IEnvActionRepository +import fr.gouv.cacem.monitorenv.infrastructure.database.model.ControlPlanSubThemeModel +import fr.gouv.cacem.monitorenv.infrastructure.database.model.ControlPlanTagModel +import fr.gouv.cacem.monitorenv.infrastructure.database.model.ControlPlanThemeModel import fr.gouv.cacem.monitorenv.infrastructure.database.model.EnvActionModel +import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.interfaces.IDBControlPlanSubThemeRepository +import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.interfaces.IDBControlPlanTagRepository +import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.interfaces.IDBControlPlanThemeRepository import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.interfaces.IDBEnvActionRepository import fr.gouv.cacem.monitorenv.infrastructure.database.repositories.interfaces.IDBMissionRepository import org.springframework.data.repository.findByIdOrNull @@ -16,6 +22,9 @@ import java.util.UUID class JpaEnvActionRepository( private val idbEnvActionRepository: IDBEnvActionRepository, private val idbMissionRepository: IDBMissionRepository, + private val idbControlPlanThemeRepository: IDBControlPlanThemeRepository, + private val idbControlPlanSubThemeRepository: IDBControlPlanSubThemeRepository, + private val idbControlPlanTagRepository: IDBControlPlanTagRepository, private val objectMapper: ObjectMapper, ) : IEnvActionRepository { override fun findById(id: UUID): EnvActionEntity? { @@ -23,15 +32,33 @@ class JpaEnvActionRepository( } override fun save(envAction: EnvActionEntity): EnvActionEntity { - envAction.missionId?.let { - val mission = idbMissionRepository.getReferenceById(it) + envAction.missionId?.let { missionId -> + val mission = idbMissionRepository.getReferenceById(missionId) + val controlPlanThemesReferenceModelMap: MutableMap = mutableMapOf() + val controlPlanTagssReferenceModelMap: MutableMap = mutableMapOf() + val controlPlanSubThemesReferenceModelMap: MutableMap = mutableMapOf() + + + envAction.controlPlans?.forEach { controlPlan -> + controlPlan.tagIds?.forEach { tagId -> + controlPlanTagssReferenceModelMap[tagId] = idbControlPlanTagRepository.getReferenceById(tagId) + } + controlPlan.themeId?.let { themeId -> + controlPlanThemesReferenceModelMap[themeId] = + idbControlPlanThemeRepository.getReferenceById(themeId) + } + controlPlan.subThemeIds?.forEach { subthemeId -> + controlPlanSubThemesReferenceModelMap[subthemeId] = + idbControlPlanSubThemeRepository.getReferenceById(subthemeId) + } + } return idbEnvActionRepository.save( EnvActionModel.fromEnvActionEntity( envAction, mission = mission, - controlPlanThemesReferenceModelMap = mapOf(), - controlPlanTagsReferenceModelMap = mapOf(), - controlPlanSubThemesReferenceModelMap = mapOf(), + controlPlanThemesReferenceModelMap = controlPlanThemesReferenceModelMap, + controlPlanTagsReferenceModelMap = controlPlanTagssReferenceModelMap, + controlPlanSubThemesReferenceModelMap = controlPlanSubThemesReferenceModelMap, mapper = objectMapper, ), ).toActionEntity(objectMapper) diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt index a887b9abf0..e7eec5497c 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/actions/fixtures/EnvActionFixture.kt @@ -4,6 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import fr.gouv.cacem.monitorenv.domain.entities.mission.ActionCompletionEnum import fr.gouv.cacem.monitorenv.domain.entities.mission.MonitorFishActionTypeEnum import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.ActionTypeEnum +import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.EnvActionControlPlanEntity import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.EnvActionEntity import fr.gouv.cacem.monitorenv.domain.entities.mission.monitorfish.MonitorFishMissionActionEntity import fr.gouv.cacem.monitorenv.domain.mappers.EnvActionMapper @@ -21,6 +22,7 @@ class EnvActionFixture { endTime: ZonedDateTime? = null, observationsByUnit: String? = null, missionId: Int? = 1, + controlPlans: List? = null ): EnvActionEntity { return EnvActionMapper.getEnvActionEntityFromJSON( mapper, @@ -30,7 +32,7 @@ class EnvActionFixture { actionStartDateTimeUtc = startTime, completedBy = "John Doe", completion = ActionCompletionEnum.COMPLETED, - controlPlans = listOf(), + controlPlans = controlPlans, department = "Department X", facade = "Facade Y", geom = null,