diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/domain/entities/controlUnit/ControlUnitContactEntity.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/domain/entities/controlUnit/ControlUnitContactEntity.kt index 90f7aa467..afc99db8d 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/domain/entities/controlUnit/ControlUnitContactEntity.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/domain/entities/controlUnit/ControlUnitContactEntity.kt @@ -6,4 +6,6 @@ data class ControlUnitContactEntity( val email: String? = null, val name: String, val phone: String? = null, + val isEmailDistributionContact: Boolean? = false, + val isSmsDistributionContact: Boolean? = false, ) diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/inputs/CreateOrUpdateControlUnitContactDataInput.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/inputs/CreateOrUpdateControlUnitContactDataInput.kt index a950aefec..92844c36b 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/inputs/CreateOrUpdateControlUnitContactDataInput.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/inputs/CreateOrUpdateControlUnitContactDataInput.kt @@ -8,6 +8,8 @@ data class CreateOrUpdateControlUnitContactDataInput( val email: String? = null, val name: String, val phone: String? = null, + val isEmailDistributionContact: Boolean? = false, + val isSmsDistributionContact: Boolean? = false, ) { fun toControlUnitContact(): ControlUnitContactEntity { return ControlUnitContactEntity( @@ -16,6 +18,7 @@ data class CreateOrUpdateControlUnitContactDataInput( email = this.email, name = this.name, phone = this.phone, - ) + isEmailDistributionContact = this.isEmailDistributionContact, + isSmsDistributionContact = this.isSmsDistributionContact) } } diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/outputs/FullControlUnitContactDataOutput.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/outputs/FullControlUnitContactDataOutput.kt index 14777e0c5..c5fa22d0c 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/outputs/FullControlUnitContactDataOutput.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/adapters/publicapi/outputs/FullControlUnitContactDataOutput.kt @@ -9,6 +9,8 @@ data class FullControlUnitContactDataOutput( val email: String? = null, val name: String, val phone: String? = null, + val isEmailDistributionContact: Boolean? = false, + val isSmsDistributionContact: Boolean? = false, ) { companion object { fun fromFullControlUnitContact( @@ -23,6 +25,8 @@ data class FullControlUnitContactDataOutput( email = fullControlUnitContact.controlUnitContact.email, name = fullControlUnitContact.controlUnitContact.name, phone = fullControlUnitContact.controlUnitContact.phone, + isEmailDistributionContact = fullControlUnitContact.controlUnitContact.isEmailDistributionContact, + isSmsDistributionContact = fullControlUnitContact.controlUnitContact.isSmsDistributionContact, ) } } diff --git a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/ControlUnitContactModel.kt b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/ControlUnitContactModel.kt index 31d0682dc..1c04a2dd0 100644 --- a/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/ControlUnitContactModel.kt +++ b/backend/src/main/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/model/ControlUnitContactModel.kt @@ -37,7 +37,14 @@ data class ControlUnitContactModel( @Column(name = "updated_at_utc", nullable = false) @UpdateTimestamp val updatedAtUtc: Instant? = null, -) { + + @Column(name = "is_email_distribution_contact", nullable = false) + val isEmailDistributionContact: Boolean? = false, + + @Column(name = "is_sms_distribution_contact", nullable = false) + val isSmsDistributionContact: Boolean? = false, + + ) { companion object { fun fromControlUnitContact( controlUnitContact: ControlUnitContactEntity, @@ -49,6 +56,8 @@ data class ControlUnitContactModel( email = controlUnitContact.email, name = controlUnitContact.name, phone = controlUnitContact.phone, + isEmailDistributionContact = controlUnitContact.isEmailDistributionContact, + isSmsDistributionContact = controlUnitContact.isSmsDistributionContact, ) } } @@ -60,6 +69,8 @@ data class ControlUnitContactModel( email, name, phone, + isEmailDistributionContact, + isSmsDistributionContact, ) } @@ -72,6 +83,6 @@ data class ControlUnitContactModel( @Override override fun toString(): String { - return this::class.simpleName + "(id = $id , controlUnitId = ${controlUnit.id} , email = $email , name = $name , phone = $phone)" + return this::class.simpleName + "(id = $id , controlUnitId = ${controlUnit.id} , email = $email , name = $name , phone = $phone, isEmailDistributionContact = $isEmailDistributionContact, isSmsDistributionContact = $isSmsDistributionContact)" } } diff --git a/backend/src/main/resources/db/testdata/V666.07__insert_dummy_control_units.sql b/backend/src/main/resources/db/testdata/V666.07__insert_dummy_control_units.sql index c59f8e5f3..102a2398b 100644 --- a/backend/src/main/resources/db/testdata/V666.07__insert_dummy_control_units.sql +++ b/backend/src/main/resources/db/testdata/V666.07__insert_dummy_control_units.sql @@ -45,11 +45,11 @@ INSERT INTO public.control_units( SELECT setval('control_units_id_seq', (SELECT max(id) FROM control_units), true); INSERT INTO public.control_unit_contacts - ( id, control_unit_id, name) + ( id, control_unit_id, name, email, phone, is_email_distribution_contact,is_sms_distribution_contact) VALUES - ( 1, 10000, 'Contact 1'), - ( 2, 10000, 'Contact 2'), - ( 3, 10003, 'Contact 3'); + ( 1, 10000, 'Contact 1', 'email_1', '06 01 xx xx xx', true, false), + ( 2, 10000, 'Contact 2', null, '06 02 xx xx xx', false, true), + ( 3, 10003, 'Contact 3', 'email_3', null, false, true); SELECT setval('control_unit_contacts_id_seq', 3, true); diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactByIdUTests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactByIdUTests.kt index 2ee0d2156..2f107d9cc 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactByIdUTests.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactByIdUTests.kt @@ -35,6 +35,8 @@ class GetControlUnitContactByIdUTests { email = null, name = "Control Unit Contact Name", phone = null, + isEmailDistributionContact = false, + isSmsDistributionContact = true, ), ) diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactsUTests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactsUTests.kt index a380a3862..28f1db997 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactsUTests.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/domain/use_cases/controlUnit/GetControlUnitContactsUTests.kt @@ -36,6 +36,8 @@ class GetControlUnitContactsUTests { email = "contact1@example.com", name = "Contact 1", phone = "123-456-7890", + isEmailDistributionContact = true, + isSmsDistributionContact = false ), ), FullControlUnitContactDTO( @@ -54,6 +56,8 @@ class GetControlUnitContactsUTests { email = "contact2@example.com", name = "Contact 2", phone = "098-765-4321", + isEmailDistributionContact = false, + isSmsDistributionContact = true ), ), ) diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/endpoints/publicapi/ControlUnitContactsITests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/endpoints/publicapi/ControlUnitContactsITests.kt index 083e89e0c..4fd9251e1 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/endpoints/publicapi/ControlUnitContactsITests.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/api/endpoints/publicapi/ControlUnitContactsITests.kt @@ -57,6 +57,8 @@ class ControlUnitContactsITests { email = null, name = "Contact Name", phone = null, + isEmailDistributionContact = true, + isSmsDistributionContact = false, ) val newControlUnitContactData = CreateOrUpdateControlUnitContactDataInput( @@ -98,6 +100,8 @@ class ControlUnitContactsITests { email = null, name = "Contact Name", phone = null, + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ) @@ -130,6 +134,8 @@ class ControlUnitContactsITests { email = null, name = "Contact Name", phone = null, + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ), @@ -149,6 +155,8 @@ class ControlUnitContactsITests { email = null, name = "Contact Name 2", phone = null, + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ), ) @@ -170,6 +178,8 @@ class ControlUnitContactsITests { email = null, name = "Updated Contact Name", phone = null, + isEmailDistributionContact = true, + isSmsDistributionContact = false, ) val nextControlUnitContactData = CreateOrUpdateControlUnitContactDataInput( diff --git a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitContactRepositoryITests.kt b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitContactRepositoryITests.kt index 9a6cfe12d..9a3992da5 100644 --- a/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitContactRepositoryITests.kt +++ b/backend/src/test/kotlin/fr/gouv/cacem/monitorenv/infrastructure/database/repositories/JpaControlUnitContactRepositoryITests.kt @@ -35,7 +35,10 @@ class JpaControlUnitContactRepositoryITests : AbstractDBTests() { id = 1, controlUnitId = 10000, name = "Contact 1", - phone = null, + phone = "06 01 xx xx xx", + email = "email_1", + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ), ) @@ -56,6 +59,9 @@ class JpaControlUnitContactRepositoryITests : AbstractDBTests() { controlUnitId = 10003, name = "Contact 3", phone = null, + email = "email_3", + isEmailDistributionContact = false, + isSmsDistributionContact = true, ), ), ) @@ -81,7 +87,10 @@ class JpaControlUnitContactRepositoryITests : AbstractDBTests() { id = 1, controlUnitId = 10000, name = "Contact 1", - phone = null, + email = "email_1", + phone = "06 01 xx xx xx", + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ), ) @@ -97,6 +106,9 @@ class JpaControlUnitContactRepositoryITests : AbstractDBTests() { controlUnitId = 10000, name = "Contact Name", phone = "0123456789", + email = "Adresse email", + isEmailDistributionContact = false, + isSmsDistributionContact = true, ) val createdControlUnitContact = jpaControlUnitContactRepository.save(newControlUnitContact) @@ -111,6 +123,8 @@ class JpaControlUnitContactRepositoryITests : AbstractDBTests() { controlUnitId = 10001, name = "Updated Contact Name", phone = "9876543210", + isEmailDistributionContact = true, + isSmsDistributionContact = true, ) val updatedControlUnitContact = jpaControlUnitContactRepository.save(nextControlUnitContact) 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 610974d72..711295f0c 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 @@ -62,16 +62,20 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() { ControlUnitContactEntity( id = 1, controlUnitId = 10000, - email = null, name = "Contact 1", - phone = null, + phone = "06 01 xx xx xx", + email = "email_1", + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ControlUnitContactEntity( id = 2, controlUnitId = 10000, - email = null, name = "Contact 2", - phone = null, + email = null, + phone="06 02 xx xx xx", + isEmailDistributionContact = false, + isSmsDistributionContact = true, ), ), controlUnitResources = @@ -303,16 +307,20 @@ class JpaControlUnitRepositoryITests : AbstractDBTests() { ControlUnitContactEntity( id = 1, controlUnitId = 10000, - email = null, + email = "email_1", name = "Contact 1", - phone = null, + phone = "06 01 xx xx xx", + isEmailDistributionContact = true, + isSmsDistributionContact = false, ), ControlUnitContactEntity( id = 2, controlUnitId = 10000, email = null, name = "Contact 2", - phone = null, + phone="06 02 xx xx xx", + isEmailDistributionContact = false, + isSmsDistributionContact = true, ), ), controlUnitResources =