diff --git a/backend/src/main/resources/db/testdata/V666.4__insert_dummy_control_units.sql b/backend/src/main/resources/db/testdata/V666.4__insert_dummy_control_units.sql
index 4d9f909385..c974f085c6 100644
--- a/backend/src/main/resources/db/testdata/V666.4__insert_dummy_control_units.sql
+++ b/backend/src/main/resources/db/testdata/V666.4__insert_dummy_control_units.sql
@@ -53,19 +53,21 @@ VALUES
SELECT setval('control_unit_contacts_id_seq', 3, true);
INSERT INTO public.control_unit_resources
- ( id, control_unit_id, name, base_id, type)
+ ( id, control_unit_id, name, base_id, type, is_archived)
VALUES
- ( 1, 10000, 'Semi-rigide 1', 1, 'BARGE'),
- ( 2, 10000, 'Semi-rigide 2', 1, 'BARGE'),
- ( 3, 10002, 'Semi-rigide 1', 2, 'BARGE'),
- ( 4, 10002, 'Semi-rigide 2', 2, 'BARGE'),
- ( 5, 10002, 'Voiture', 3, 'CAR'),
- ( 6, 10003, 'AR VECHEN', 2, 'FRIGATE'),
- ( 7, 10003, 'Semi-rigide', 3, 'BARGE'),
- ( 8, 10121, 'PAM Jeanne Barret', 3, 'FRIGATE'),
- ( 9, 10080, 'PAM Themis', 3, 'FRIGATE'),
- ( 10, 10018, 'ALTAIR', 3, 'FRIGATE'),
- ( 11, 10018, 'PHEROUSA', 3, 'FRIGATE'),
- ( 12, 10018, 'ARIOLA', 3, 'FRIGATE');
+ ( 1, 10000, 'Semi-rigide 1', 1, 'BARGE', false),
+ ( 2, 10000, 'Semi-rigide 2', 1, 'BARGE', false),
+ ( 3, 10002, 'Semi-rigide 1', 2, 'BARGE', false),
+ ( 4, 10002, 'Semi-rigide 2', 2, 'BARGE', false),
+ ( 5, 10002, 'Voiture', 3, 'CAR', false),
+ ( 6, 10003, 'AR VECHEN', 2, 'FRIGATE', false),
+ ( 7, 10003, 'Semi-rigide', 3, 'BARGE', false),
+ ( 8, 10121, 'PAM Jeanne Barret', 3, 'FRIGATE', false),
+ ( 9, 10080, 'PAM Themis', 3, 'FRIGATE', false),
+ ( 10, 10018, 'ALTAIR', 3, 'FRIGATE', false),
+ ( 11, 10018, 'PHEROUSA', 3, 'FRIGATE', false),
+ ( 12, 10018, 'ARIOLA', 3, 'FRIGATE', false),
+ ( 13, 10000, 'Voiture', 1, 'CAR', true),
+ ( 14, 10000, 'Drône', 2, 'DRONE', false);
-SELECT setval('control_unit_resources_id_seq', 12, true);
+SELECT setval('control_unit_resources_id_seq', 14, true);
diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaBaseRepositoryITests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaBaseRepositoryITests.kt
index 65e48ae5fc..da1f0bc4fa 100644
--- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaBaseRepositoryITests.kt
+++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaBaseRepositoryITests.kt
@@ -49,6 +49,16 @@ class JpaBaseRepositoryITests : AbstractDBTests() {
photo = null,
type = ControlUnitResourceType.BARGE,
),
+ ControlUnitResourceEntity(
+ id = 13,
+ controlUnitId = 10000,
+ isArchived = true,
+ name = "Voiture",
+ note = null,
+ photo = null,
+ stationId = 1,
+ type = ControlUnitResourceType.CAR,
+ ),
),
),
)
@@ -181,6 +191,16 @@ class JpaBaseRepositoryITests : AbstractDBTests() {
photo = null,
type = ControlUnitResourceType.FRIGATE,
),
+ ControlUnitResourceEntity(
+ id = 14,
+ controlUnitId = 10000,
+ isArchived = false,
+ name = "Drône",
+ note = null,
+ photo = null,
+ stationId = 2,
+ type = ControlUnitResourceType.DRONE
+ ),
),
),
)
diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitRepositoryITests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitRepositoryITests.kt
index 53fe803e4f..845d2956e5 100644
--- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitRepositoryITests.kt
+++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitRepositoryITests.kt
@@ -72,12 +72,33 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
),
controlUnitResources = listOf(
FullControlUnitResourceDTO(
+ controlUnit = ControlUnitEntity(
+ id = 10000,
+ administrationId = 1005,
+ areaNote = null,
+ departmentAreaInseeCode = null,
+ isArchived = false,
+ name = "Cultures marines – DDTM 40",
+ termsNote = null,
+ ),
+ controlUnitResource = ControlUnitResourceEntity(
+ id = 1,
+ stationId = 1,
+ controlUnitId = 10000,
+ isArchived = false,
+ name = "Semi-rigide 1",
+ note = null,
+ photo = null,
+ type = ControlUnitResourceType.BARGE,
+ ),
station = StationEntity(
id = 1,
latitude = 43.295765,
longitude = 5.375486,
name = "Marseille",
),
+ ),
+ FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
@@ -88,23 +109,50 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
- id = 1,
+ id = 2,
stationId = 1,
controlUnitId = 10000,
isArchived = false,
- name = "Semi-rigide 1",
+ name = "Semi-rigide 2",
note = null,
photo = null,
type = ControlUnitResourceType.BARGE,
),
+ station = StationEntity(
+ id = 1,
+ latitude = 43.295765,
+ longitude = 5.375486,
+ name = "Marseille",
+ ),
),
FullControlUnitResourceDTO(
+ controlUnit = ControlUnitEntity(
+ id = 10000,
+ administrationId = 1005,
+ areaNote = null,
+ departmentAreaInseeCode = null,
+ isArchived = false,
+ name = "Cultures marines – DDTM 40",
+ termsNote = null,
+ ),
+ controlUnitResource = ControlUnitResourceEntity(
+ id = 13,
+ controlUnitId = 10000,
+ isArchived = true,
+ name = "Voiture",
+ note = null,
+ photo = null,
+ stationId = 1,
+ type = ControlUnitResourceType.CAR,
+ ),
station = StationEntity(
id = 1,
latitude = 43.295765,
longitude = 5.375486,
name = "Marseille",
),
+ ),
+ FullControlUnitResourceDTO(
controlUnit = ControlUnitEntity(
id = 10000,
administrationId = 1005,
@@ -115,14 +163,20 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
termsNote = null,
),
controlUnitResource = ControlUnitResourceEntity(
- id = 2,
- stationId = 1,
+ id = 14,
controlUnitId = 10000,
isArchived = false,
- name = "Semi-rigide 2",
+ name = "Drône",
note = null,
photo = null,
- type = ControlUnitResourceType.BARGE,
+ stationId = 2,
+ type = ControlUnitResourceType.DRONE,
+ ),
+ station = StationEntity(
+ id = 2,
+ latitude = 48.648105,
+ longitude = -2.013144,
+ name = "Saint-Malo",
),
),
),
@@ -270,6 +324,55 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() {
type = ControlUnitResourceType.BARGE,
),
),
+ FullControlUnitResourceDTO(
+ controlUnit = ControlUnitEntity(
+ id = 10000,
+ administrationId = 1005,
+ areaNote = null,
+ departmentAreaInseeCode = null,
+ isArchived = false,
+ name = "Cultures marines – DDTM 40",
+ termsNote = null,
+ ),
+ controlUnitResource = ControlUnitResourceEntity(
+ id = 13,
+ controlUnitId = 10000,
+ isArchived = true,
+ name = "Voiture",
+ note = null,
+ photo = null,
+ stationId = 1,
+ type = ControlUnitResourceType.CAR,
+ ),
+ station = StationEntity(id = 1, latitude = 43.295765, longitude = 5.375486, name = "Marseille"),
+ ),
+ FullControlUnitResourceDTO(
+ controlUnit = ControlUnitEntity(
+ id = 10000,
+ administrationId = 1005,
+ areaNote = null,
+ departmentAreaInseeCode = null,
+ isArchived = false,
+ name = "Cultures marines – DDTM 40",
+ termsNote = null,
+ ),
+ controlUnitResource = ControlUnitResourceEntity(
+ id = 14,
+ controlUnitId = 10000,
+ isArchived = false,
+ name = "Drône",
+ note = null,
+ photo = null,
+ stationId = 2,
+ type = ControlUnitResourceType.DRONE,
+ ),
+ station = StationEntity(
+ id = 2,
+ latitude = 48.648105,
+ longitude = -2.013144,
+ name = "Saint-Malo",
+ ),
+ ),
),
),
)
diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitResourceRepositoryITests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitResourceRepositoryITests.kt
index 65b79b4dbe..1666fdff95 100644
--- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitResourceRepositoryITests.kt
+++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitResourceRepositoryITests.kt
@@ -36,7 +36,7 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {
val foundFullControlUnitResources =
jpaControlUnitResourceRepository.findAll().sortedBy { requireNotNull(it.controlUnitResource.id) }
- assertThat(foundFullControlUnitResources).hasSize(12)
+ assertThat(foundFullControlUnitResources).hasSize(14)
assertThat(foundFullControlUnitResources[0]).isEqualTo(
FullControlUnitResourceDTO(
@@ -153,13 +153,13 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {
val createdControlUnitResource = jpaControlUnitResourceRepository.save(newControlUnitResource)
- assertThat(createdControlUnitResource).isEqualTo(newControlUnitResource.copy(id = 13))
+ assertThat(createdControlUnitResource).isEqualTo(newControlUnitResource.copy(id = 15))
// ---------------------------------------------------------------------
// Update
val nextControlUnitResource = ControlUnitResourceEntity(
- id = 13,
+ id = 15,
stationId = 2,
controlUnitId = 10001,
isArchived = false,
@@ -176,11 +176,11 @@ class JpaControlUnitResourceRepositoryITests : AbstractDBTests() {
// ---------------------------------------------------------------------
// Delete
- jpaControlUnitResourceRepository.deleteById(13)
+ jpaControlUnitResourceRepository.deleteById(15)
val controlUnitResourceIds =
jpaControlUnitResourceRepository.findAll().map { requireNotNull(it.controlUnitResource.id) }.sorted()
- assertThat(controlUnitResourceIds).doesNotContain(13)
+ assertThat(controlUnitResourceIds).doesNotContain(15)
}
}
diff --git a/frontend/src/domain/entities/controlUnit.ts b/frontend/src/domain/entities/controlUnit.ts
index 495f477209..d72cfce8de 100644
--- a/frontend/src/domain/entities/controlUnit.ts
+++ b/frontend/src/domain/entities/controlUnit.ts
@@ -44,7 +44,7 @@ export namespace ControlUnit {
/** Base64 Data URI. */
photo: string | undefined
station: Station.StationData
- stationId: number | undefined
+ stationId: number
type: ControlUnitResourceType
}
diff --git a/frontend/src/features/Station/components/StationOverlay/StationCard/Item.tsx b/frontend/src/features/Station/components/StationOverlay/StationCard/Item.tsx
index 54af38e458..33d7a1e4c4 100644
--- a/frontend/src/features/Station/components/StationOverlay/StationCard/Item.tsx
+++ b/frontend/src/features/Station/components/StationOverlay/StationCard/Item.tsx
@@ -9,8 +9,9 @@ import type { ControlUnit } from '../../../../../domain/entities/controlUnit'
type ItemProps = {
controlUnit: ControlUnit.ControlUnit
+ stationId: number
}
-export function Item({ controlUnit }: ItemProps) {
+export function Item({ controlUnit, stationId }: ItemProps) {
const dispatch = useAppDispatch()
const edit = () => {
@@ -27,7 +28,7 @@ export function Item({ controlUnit }: ItemProps) {
{controlUnit.name}
{controlUnit.administration.name}
- {displayControlUnitResourcesFromControlUnit(controlUnit)}
+ {displayControlUnitResourcesFromControlUnit(controlUnit, stationId)}
)
}
diff --git a/frontend/src/features/Station/components/StationOverlay/StationCard/index.tsx b/frontend/src/features/Station/components/StationOverlay/StationCard/index.tsx
index 9a5c830bb5..fdcdf49668 100644
--- a/frontend/src/features/Station/components/StationOverlay/StationCard/index.tsx
+++ b/frontend/src/features/Station/components/StationOverlay/StationCard/index.tsx
@@ -72,7 +72,7 @@ export function StationCard({ feature, selected = false }: { feature: Feature; s
>
{controlUnitsRef.current.map(controlUnit => (
-
+
))}
diff --git a/frontend/src/features/Station/components/StationOverlay/StationCard/utils.tsx b/frontend/src/features/Station/components/StationOverlay/StationCard/utils.tsx
index c3a61a70a9..c63d6cf7e3 100644
--- a/frontend/src/features/Station/components/StationOverlay/StationCard/utils.tsx
+++ b/frontend/src/features/Station/components/StationOverlay/StationCard/utils.tsx
@@ -2,12 +2,11 @@ import { Tag, pluralize } from '@mtes-mct/monitor-ui'
import { isEmpty } from 'lodash/fp'
import { ControlUnit } from '../../../../../domain/entities/controlUnit'
-import { isNotArchived } from '../../../../../utils/isNotArchived'
import { getIconFromControlUnitResourceType } from '../../../../ControlUnit/components/ControlUnitDialog/ControlUnitResourceList/utils'
-export function displayControlUnitResourcesFromControlUnit(controlUnit: ControlUnit.ControlUnit) {
+export function displayControlUnitResourcesFromControlUnit(controlUnit: ControlUnit.ControlUnit, stationId: number) {
const controlUnitResourceTypeCounts = controlUnit.controlUnitResources
- .filter(isNotArchived)
+ .filter(controlUnitResource => controlUnitResource.stationId === stationId && !controlUnitResource.isArchived)
.reduce((previousControlUnitResourceTypeCounts, controlUnitResource) => {
const controlUnitResourceTypeCount = previousControlUnitResourceTypeCounts[controlUnitResource.type]
if (!controlUnitResourceTypeCount) {