Skip to content

Commit

Permalink
feat: rename infractionType to legalSanction and add administrative s…
Browse files Browse the repository at this point in the history
…anction to infraction form
  • Loading branch information
maximeperrault authored and maximeperraultdev committed Jul 23, 2024
1 parent f686009 commit 2899f4b
Show file tree
Hide file tree
Showing 23 changed files with 428 additions and 137 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction

enum class InfractionTypeEnum {
WAITING,
WITH_REPORT,
WITHOUT_REPORT,
enum class AdministrativeSanctionEnum {
SANCTION,
REGULARIZATION,
PENDING,
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@ import fr.gouv.cacem.monitorenv.domain.entities.VesselTypeEnum

data class InfractionEntity(
val id: String,
val administrativeSanction: AdministrativeSanctionEnum?,
val natinf: List<String>? = listOf(),
val observations: String? = null,
val registrationNumber: String? = null,
val companyName: String? = null,
val relevantCourt: String? = null,
val imo: String? = null,
val infractionType: InfractionTypeEnum,
val legalSanction: LegalSanctionEnum,
val formalNotice: FormalNoticeEnum,
val mmsi: String? = null,
val toProcess: Boolean,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction

enum class InfractionTypeEnum {
enum class LegalSanctionEnum {
WAITING,
WITH_REPORT,
WITHOUT_REPORT,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
package fr.gouv.cacem.monitorenv.infrastructure.api.adapters.bff.inputs.missions

import fr.gouv.cacem.monitorenv.domain.entities.VesselTypeEnum
import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction.AdministrativeSanctionEnum
import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction.FormalNoticeEnum
import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction.InfractionEntity
import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction.InfractionTypeEnum
import fr.gouv.cacem.monitorenv.domain.entities.mission.envAction.envActionControl.infraction.LegalSanctionEnum

data class MissionEnvActionControlInfractionDataInput(
val id: String,
val administrativeSanction: AdministrativeSanctionEnum,
val companyName: String? = null,
val controlledPersonIdentity: String? = null,
val formalNotice: FormalNoticeEnum,
val imo: String? = null,
val infractionType: InfractionTypeEnum,
val legalSanction: LegalSanctionEnum,
val mmsi: String? = null,
val natinf: List<String>? = listOf(),
val observations: String? = null,
Expand All @@ -25,11 +27,12 @@ data class MissionEnvActionControlInfractionDataInput(
fun toInfractionEntity() =
InfractionEntity(
id = id,
administrativeSanction = administrativeSanction,
companyName = companyName,
controlledPersonIdentity = controlledPersonIdentity,
formalNotice = formalNotice,
imo = imo,
infractionType = infractionType,
legalSanction = legalSanction,
mmsi = mmsi,
natinf = natinf,
observations = observations,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,44 @@
CREATE TABLE user_authorizations (
hashed_email varchar(200) PRIMARY KEY,
is_super_user boolean NOT NULL
);
BEGIN;

-- Étape 1: Vérifier que "items" contient un tableau et extraire les objets du tableau
WITH decomposed AS (SELECT id,
jsonb_array_elements(value -> 'infractions') AS obj,
value - 'infractions' AS data_without_items
FROM env_actions
WHERE jsonb_typeof(value -> 'infractions') = 'array'),

-- Étape 2: Modifier chaque objet JSON en remplaçant la clé
updated AS (SELECT id,
obj ||
jsonb_build_object('legalSanction', obj -> 'infractionType') - 'infractionType' AS updated_obj,
data_without_items
FROM decomposed),

-- Étape 3: Recomposer les objets modifiés en un nouveau tableau
recomposed AS (SELECT id,
jsonb_agg(updated_obj) AS new_items,
data_without_items
FROM updated
GROUP BY id, data_without_items),

-- Étape 4: Inclure les lignes avec des tableaux vides
original_with_empty AS (SELECT id,
value
FROM env_actions
WHERE jsonb_typeof(value -> 'infractions') = 'array'
AND jsonb_array_length(value -> 'infractions') = 0),

-- Étape 5: Mettre à jour la table avec les nouveaux objets
final_update AS (SELECT recomposed.id,
data_without_items || jsonb_build_object('infractions', new_items) AS new_data
FROM recomposed
UNION ALL
SELECT original_with_empty.id,
original_with_empty.value
FROM original_with_empty)
UPDATE env_actions
SET value = final_update.new_data
FROM final_update
WHERE env_actions.id = final_update.id;

COMMIT;
Loading

0 comments on commit 2899f4b

Please sign in to comment.