From 0a9dece9556cbefc529db7d138e4a8d6ce36833a Mon Sep 17 00:00:00 2001 From: dahoud Date: Mon, 9 Mar 2026 19:58:00 +0000 Subject: [PATCH] feat(api): ajout totalCotisationsPayeesToutTemps dans MembreDashboardSyntheseResponse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Champ pour la carte Contribution Totale (cotisations tout temps) - Test unitaire mis à jour Made-with: Cursor --- .../MembreDashboardSyntheseResponse.java | 44 +++++++++++++++ .../MembreDashboardSyntheseResponseTest.java | 53 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponse.java create mode 100644 unionflow/unionflow-server-api/src/test/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponseTest.java diff --git a/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponse.java b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponse.java new file mode 100644 index 0000000..5b09d6a --- /dev/null +++ b/unionflow/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponse.java @@ -0,0 +1,44 @@ +package dev.lions.unionflow.server.api.dto.dashboard; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * DTO de synthèse dashboard membre (cotisations, épargne, événements, aides). + * + * @author UnionFlow Team + * @version 1.0 + */ +public record MembreDashboardSyntheseResponse( + String prenom, + String nom, + LocalDate dateInscription, + + // Cotisations + BigDecimal mesCotisationsPaiement, + /** Total des cotisations payées sur l'année en cours (pour affichage dashboard). */ + BigDecimal totalCotisationsPayeesAnnee, + /** Total des cotisations payées tout temps (pour la carte « Contribution Totale »). */ + BigDecimal totalCotisationsPayeesToutTemps, + /** Nombre de cotisations (payées ou total) pour la carte « Cotisations ». */ + Integer nombreCotisationsPayees, + String statutCotisations, + Integer tauxCotisationsPerso, + + // Epargne + BigDecimal monSoldeEpargne, + BigDecimal evolutionEpargneNombre, + String evolutionEpargne, + Integer objectifEpargne, + + // Evenements + Integer mesEvenementsInscrits, + Integer evenementsAVenir, + Integer tauxParticipationPerso, + + // Aides + Integer mesDemandesAide, + Integer aidesEnCours, + Integer tauxAidesApprouvees) implements Serializable { +} diff --git a/unionflow/unionflow-server-api/src/test/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponseTest.java b/unionflow/unionflow-server-api/src/test/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponseTest.java new file mode 100644 index 0000000..962115b --- /dev/null +++ b/unionflow/unionflow-server-api/src/test/java/dev/lions/unionflow/server/api/dto/dashboard/MembreDashboardSyntheseResponseTest.java @@ -0,0 +1,53 @@ +package dev.lions.unionflow.server.api.dto.dashboard; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.math.BigDecimal; +import java.time.LocalDate; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class MembreDashboardSyntheseResponseTest { + + @Test + @DisplayName("Record MembreDashboardSyntheseResponse : construction et accesseurs") + void record_constructionAndAccessors() { + MembreDashboardSyntheseResponse dto = new MembreDashboardSyntheseResponse( + "Jean", + "Dupont", + LocalDate.of(2023, 1, 15), + BigDecimal.valueOf(50000), + BigDecimal.valueOf(150000), + BigDecimal.valueOf(200000), + 5, + "À jour", + 100, + BigDecimal.valueOf(250000), + BigDecimal.valueOf(10000), + "+4%", + 500000, + 3, + 2, + 75, + 1, + 0, + 100 + ); + + assertThat(dto.prenom()).isEqualTo("Jean"); + assertThat(dto.nom()).isEqualTo("Dupont"); + assertThat(dto.dateInscription()).isEqualTo(LocalDate.of(2023, 1, 15)); + assertThat(dto.mesCotisationsPaiement()).isEqualByComparingTo(BigDecimal.valueOf(50000)); + assertThat(dto.totalCotisationsPayeesAnnee()).isEqualByComparingTo(BigDecimal.valueOf(150000)); + assertThat(dto.totalCotisationsPayeesToutTemps()).isEqualByComparingTo(BigDecimal.valueOf(200000)); + assertThat(dto.nombreCotisationsPayees()).isEqualTo(5); + assertThat(dto.statutCotisations()).isEqualTo("À jour"); + assertThat(dto.tauxCotisationsPerso()).isEqualTo(100); + assertThat(dto.monSoldeEpargne()).isEqualByComparingTo(BigDecimal.valueOf(250000)); + assertThat(dto.objectifEpargne()).isEqualTo(500000); + assertThat(dto.mesEvenementsInscrits()).isEqualTo(3); + assertThat(dto.tauxParticipationPerso()).isEqualTo(75); + assertThat(dto.mesDemandesAide()).isEqualTo(1); + assertThat(dto.tauxAidesApprouvees()).isEqualTo(100); + } +}