Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tech] Ajout de la validation métier des cas d'usage côté serveur #2014

Open
wants to merge 12 commits into
base: main
Choose a base branch
from

Conversation

maximeperraultdev
Copy link
Collaborator

@maximeperraultdev maximeperraultdev commented Jan 15, 2025

Règle de gestion métier

Ces règles ne prennent pas en compte les données dites « obligatoires » qui sont validé par le typage de l’objet

Mission en cours

  • Date de début supérieure à la date de fin

  • Minimum 1 unité de contrôle

  • Type de la mission

  • Trigrammes optionnels « ouvert par » et « complété par » mais minimum 3 caractères

  • Contrôle

    • Date de début supérieure ou égale à la date de début de la mission
    • Date de début inférieure à la date de fin de la mission
    • Trigramme « ouvert par » obligatoire de minimum 3 caractères
    • Infraction
      • le nombre minimum de cible est 1
      • Une infraction doit avoir une NATINF si le type d'infraction n'est pas "En attente"
      • Le nombre de cibles ne doit pas excédé le nombre total de contrôles
  • Surveillance

    • Date de début inférieure à la date de fin de la mission
    • Date de fin supérieure à la date de début de la mission
    • Date de fin inférieur ou égale à la date de fin de la mission
    • Trigrammes « ouvert par » obligatoire de minimum 3 caractères
    • Zone obligatoire
    • Infraction
      • le nombre minimum de cible est 1
      • Une infraction doit avoir une NATINF si le type d'infraction n'est pas "En attente"
      • Le nombre de cibles ne doit pas excédé le nombre total de contrôles
      • Trigrammes « ouvert par » obligatoire de minimum 3 caractères

Règle supplémentaire pour une Mission terminée

  • Le type de véhicule est obligatoire si le type de cible est un véhicule
  • Minimum un plan de contrôle avec au moins un sous-thème
  • Point de contrôle obligatoire
  • Les champs "Type d'infraction", "Réponse administrative", "Appréhension/saisie", et "Mise en demeure" ne peuvent pas être "en attente"

Signalement

  • Trigramme optionnel « ouvert par » mais minimum 3 caractères
  • Minimum 1 source du signalement
  • Temps de validité doit être supérieur à zéro

Zone de vigilance uniquement pour publication (non-brouillon)

  • La zone est obligatoire
  • Trigramme optionnel « créé par » mais minimum 3 caractères
  • Un thème est obligatoire
  • Un commentaire est obligatoire
  • Dates :
    • La date de début est obligatoire
    • La date de fin est obligatoire
    • La fréquence est obligatoire
    • La date de fin de l'occurence est obligatoire quand on a choisi une récurrence
    • Le nombre d'occurence est obligatoire quand on a choisi une récurrence

Règle supplémentaire pour une zone de vigilance « en tout temps »

  • Pas de contrainte de dates

Related Pull Requests & Issues


  • Tests E2E (Cypress)

@maximeperraultdev maximeperraultdev force-pushed the maxime/tech/use_case_validation branch 3 times, most recently from dade474 to aff2b85 Compare January 20, 2025 15:11
@claire2212 claire2212 self-requested a review January 21, 2025 09:24

private fun validateMission(mission: MissionEntity) {
if (mission.startDateTimeUtc.isAfter(mission.endDateTimeUtc)) {
throw BackendUsageException(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

il faut faire comme ça pour que ca remonte bien cpoté front :
throw BackendUsageException(code = BackendUsageErrorCode.UNVALID_PROPERTY, message = "La date de fin doit être postérieure à la date de début ")

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est la même chose ce que j'ai fait ici, c'est le meme ordre dans le constructeur, est-ce que tu veux que je change ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je me suis trompée c'est data et pas message qu'il faut mettre, comme dit sur Mattermost

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comme on s'est dit, est-ce que le code ne suffit pas pour interpréter l'erreur ?

@@ -18,9 +18,9 @@ data class CreateOrUpdateReportingDataInput(
val targetDetails: List<TargetDetailsEntity>? = listOf(),
val geom: Geometry? = null,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

geom ne peut être null

@maximeperraultdev maximeperraultdev force-pushed the maxime/tech/use_case_validation branch 2 times, most recently from 70fec30 to e18691b Compare January 22, 2025 09:11
- Mission : add some infraction validation case
- reporting : review input, add description validation
- Vigilance area : review input, add geom and comment validation
- Mission : add some infraction validation case
- reporting : review input, add description validation
- Vigilance area : review input, add geom and comment validation
@maximeperraultdev maximeperraultdev force-pushed the maxime/tech/use_case_validation branch from e18691b to ef1630f Compare January 23, 2025 15:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Tech] Ajout de la validation métier des cas d'usage côté serveur
3 participants